electron-updater做更新程序

1,709 阅读1分钟

文档地址

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: ''
          }
        ],

本地测试做到安装软件这一步就行;本地无法自动安装(否则会报错);需要在打包环境测试安装步骤;

整体更新流程

    检测到有新版本 ---> 手动触发下载 ---> 显示进度条 ---> 下载完成,手动选择安装