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

我为我的办公室编写了Python 2.7的程序。 使用PyInstaller和–onefile标志,我已经编译成一个EXE文件分发给我的同事。 我现在想弄清楚的是如何自动提供更新,但仍然保持程序作为一个单一的文件。

我目前的方法是让程序提醒用户一个新的版本,并给出指令在哪里获得更新的文件。 这工作,但我想find一些更新的方法,而无需用户的参与。

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

任何build议我如何做一个独立的,单个文件的EXE python程序,可以自动更新?

  • 您可以将新的可执行文件下载到临时文件夹
  • 使用__file__来了解可执行文件的当前位置
  • 显示一条消息,您需要重新启动
  • 使用sys.execcv或subprocess替代当前正在运行的过程与一个小的脚本的东西

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

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

当您的应用程序已经提醒用户一个新版本,用户说他们想要它,下载新的exe,启动新的exe,并关闭当前的exe。 新的exe应该删除它看到的任何旧的exes。 不同的版本需要命名不同。