Electron把网页打包成桌面应用并进行源码加密

前言

  最近想把自己用html+css+js做的网页界面打包成桌面应用,网上一搜,发现Electron是一个不错的选择,试了试,发现效果真的不错。这里记录一下打包过程以作记录,便于自己以后查看学习。

一、简介

  Electron是由Github开发,用HTML,CSS和JavaScript来构建跨平台桌面应用程序的一个开源库。 Electron通过将Chromium和Node.js合并到同一个运行时环境中,并将其打包为Mac,Windows和Linux系统下的应用来实现这一目的。

二、打包过程

1.首先保证自己计算机全局安装了nodejs,并且利用nodejs自带的npm全局安装了electron和打包神器electron-packager。两个命令:(npm install electron -g),(npm install electron-packager -g)。注意:npm速度较慢,可以尝试用cnpm,下载安装速度快。

2.在自己的前端网页项目文件夹下,新建 package.json、main.js、index.html 三个文件(注:其中的 index.html 是你的网页首页,就是自己已经写好的网页界面)。

3.在 package.json 中添加如下内容:(name属性值可以自定义,Version属性值也可以自定义,main属性值是根据新建的main.js文件名来的)

{
  "name"    : "app-name",
  "version" : "0.1.0",
  "main"    : "main.js"
}

4.在main.js中插入如下代码:

const {app, BrowserWindow} = require(‘electron‘)
const path = require(‘path‘)
const url = require(‘url‘)

// Keep a global reference of the window object, if you don‘t, the window will
// be closed automatically when the JavaScript object is garbage collected.
let win

function createWindow () {
  // Create the browser window.
  win = new BrowserWindow({width: 800, height: 600})

  // and load the index.html of the app.
  win.loadURL(url.format({
    pathname: path.join(__dirname, ‘index.html‘),
    protocol: ‘file:‘,
    slashes: true
  }))

  // Open the DevTools.
  //win.webContents.openDevTools()   //注意:这行代码取消注释的话,就可以使打包生成的应用程序带有开发者模式,类似于chrome的调试模式,可以调试程序的出现的bug
 // Emitted when the window is closed. win.on(‘closed‘, () => { // Dereference the window object, usually you would store windows // in an array if your app supports multi windows, this is the time // when you should delete the corresponding element. win = null }) } // This method will be called when Electron has finished // initialization and is ready to create browser windows. // Some APIs can only be used after this event occurs. app.on(‘ready‘, createWindow) // Quit when all windows are closed. app.on(‘window-all-closed‘, () => { // On macOS it is common for applications and their menu bar // to stay active until the user quits explicitly with Cmd + Q if (process.platform !== ‘darwin‘) { app.quit() } }) app.on(‘activate‘, () => { // On macOS it‘s common to re-create a window in the app when the // dock icon is clicked and there are no other windows open. if (win === null) { createWindow() } }) // In this file you can include the rest of your app‘s specific main process // code. You can also put them in separate files and require them here.

注:上面这行代码win.webContents.openDevTools()很有用,如果这行代码取消注释,可以使生成的应用程序自带调试框,方便程序的调试。

4.在自己的前端网页项目文件夹下,输入 electron-packager . app --win --out presenterTool --arch=x64 --electron-version 3.0.10 --overwrite --ignore=node_modules 即可开始打包。

注:可根据自己需求更改命令如下:

electron-packager . 可执行文件的文件名 --win --out 打包成的文件夹名 --arch=x64位还是32位 --electron-version 版本号 --overwrite --ignore=node_modules

补充:这里的electron版本号可直接在命令行输入electron得到(因为electron全局安装的)。

5.打包结果

这个presenterTool文件夹下就有生成的app文件。

三、源码加密

在上面打包完成后的文件夹下,我们会发现,在每个包下的resources文件夹里的app文件夹里都有我们写的源程序。

这样我们写的代码就是完全暴露在用户电脑上的,这是非常不安全的,但是我们可以通过electron 自带的加密功能解决这个问题。

1.全局安装 asar

  npm install asar -g

  安装完asar以后,就可以使用asar命令将程序文件打包了。

2.在resources目录下使用asar指令进行加密

  asar pack ./app app.asar

如下所示:

3.结果

将原来的app文件夹删除就可以了,这样生成的app.asar就加密了之前的源代码,保证了安全性。

四、最终效果:(展示一部分)

参考:

https://blog.csdn.net/a727911438/article/details/70834467?utm_source=itdadao&utm_medium=referral

https://blog.csdn.net/u010683528/article/details/56279647

https://newsn.net/say/electron-asar.html

原文地址:https://www.cnblogs.com/FHC1994/p/10055698.html

时间: 2024-10-09 08:53:04

Electron把网页打包成桌面应用并进行源码加密的相关文章

展示触摸屏网页打包成桌面应用(nw.js)

一.编写触摸屏网页注意点 1.控制缩放行为.内容宽度为屏幕宽度,初始缩放比例为1:1,并禁止缩放(如若可放大缩小,影响操作体验) <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> 2.<a>标签点击存在暗色透明背景问题,使用css属性 -webkit-tap-highlight-colo

用node-webkit把web应用打包成桌面应用

node-webkit是一个Chromium和node.js上的结合体,通过它我们可以把建立在chrome浏览器和node.js上的web应用打包成桌面应用,而且还可以跨平台的哦.很显然比起传统的桌面应用,在某些特定领域用html5+css3+js开发的web应用更加简单和高效,而且还可以使用node.js的功能,所以node-webkit还是很有用处的. 下面我通过一个简单的demo来介绍怎么样把一个web应用打包成一个可执行文件(这里只介绍windows环境) 首先新建一个index.htm

创意无限!一组网页边栏过渡动画【附源码下载】

今天我们想与大家分享另一套过渡效果.这一次,我们将探讨如何实现侧边栏的过渡动画,就像我们已经在多级推出菜单中使用的.我们的想法是,以细微的过渡动画显示一些隐藏的侧边栏,其余的内容也是.通常侧边栏滑入,把其他内容推到一边.这个可过程中可以加入很多微妙而奇特的效果,而今天这篇文章能够给你一些启示. 温馨提示:为保证最佳的效果,请在 IE10+.Chrome.Firefox 和 Safari 等现代浏览器中浏览. 立即下载      在线演示 因为我们希望能够在一个页面上展现所有的效果,因此我们示例的

【转】可在广域网部署运行的QQ高仿版 -- GG叽叽V2.4,增加远程协助、桌面共享功能(源码)

QQ的远程协助.或者说桌面共享是一个非常实用的功能,所以,2.4版本的GG复制了它,而且,GG增强了桌面共享的功能,它可以允许指定要共享桌面的区域,这样,对方就只能看到指定区域的桌面,这对节省流量会非常有帮助. GG实现这些功能的过程并不是那么简单,因为内部业务逻辑的关联容易把人搞晕.从运行起来的程序来说,远程协助的场景很容易理解:一方是请求方,一方是协助方,边界非常清晰.但是在程序中,无论是哪一方,其对应的窗体都是ChatForm,所以,在编码时,你经常需要切换你的思维:一会要站在请求方的角度

前端打包成桌面应用、以及chrome扩展

前段时间在利用工作之余开发了tomato timer这个蕃茄钟,然后部署到github.io上,由于greatway太厉害,偶尔会有打不开的情况.上周末对比做了扩展和改进,使其成为chrome的插件,或者成为桌面app. chrome插件的使用与开发 一.如何安装与使用: 1.下载tomato timer项目,github地址 https://github.com/cqhaibin/tomato-timer.git 2.切换到V2.0.0.0的tag,然后如下图所配置: 3.然后单击 “小飞”图

HBuilder初探——强大的提示符及纯网页打包成APP

之前做手机页面,只是时效短.更新度高的零星几个,供APP内嵌调用.比如抽奖嘛.活动宣传啦. 现在的公司,不知是不是不知者无畏,整一个app全部用html5来实现,包括头部导航条.客户端只需封装一下,打个包就OK.实现的方式是网页放在服务器,像从浏览器访问一下,客户端只是充当一个浏览器的角色.这种方式app store应该是不允许的吧.但所做的只是供医院内部人员使用的一个项目,能实现在线学习课程.报名.考试.签到.查房.论文申报等功能就OK. 得知HBuilder这个东东,还是从客户口里听来的,他

将现有vue项目基于electron打包成桌面应用程序

一.前言 项目本来打算采用B/S架构去做的,只是在"人群中多看了你一眼",便直接撸了. 二.使用electron集成桌面应用 本身项目是使用vue-cli开发的,在使用electron之前,需要将本身的项目打包好后打开index.html能显示网页.因为刚接触便直接拿官方demo进行打包了. 1.克隆官方demo:git clone https://github.com/electron/electron-quick-start 2.cd electron-quick-start-&g

打造vim成类source insight——contiki源码阅读工具

一.Ubuntu14.04下配置 1.配置vimrc文件 输入:version课查看vimrc文件及位置: system vimrc file: "$VIM/vimrc" user vimrc file: "$HOME/.vimrc“(建议放置位置) 2nd user vimrc file: "~/.vim/vimrc" user exrc file: "$HOME/.exrc" system gvimrc file: "$V

Python打包成exe工具

Python是一个应用很广泛的编程语言,当然少不了GUI 在Windows下可以有很多GUI库选择去写图形程序,但写好之后想在其他电脑上运行,必须要有python解释器环境. 解决这个问题就要用打包工具了,把python源码打包成exe之后就可以拷贝到其他电脑上运行了. 目前了解的有下面几种,常用的pyinstaller和cx_freeze: 1.py2exe 官方主页:   http://www.py2exe.org/ 2.pyinstaller 官方主页:   http://www.pyin