Electron自动版本更新
更新工具造型
必须使用 electron-build 提供的 electron-update ,而不是使用 electron 官网的 update 模块,因为electron官方的 update 模块的功能弱、限制多。
更新过程
将需要更新的程序包放置在一个URL目录中(例如:对象存储),然后将这个URL告知给electron-update,electron-update就会在去该URL目录下寻找新版本,如果发现新版本就提示用户更新;用户同意后,electron-update就会下载并安装程序包。以下详细阐述操作过程和原理:
1>. 将 latest.yml程序包描述文件、blockmap文件(增量更新需要此文件)、程序安装包放置到URL目录中;
2>. 客户程序启动时, electron-build自动检查URL目录下的latest.yml文件,通过此文件判断当前是否有新版需要更新;URL目录下有 latest-linux-arm64.yml、latest-linux.yml 、latest-mac.yml、latest.yml 等适用各平台的 latest.yml 文件, electron-build会根据当前客户端的平台自动检查相应的latest.yml文件,然后对比当前客户端版本信息,以确定是否需要有新版本;
3> . 在 package.json 中设置URL目录,electron-update通过此URL目录中寻找新版本;生产环境下electron-update只接受在 package.json > build > publish 中设置的URL,通过setFeedURL或其它方式设置的URL仅在开发时有效,因为在程序中动态设置URL有安全风险,容易被劫持,会导致更新到不安全来源的程序包;
注:在生产环境下,请务必先上传 blockmap文件 和 程序安装包 至URL目录,待上传完成后再上传 latest.yml 文件;因为 electron-update 通过 latest.yml 判断有更新后,可能立即下载更新包,此时如果 blockmap文件 或 程序安装包 还没有上传完成,客户端就会更新失败。