Python脚本成为可以自动更新的独立单个文件可执行文件?

时间:2014-03-27 19:03:09

标签: python windows auto-update pyinstaller esky

我为我的办公室用Python 2.7编写了一个程序。使用带有--onefile标志的PyInstaller,我将它编译成一个EXE文件,分发给我的同事。我现在要弄清楚的是如何自动提供更新,但仍然将程序保存为单个文件。

我目前的方法是让程序提醒用户注意新版本并提供获取更新文件的说明。这有效,但我希望在没有用户参与的情况下找到一些更新方法。

我知道Esky,它可以创建自动更新的Python程序,但据我所知,它需要程序作为多个文件存在。

关于如何制作可以自动更新的独立单文件EXE python程序的任何建议?

2 个答案:

答案 0 :(得分:2)

  • 您可以将新的可执行文件下载到临时文件夹
  • 使用__file__了解可执行文件的当前位置
  • 显示您需要重新启动的消息
  • 使用sys.execcv或subrocess替代方法将当前正在运行的进程替换为类似

    的小脚本

    "sleep(1) & copy {tempfile} {filename}".format(tmp_file,__file__)

(使用新exe覆盖旧exe的简单批处理命令)

答案 1 :(得分:1)

当您的应用程序已提醒用户新版本并且用户已表示他们想要它时,请下载新的exe,启动新的exe,然后关闭当前的exe。新的exe应该删除它看到的任何旧的exes。不同的版本需要以不同的名称命名。