Electron项目使用electron-builder和electron-updater实现自动更新升级软件,每次发布版本后,客户端即可检测到新版本并提示下载更新,或自动更新。
优点:
不需要专用的发布服务器。
- 代码签名验证不仅适用于macOS,还适用于Windows。
- 自动生成和发布所有必需的元数据文件和工件。
- 在所有平台上支持下载进度和分阶段发布。
- 支持开箱即用的不同提供商(GitHub版本,Amazon S3,DigitalOcean Spaces,Bintray和通用HTTP服务器)。
- 您只需要2行代码即可使其正常工作。
文档:https://www.electron.build/auto-update
步骤:
1、package.json 配置
可参考前面的“Electron打包”里面的配置,主要是publish的provider、url选项。
1 | "build": { |
注:打包出来会生成latest.yml文件,用于自动更新的配置信息;
latest.yml文件是打包过程生成的文件,为避免自动更新出错,打包后禁止对latest.yml文件做任何修改。
如果文件有误,必须重新打包获取新的latest.yml文件!!!
2、main.js 主进程配置
1 | import { autoUpdater } from 'electron-updater'; |
在主进程createMainWindow中需要调用一下updateHandle()
3、渲染页面配置
在渲染进程renderer中触发自动更新,并添加自动更新事件监听
1 | // 首次打开version窗口时发起检查 |
4、项目打包
打包完成后在release文件下生成安装包exe、latest.yml、安装包dmg、zip、latest-mac.yml、json等文件。
Mac包不签名也可以打包成功,但Mac上需要应用签名才能有效自动更新,Windows则不用。
应用软件升级版本,修改package.json中的version属性,例如:改为 version: “1.0.1” (之前为1.0.0);
再次执行electron-builder打包,Windows下将新版本latest.yml文件和exe文件(MAC下将latest-mac.yml,zip和dmg文件)放到package.json中build -> publish中的url对应的版本服务器地址下;
在应用中触发更新检查,electron-updater自动会通过对应url下的yml文件检查更新。
5、发布版本到静态服务器
可以写一个发布脚本:publish.js
1 | /** |
Mac 执行 ./publish
Windows 执行 node .\pulish.js