代码之家  ›  专栏  ›  技术社区  ›  bigcat42

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

  •  1
  • bigcat42  · 技术社区  · 10 年前

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

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

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

    关于我如何制作一个可以自动更新的独立的单文件EXE python程序,有什么建议吗?

    2 回复  |  直到 10 年前
        1
  •  2
  •   Joran Beasley    10 年前
    • 您可以将新的可执行文件下载到临时文件夹
    • 使用 __file__ 了解可执行文件的当前位置
    • 显示需要重新启动的消息
    • 使用sys.execv或subprocess替代方法,用类似的小脚本替换当前正在运行的进程

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

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

        2
  •  1
  •   Heikki Toivonen    10 年前

    当您的应用程序通知用户新版本并且用户表示需要时,下载新的exe,启动新的exe并关闭当前的exe。新的exe应该删除它看到的所有旧的exe。不同的版本需要以不同的名称命名。