Electron builder 打包和自动更新

有关 Electron 打包,网上有很多文章,但一些已经过时,并不适用于最新的版本,在研究的时候因此而走了一些弯路。

截止本文,我使用的相关版本是:

  • electron v1.6.4
  • electron-builder v16.4.1

大家可以根据情况阅读本文。

两种主流的打包工具

官方文档中两种主要工具是 electron-packager 和 electron-builder,区别主要是:

  • electron-packager 主要是程序打包,并不包含生成 Installer,且不能在 Mac 下打包 Win 程序
  • electron-builder 是包含了 electron-packager,能够生成 Installer,并且可以在 Mac 平台下打包 Mac, Linux 和 Windows 包

electron-builder 工具功能更强大,不仅支持打包,生成 Installer,而且还可以发布到 GitHub 或 S3 等平台,且支持自动更新。

electron-builder 的文档

文档地址:link

electron-builder 代码提交很活跃,更新较频繁,文档也同样😔。

吐槽一下它的 Options 文档,后半部分貌似是从代码注释中自动生成的文档,是根据代码类名排序的内容,而不是一般的理解和配置顺序,查看时候需要关注其配置项的名称和继承关系,并且有些链接是坏的。

它提供了两种配置方式,这里主要介绍通过 package.json 这种方式。

建议阅读的顺序是:

  1. [Metadata](https://github.com/electron-userland/electron-builder/blob/master/docs/Options.md#Metadata) 这部分写的是 Package.json 中的配置项
  2. [Config](https://github.com/electron-userland/electron-builder/blob/master/docs/Options.md#config–platformspecificbuildoptions) 这是在 package.json#build 中的配置

在阅读文档时,注意 Type 一栏列出的链接,然后再搜索找到相应的详细配置部分。(有的可能不在本页面内,可以在源码 packages/目录 中寻找)

OSX Signing

App 的分发有两种形式:.app 及 MAS。

app 不签名默认是无法运行的。

我们需要购买一个 Apple 开发者账号,并本地生成一个密钥,然后导入证书。

refer:[link](https://github.com/nwjs/nw.js/wiki/MAS%3A-Requesting-certificates)

对于其它开发者,可以通过导出并分享.p12 文件添加。

Windows Signing

refer: [link](https://www.npmjs.com/package/electron-installer-windows#signing)

默认 Mac 下安装 mono 后,应该会有 makecertpvk2pfx 这两个工具。如果没有,可以到 Win 下进行签名,或者直接从网上下载。

有关自动更新

electron-builder 的自动更新机制依赖的是 Squirrel.Mac 和 Squirrel.windows,并且最新版本已经可以实现不需要准备一台接口服务器,只需要静态服务器便可实现。

Refer: [link](https://github.com/electron-userland/electron-builder/blob/master/docs/Auto%20Update.md)

一般,用 S3 是比较省心的,按照文档配置就可以实现 Win 和 Mac 双平台的自动更新,只需要代码响应相应事件即可。

但我们所使用的是 GitHub Private Repo,有鉴权的问题。采用的解决方案是 Nuts + GitHub, Nuts 作为更新接口,GitHub 提供存储。

相关配置如下:

自动静默后台更新实现:

调试打包过程

electron-builder 遵循惯用的调试日志方式:

这样执行打包过程后,会输出详细的过程日志,对调试很有帮助。

最后

electron-builder 因为文档有点不太完美,实际学习起来会有点吃力,遇到文档不能很好解决的问题,可以去查 Issues 和 代码,另外,关注 Releases 最新版本和发版说明。

1 评论

发表评论