Electron 实践之自动更新

发布于 2021-06-25 19:29:20 字数 3469 浏览 2493 评论 2

本文仅包含 MacOX 经验,Windows 待实践后更新。

electron 官方的 auto update 文档并不完善,多番 google 后,找到一种使用简单、跨平台、无特殊服务器要求的方案。

效果图:

生成证书

出于安全考虑,自动更新必须搭配证书和 https 服务器使用。证书的生成可以用苹果开发者证书或者 StartSSL 等生成证书,而只有苹果开发者证书可以过掉 GateKeeper

打包时通过环境变量 CSC_LINKCSC_KEY_PASSWORD 指定证书,另外在 Mac 下可不手动指定,electron-builder 会自动寻找合适的证书。

详见: Code Signing · electron-userland/electron-builder Wiki · GitHub

找一台服务器存放 update.json

经测试,update.json 不一定要 https 服务器。

格式参考以下例子:

使用 electron-simple-updater

先安装依赖,在 ./app 目录执行:

$ npm install electron-simple-updater --save

app/package.json 中配置 update.json 的地址:

"updater": {
  "url": "https://raw.githubusercontent.com/sorrycc/test-release/master/update.json"
},

main 端配置 updater :

import updater from 'electron-simple-updater';
updater.init({
  checkUpdateOnStart: false,
  autoDownload: false,
  logger: log,
});

renderer 端绑定时间并启动更新检测:

import { remote } from 'electron';
const updater = remote.require('electron-simple-updater');

updater.on('update-available', (meta) => {
  console.log('[updater] update avaiable', meta.version);
  updater.downloadUpdate();
});
updater.on('update-downloading', () => {});
updater.on('update-downloaded', () => {
  if (window.confirm('Restart and install updates?')) {
    updater.quitAndInstall();
  }
});
updater.on('error', (err) => {});

updater.checkForUpdates();

打包

基于 electron-builder

部署资源文件到 https 服务器

mac 下要有 release.json{ProductName}-{version}-mac.zip,需部署到 https 服务器。

release.json 格式如下:

{
  "url": "https://github.com/sorrycc/test-release/releases/download/1.2.0/ReleaseTracker-0.2.0-mac.zip",
  "name": "",
  "notes": "",
  "pub_date": "2017-1-20T14:18:48.988Z"
}

参考 Release 1.2.0 · sorrycc/test-release · GitHub

更新 update.json

参考前面的例子更新 update.json

参考

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

JSmiles 2021-06-25 19:32:10

另外示例中是在 renderer 端对更新操作进行控制,个人认为更新功能作为独立的小模块,放在 main 端更加符合一般的通用场景。

main 端自动更新的代码可以参考 autoUpdate

JSmiles 2021-06-25 19:31:14

用相同的方法在 Windows 下做了实践,与 MacOX 的不同主要有两个部分

update.json

update.json 格式参考如下:

{
    "win32-x64-prod": {
        "readme": "Second Release",
        "update": "http://xxx/releases/download/1.2.0",
        "install": "http://xxx/releases/download/1.2.0/xxx.Setup.1.2.0.exe",
        "version": "1.2.0"
    }
}

install 指定更新包的地址。

build 配置

package.jsonelectron-builder 配置内容如下:

"build": {
    ...
    "win": {
      "target": "squirrel"
    },
    "squirrelWindows": {
      "iconUrl": "https://raw.githubusercontent.com/megahertz/electron-simple-updater/master/example/build/icon.ico"
    }
  },
~没有更多了~

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84961 人气
更多

推荐作者

醉城メ夜风

文章 0 评论 0

远昼

文章 0 评论 0

平生欢

文章 0 评论 0

微凉

文章 0 评论 0

Honwey

文章 0 评论 0

qq_ikhFfg

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文