使用 PyQT6 + Nuitka 制作的 exe 小工具,如何在线更新?

152 天前
 Koril

背景

给其他部门的小伙伴开发一个工具,使用的是 PyQT6 + Nuitka 制作的单个 exe 小工具。

后面可能要经常修改更新,所以想要试着做一个自动在线更新的功能。

我的想法

目前的思路是:

  1. 主窗口开启前,检查公网服务器的 version.json 信息,和当前版本对比,判断是否需要更新。
  2. 如果需要更新,把放在服务器上最新的 exe 下载下来。
  3. 把 bat 脚本内容写到名为 update.bat 文件中,通过 subprocess.Popen 来启动这个 update.bat 文件。
  4. update.bat 主要执行替换和启动新版本软件的操作。

现在按照这个思路,基本已经实现了(下载新版本+替换),但是 update.bat 里面 start "" "app.exe",不知道为啥,始终无法成功执行。

想请教的是,业界标准的做法是啥,有什么可以参考的项目么?

1074 次点击
所在节点    问与答
4 条回复
hwdq0012
152 天前
windows 得有辅助更新器,或做成插件化,在加载插件之前检查更新,替换动态库
nanhezzb
152 天前
脚本就加点 echo 看看代码前后是否执行;
更新前肯定需要结束 app.exe 吧,或者换 explorer "app.exe" 试试。
myxingkong
152 天前
正在运行的程序无法删除,但可以重命名或移动。一种方法是将当前程序重命名,添加 _old 后缀,然后下载新的可执行程序。下载完成后,启动新程序并退出旧程序。接着,在新程序启动时检测是否存在带 _old 后缀的程序,如果有,则将其删除。
vialon17
152 天前
之前做过差不多的更新器,运行 start 前 先 cd 过去就行了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1137811

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX