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...