热更新_热更新 | electron热更新

12cb0c0175c36856ee40ddd27d894626.png
因为公司项目需求,需要做一个检查更新的功能,但是不需要让用户重新安装,只需要替换更新的部分,重启应用完成更新。

开始分析

  • 我最开始是这么想的

5937c6881c4b420d561faba48404ff0a.png

我觉得逻辑没问题啊,于是开始查找资料,发现electron有自带的热更新,研究了一上午,发现好像并没有怎么好用啊,还发现似乎自能保存在c盘,那用户不安装在c盘咋整。果断换了方法。

于是开始研究用node实现,发现似乎可行,操作难度不大,我整理了好多的问题,都给一一解决了,但是最后一步把我卡死了。因为文件资源在占用中,不能替换,必须关闭程序,那么关闭程序就不会执行后面替换的代码了。一度陷入了沉思。

于是我又整理了下思路。

  • 然后就有了想法

1c44b6287811dff40b5996a4f7462204.png

f9316fb50399eba0f2cabe3f7d9f6f22.png

1、听说electron对于app与app.asar的优先度不同,app优先于app.asar,可以借这个方法来实现。但是好像比较绕,那就先放弃了。

2、似乎可以监听electron的close事件,然后执行程序。不过用了下,用处不大,因为我app.quit()后,进程关闭了。

3、通过子进程实现。先打开子进程,然后关闭主进程,执行子进程的代码。或者通过子进程调用另外的文件。感觉可行。

最后的思路

重新收拾心情,轻装上路。

先判断版本号,如果本地的版本号小于线上版本号,获取文件地址,然后下载文件地址的文件,以流的形式下载并写入临时文件,当然,如果不存在临时文件的话,先创建一个,有的话,就直接写入。然后对保存的文件进行重命名。最后执行子进程调用bat复制文件的命令,同时关闭主进程,然后打开程序,完成更新。如果是后端服务,则调用bat执行stop服务的命令,然后复制文件,执行start的命令,最后打开程序,以完成更新。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值