关于electron:分享下我近期研究可能网上没有的-Electron-的自动更新机制

115次阅读

共计 1000 个字符,预计需要花费 3 分钟才能阅读完成。

Electron 的自动更新机制并不算简单,但团队内仿佛没有相干文档,正好笔者搞明确了,就简略阐明一下,以 MacOS 的 arm 平台为例阐明,具体代码能够参考 Postcat 的相干配置,本篇文章就不以具体代码举例了。

这里是以 Mac arm 平台为例,对于不同平台,包名不一样、更新文件名不一样、压缩包后缀不一样,但总体上都是围绕这三样货色。

配置了自动更新后,构建后,会有以下几个要害文件:


安装包:Postcat-1.0.0-arm64.dmg
更新 / 指引文件:latest-mac.yml
压缩包:Postcat-1.0.0-arm64-mac.zip

三者是对应的,要顺利完成自动更新,三者缺一不可。当运行 Postcat 时,应用程序会尝试拜访更新文件,从更新文件中获取最新的版本号和一个相对路径,相对路径指向.zip 压缩包。

如果更新文件 latest.yml 中的最新版本号和以后运行的应用程序版本号统一,则不会再去拜访压缩包。

如果不统一,则回去尝试拜访压缩包,去将压缩包下载到本地,主动进行更新(更新过程是主动的,笔者也不理解外部运行的机理)。

待下一次重启利用时,运行的即是最新的应用程序,大抵流程模型如下:

由此可知,latest.yml 文件的地位是相当重要的,它必须始终指向最新的压缩包,因为在每一次公布新版本后,须要将 latest.yml 文件替换掉。对于这一点,Github 平台曾经帮咱们做得很好了,但如果你的安装包须要公布在其余平台上,这一步操作须要退出到规范流程中。

当然,因为咱们有本人的需要,因而在两头加了一层 Nginx,Electron 对于自动更新对外的拜访,都会通过 Nginx,由此变成:

须要留神的是,更新文件 latest.yml 中的门路是相对路径,而 Electron 拜访压缩包时走的是 http 协定,绝对路径,因而当自动更新呈现问题时,能够查看 latest.yml 中的相对路径是否正确。

这个机制我有利用到目前我参加的开源我的项目中,Postcat 开源的 API 管理工具 ,纯国产,收费的,主打插件生态,适宜中小团队以及集体开发者应用,有 API 相干的外围性能。

目前在 Github 上 1.3k star,如果你感觉这个我的项目还不错的话,无妨点个 star 反对一下~

Github:

https://github.com/Postcatlab…

Demo:
https://postcat.com/zh/?utm_s…

正文完
 0