文档地址
https://www.electron.build/auto-update
准备:
需要准备一个静态服务,放置新版本的软件包;
推荐使用http-server插件;
electron-updater API介绍
主要用到electron-updater中的autoUpdater模块做更新程序
引入方式:
import { autoUpdater } from 'electron-updater';
(1) autoUpdater.setFeedURL
设置软件包更新地址
autoUpdater.setFeedURL({
provider: 'generic',
url: http://192.xxx.xxx.xx
});
(2) autoUpdater.autoInstallOnAppQuit
设置 退出时是否自动安装 默认为true
autoUpdater.autoInstallOnAppQuit = false;
(3) autoUpdater.autoDownload
是否自动下载安装包
autoUpdater.autoDownload = false;
(4) autoUpdater.checkForUpdates
检查是否有新的安装包
autoUpdater.checkForUpdates();
(5) autoUpdater.downloadUpdate
手动触发下载安装包
autoUpdater.downloadUpdate().then(() => {
// do some
}).catch(e =>
// do some
)
(6) autoUpdater.updateCancelled
取消下载
autoUpdater.updateCancelled()
(7) autoUpdater.quitAndInstall
手动触发 退出程序并安装
autoUpdater.quitAndInstall()
了解以上api就可以做出更新程序
做的过程中遇到的坑:
插件版本不匹配引起各种错误:
(1):设置软件更新服务地址不生效:报错dev-app-update.yml文件找不到 (未设置好软件包更新地址引起)
(2):provider未定义 (未设置好软件包更新地址引起)
(3): 各种报错 插件版本过高,导致新的api不生效
最后使用插件版本:
"electron": "4.2.12",
"electron-builder": "^21.0.0",
"electron-updater": "^3.0.0"
注意:
不推荐在配置文件中设置软件更新地址,通过api设置;
配置文件中的发布设置空着就行:
// 新增版本信息latest.yml,便于自动更新
publish: [
{
provider: 'generic',
url: ''
}
],
本地测试做到安装软件这一步就行;本地无法自动安装(否则会报错);需要在打包环境测试安装步骤;
整体更新流程
检测到有新版本 ---> 手动触发下载 ---> 显示进度条 ---> 下载完成,手动选择安装