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就加密了之前的源代码,保证了安全性。

 

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

 参考:

【最简单】Electron 怎么将网页打包成桌面应用(web前端页面怎么生成exe可执行文件)_咖啡学编程的博客-CSDN博客

Electron加密打包文件_努力会有明天的博客-CSDN博客_electron-packager 加密

asar 如何解密加密?electron 的 asar 的具体用法

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
使用 Electron 可以将网页打包桌面应用程序,以下是详细步骤: 1. 安装 Node.js 和 npm 在使用 Electron 之前,需要先安装 Node.js 和 npm。可以在 [Node.js 官网](https://nodejs.org/) 下载安装程序并进行安装。 2. 初始化项目 可以使用 npm 初始化项目,创建一个 package.json 文件: ``` mkdir my-electron-app cd my-electron-app npm init -y ``` 3. 安装 Electron 使用 npm 安装 Electron: ``` npm install --save-dev electron ``` 4. 创建应用程序 在项目文件夹中创建一个 main.js 文件,用于创建应用程序窗口: ```javascript const { app, BrowserWindow } = require('electron') function createWindow () { // 创建浏览器窗口 const win = new BrowserWindow({ width: 800, height: 600, webPreferences: { nodeIntegration: true } }) // 加载网页 win.loadFile('index.html') } app.whenReady().then(() => { createWindow() app.on('activate', () => { if (BrowserWindow.getAllWindows().length === 0) { createWindow() } }) }) app.on('window-all-closed', () => { if (process.platform !== 'darwin') { app.quit() } }) ``` 5. 创建网页 在项目文件夹中创建一个 index.html 文件,用于显示在应用程序窗口中的网页。 6. 运行应用程序 在终端中运行以下命令启动应用程序: ``` npm start ``` 这将启动 Electron 并打开应用程序窗口,其中包含 index.html 文件中的内容。 7. 打包应用程序 可以使用 Electron Packager 或 Electron Forge 等工具将应用程序打包可执行文件。例如,使用 Electron Packager: ``` npm install electron-packager --save-dev ``` 在 package.json 文件中添加以下脚本: ```json "scripts": { "package-mac": "electron-packager . MyAppName --overwrite --platform=darwin --arch=x64 --icon=assets/icons/mac/icon.icns --prune=true --out=release-builds", "package-win": "electron-packager . MyAppName --overwrite --asar=true --platform=win32 --arch=ia32 --icon=assets/icons/win/icon.ico --prune=true --out=release-builds --version-string.CompanyName=CE --version-string.FileDescription=CE --version-string.ProductName=\"My App Name\"", "package-linux": "electron-packager . MyAppName --overwrite --platform=linux --arch=x64 --icon=assets/icons/png/icon.png --prune=true --out=release-builds" } ``` 然后运行以下命令,根据需要替换 MyAppName: - Mac: `npm run package-mac` - Windows: `npm run package-win` - Linux: `npm run package-linux` 此时,会在 release-builds 目录中生可执行文件。 以上是将网页打包应用程序的详细步骤。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值