1

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

我目前的方法是让程序提醒用户有新版本,并给出获取更新文件的说明。这可行,但我想找到一些无需用户参与的更新方法。

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

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

4

2 回答 2

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

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

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

于 2014-03-27T20:20:33.117 回答
1

当你的应用程序提醒用户有新版本并且用户说他们想要它时,下载新的 exe,启动新的 exe,然后关闭当前的 exe。新的 exe 应该删除它看到的所有旧 exe。不同的版本需要以不同的方式命名。

于 2014-03-27T19:15:07.560 回答