pyqt5单个exe实现自更新的技巧

关于打包

pyqt5程序,很多人一直用pyinstaller打包,我也一直在用,可以打成【单个exe可执行文件】,也可以打成【免安装绿色文件夹】。

相关pyinstaller的文章教程网上很多,大家自行搜索,我自己也写过几篇,大家可以参考下:
《【爬坑】python3+pyqt5+pyinstaller的各种问题》
《pyinstaller利用spec文件打包的使用模板》

关于更新

软件更新 ,常见多是Update.exe + 主程序.exe,为什么呢?
因为一个程序不可能在自身运行的时候把自身更新掉,所以才通过Update.exe来更新主程序.exe,像很多端游的登陆界面,其实就是个版本更新器,就是Update.exe。

但我们pyqt5经常就是打成单个exe可执行文件,又不想另外加个Update.exe程序,怎么办?

问题转化一下,就是:pyqt5的单个exe可执行文件,如何实现自更新呢?

其实解决思路,稍微想想,大家都有,我采用这样:

步骤1:使用老的 主程序.exe,下载新的 主程序.exe,放在一个自定义的更新目录。
步骤2:关闭老的 主程序.exe
步骤3:删除老的 主程序.exe
步骤4:复制新的 主程序.exe,到老的 主程序.exe的目录位置

有了这样解决思路,如何实现呢?如何做得漂亮呢?

这里借鉴了这个大神的文章《Winform单个exe实现自更新的技巧》

这里面用到了vbs脚本,通过vbs脚本做一些自动化的处理。
然后,解决方案,具化一下,是这样:

步骤0.预先编辑保存好vbs文件
步骤1.点击更新按钮,然后下载新的 主程序.exe和vbs文件,一起放在更新目录下。
步骤2.下载完毕后,运行vbs文件
步骤3.vbs文件运行中…关闭老的 主程序.exe
步骤4.vbs文件运行中…删除老的 主程序.exe
步骤5.vbs文件运行中…复制新的 主程序.exe,到老的 主程序.exe的目录位置
步骤6.vbs文件运行中…打开新的 主程序.exe
步骤7.vbs文件运行中…已经完事了,还想干什么,自己按需加吧

核心代码

主程序.exe和vbs文件,下载完,得运行vbs文件吧,python是这样运行vbs文件的

import subprocess
CREATE_NO_WINDOW = 0x08000000  #不加这个,会有cscript窗口,不好看
subprocess.call("cscript update.vbs", creationflags=CREATE_NO_WINDOW)

update.vbs 脚本代码,如下

Dim wsh
Set wsh = WScript.CreateObject("WScript.Shell")

Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")


DesktopPath = wsh.SpecialFolders("Desktop")

UpdatePath = "C:\mysoft_update"


'清除老程序进程
wsh.Run "taskkill /f /im mysoft.exe",0
WScript.Sleep(2000)


'删除老程序
If  fso.fileExists(DesktopPath & "\mysoft.exe") Then
    fso.DeleteFile(DesktopPath & "\mysoft.exe")
	WScript.Sleep(2000)
End If


'复制新程序到桌面
If  fso.fileExists(UpdatePath & "\mysoft.exe") Then
    fso.CopyFile UpdatePath & "\mysoft.exe", DesktopPath & "\mysoft.exe"
	WScript.Sleep(2000)
End If	


'运行新程序
If  fso.fileExists(DesktopPath & "\mysoft.exe") Then
    wsh.Run   DesktopPath &"\mysoft.exe",false,false
End If


'最后的处理
Set fso=NoThing
WScript.quit

Set wsh=NoThing
WScript.quit
写在最后

好了,这事情基本就这样了,我也花了半天,才学会了这几句vbs,大家拿去用吧

整个事情,当然还有其他代码,不过太长,这里贴不下的,自己文章多看看,拼一拼吧

如果下载功能这块不知道怎么写,看我这边文章,抄一抄,拼一拼就好

《pyqt5的下载进度条-实现模板》

我写的文章,一般都是百度搜不到的资料,我觉得大家需要,就专门写下,希望对大家有帮助

欢迎大家,点赞,关注,留言,以表支持…谢谢!

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值