Electron打包桌面应用程序

Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。
github项目地址:https://github.com/wukingui/electron-app
博客地址:https://www.xiaofly.cn/post-details?id=627b25fd6ab15234c68a1677

一、初始化项目

1、npm init指令初始化项目配置:

entry point选项的值应为main.js
authordescription也必须填写,但是可以填写任意值

package.json

{"name": "electron-app","version": "1.0.0","description": "a electron app demo","main": "main.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1"},"author": "xxx@gmail.com","license": "ISC"
}

2、安装依赖:

npm install --save-dev electron electron-builder

3、修改package.json,在scripts里添加start指令:

"start": "electron ."

4、执行npm start启动项目,会发现如下图报错:

这是因为现在还没有mian.js文件,线程找不到主进程。

二、创建视图文件和入口文件

1、新建index.html视图文件。

<!--index.html-->
<!DOCTYPE html>
<html><head><meta charset="UTF-8"><meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'"><meta http-equiv="X-Content-Security-Policy" content="default-src 'self'; script-src 'self'"><title>Electron App</title></head><body><h1>Electron App</h1><p>这是我的第一个桌面应用程序</p></body>
</html>

2、再创建preload.js预加载脚本文件:

// preload.js
window.addEventListener('DOMContentLoaded', () => {const replaceText = (selector, text) => {const element = document.getElementById(selector)if (element) element.innerText = text}for (const type of ['chrome', 'node', 'electron']) {replaceText(`${type}-version`, process.versions[type])}
})

3、接下来创建main.js入口文件,内容如下:

// main.js
const { app, BrowserWindow } = require('electron')
const path = require('path')const createWindow = () => {const mainWindow = new BrowserWindow({width: 800,height: 600,webPreferences: {preload: path.join(__dirname, 'preload.js')}})// 加载 index.htmlmainWindow.loadFile('index.html')
}// 部分 API 在 ready 事件触发后才能使用。
app.whenReady().then(() => {createWindow()app.on('activate', () => {if (BrowserWindow.getAllWindows().length === 0) createWindow()})
})// 当所有窗口都被关闭的时候退出程序
app.on('window-all-closed', () => {if (process.platform !== 'darwin') app.quit()
})

现在我们再来执行npm start启动项目,就会弹出一个如下图的窗口:


至此,说明我们的代码没有问题。

三、打包项目

1、修改package.json文件,在scripts里添加如下内容:

注:json文件不能有注释,请自己把后面的注释去除

"pack": "electron-builder --dir",// 暂时不知道用途,官方的配置
"postinstall": "electron-builder install-app-deps",// 编译命令
"build": "electron-builder",// 打包当前平台命令
"build-win": "electron-builder --win --ia32",// 打包windows 32位应用命令
"build-win64": "electron-builder --win --x64",// 打包windows 64位应用命令
"build-mac": "electron-builder --mac",//打包mac平台应用命令
"build-linux": "electron-builder --linux"// 打包Linux平台应用命令

完整的内容应为下图:

2、执行npm run postinstall编译项目:

3、再执行npm run build打包(这里以当前平台为例)。


没有报错,说明我们打包成功。然后就发现多了一个dist文件夹,打开进去就是我们安装包的位置:

免安装目录:不用安装,进去后直接双击里面的.exe文件就可以直接打开;
安装包:需要安装,直接双击就能正常安装。

到这里,我们就可以自己打包一个桌面应用程序了。

四、打包报错处理

1、要是我们运行npm run build打包时出现winCodeSign、nsis、nsis-resources文件下载不了的错误,这时我们就需要手动下载。


复制dowonloading后面的下载地址到GitHub文件加速网站(https://shrill-pond-3e81.hunsh.workers.dev/)下载相应的文件,把下载好的文件解压放到下列对应的文件夹中:

用户名为自己电脑的用户名(例如:C:\Users\Hello\AppData\Local\electron-builder\Cache);
版本号为npm run build时下载地址中的版本号;
要是这个目录下没有\electron-builder\Cache\这个地址,则需要自己创建;
上面这图是成功打包的图,实际操作需要一步一步buid下载文件

winCodeSign:C:\Users\用户名\AppData\Local\electron-builder\Cache\winCodeSign\winCodeSign-版本号
nsis:C:\Users\用户名\AppData\Local\electron-builder\Cache\nsis\nsis-版本号
nsis-resources:C:\Users\用户名\AppData\Local\electron-builder\Cache\nsis\nsis-resources-版本号

当所有包都下载好后重新npm run build就可以了。

至此完结。

参考文档:
Electron中文网
Electron打包(windows平台)

Electron打包桌面应用程序相关推荐

  1. Vue-Cli4.x项目通过electron打包桌面应用程序

    发现网上的教程大部分都是vue2.x目录结构不太一样 还有就是将一些问题整合在一起 傻瓜式教程 步骤一 下载electron的demo项目 electorn GitHub 下载demo electro ...

  2. C#—使用InstallerProjects打包桌面应用程序

    前言 打包桌面应用程序实在是一个不常使用的东西,偶尔使用起来经常会忘东忘西的耽误时间,因此,这篇文章多以图片记录过程,也是用于备忘. 下载打包工具 C#打包桌面应用程序有很多种方法,这里介绍一种使用M ...

  3. 使用 Electron 构建桌面应用程序的介绍

    事实上的团队协作软件,Visual Studio Code - 在撰写本文时市场上最受欢迎的代码编辑器之一,以及WhatsApp的桌面版本都有一个共同点:它们都是用Electron构建的.js.随着这 ...

  4. electron打包生成exe程序

    一.步骤 1.package.json中添加配置如下: "scripts": {"package":"electron-packager . demo ...

  5. 解决electron打包成应用程序问题总结(详细)

    一.打包流程 1.定位到当前项目目录下,输入命令: npm install --save-dev electron-packager 将electron-package包安装到在项目下面, 在pack ...

  6. mac nw.js 打包桌面应用程序

    参考https://segmentfault.com/a/1190000007564694和https://zhuanlan.zhihu.com/p/20070166 1.mac电脑下打包,需要先下载 ...

  7. chromium 桌面_如何使用Chromium和PyInstaller将Web应用程序转换为桌面应用程序

    chromium 桌面 Packaging and distributing your app sounds simple in principle. It's just software. But ...

  8. 为Electron 打包后的桌面程序添加自定义向导

    Electron打包 简介 内容 创建package.json 下载打包依赖 添加打包配置----在srcripts下面添加build(此处添加自定义安装向导向导) 配置信息说明 Boolean St ...

  9. 【Electron】使用Electron将web项目打包成桌面应用程序

    目录 一.所需环境&打包前准备 1.安装node.js 2.安装electron 3.web项目 二.打包过程 1.打包配置 2. 安装打包器 3.执行打包命令: Electron是由GitH ...

  10. 用HTML和CSS和JS构建跨平台桌面应用程序的开源库Electron的介绍以及搭建HelloWorld

    场景 Electron介绍 Electron是由Github开发,用HTML,CSS和JavaScript来构建跨平台桌面应用程序的一个开源库. Electron通过将Chromium和Node.js ...

最新文章

  1. 阿里云服务器ECS配置LNMP
  2. android文件的读取方法,Android读取写入文件的方法
  3. 养成一个新习惯,只需要这个大脑区域兴奋0.5秒
  4. 有关SAP中的批次管理
  5. android程序名称,Android应用程序名称带上标
  6. 浙大慕课c语言答案,程序设计入门——C语言
  7. IDEA 创建maven jar、war、 pom项目
  8. svn导出项目到myeclipse,运行报ClassNotFoundException
  9. jq中html(),text(),val()以及js中innerHTML,innerText和value
  10. Markdown中跳转,锚点操作浅析
  11. Android中关于Volley的使用(二)加载Json数据
  12. double类型的精度问题【计算时有误差】。 (0.1 * 0.1 , 1.0 - 0.9)
  13. Oracle在线撤销表空间,Oracle创建、管理撤销表空间
  14. js input输入框去空格
  15. Android常用布局-01
  16. 软碟通 (UltraISO)制作启动盘
  17. 20180710-B · Craft Beer USA · ggplot2 geom_density_ridges_gradient 核密度估计峰峦图 字体设置 · R 语言数据可视化 案例 源码
  18. Python实战1-9例:变量、运算、字符串等综合训练
  19. Python E化-英文资料自动翻译
  20. Halcon图像读取的方式

热门文章

  1. 不建议用STM32F1的RTC实现日历功能
  2. python测试开发django(26)--发送邮件send_mail
  3. 汉字无法被计算机替代作文,电脑能替代写字100字作文
  4. tif文件怎样转换成jpg?值得收藏的三种方法!
  5. Java基础--多线程(上)
  6. CRM如何实现商机的全面把控
  7. 关于CMOS和TTL的DC参数
  8. OSG学习笔记-Geode(2-2)
  9. win10 下如何安装PL232 串口驱动
  10. UK Biobank英国生物银行数据库, 最近一周有哪些新的论文?(8.30)