【问题标题】:Auto updating a python executable generated with pyinstaller自动更新使用 pyinstaller 生成的 python 可执行文件
【发布时间】:2014-01-04 06:16:33
【问题描述】:

我有一个正在开发的桌面应用程序,我正在使用 PyInstaller 生成 de 分发文件。

我之所以选择PyInstaller而不是py2exe是因为它很容易使用而且我不需要关心windows dll,但是当我使用py2exe时我可以简单地使用Esky来自动更新,但是我不能将它与PyInstaller 一起使用。

所以我不知道如何启动自动更新应用程序。有人有一些想法或只是知道我该如何使用PyInstaller 和 esky?

【问题讨论】:

  • 为什么不直接创建一个 .bat 文件,在 windows 调度程序中安排它在每个开机/关机/小时左右运行一次?
  • @Torxed,记住你必须以SYSTEM运行它,否则会弹出命令提示符。
  • 您也可以在用户空间中运行它并强制隐藏提示,但是会出现提示。您还可以创建约 20 行的 Python 服务脚本,运行“Pyinstaller”命令并使用C:> python myservice.py install 安装它
  • 我们所做的是在互联网上有一个文件,它会定期检查文件中的版本号是否大于当前版本提示用户下载新的安装程序...根据我的经验,自动更新是有风险的业务
  • 我认为@JoranBeasley 解决方案可能是我正在做的最好的事情。但是,是的,实施起来非常困难。如果下载停止或出现其他问题,我可以破坏应用程序。

标签: python py2exe pyinstaller esky


【解决方案1】:

您可以为您的主应用程序创建一个启动器应用程序,并在其中添加所有更新逻辑。启动器应用程序执行以下操作:

显示一个弹出窗口(这会向用户提供程序正在加载的快速反馈)

检查本地和存储库版本

如果本地

.... 检查远程存储库中是否存在名为 updater_v2.0.exe 的更新程序应用程序。

........如果有:下载它运行它并退出。 (见下文)

........ 如果没有:下载最新的主应用程序 exe 并替换本地的(注意这一步的文件访问权限 - 您正在尝试写入 c:\program 文件)。

如果本地>远程则:

....如果这是开发人员工作站,则显示错误/警告except(您需要对此进行设置)

启动主应用程序。

更新程序应用程序的目的是适应获取新的主应用程序 exe 是不够的情况。我还使用它来更新启动器应用程序本身(这就是启动器在运行更新程序后立即退出的原因 - 顺便说一句,在尝试覆盖 laucher 可执行文件之前给 Windows 一些时间)

【讨论】:

  • 您好!可以有一个视频来说明如何做到这一点吗?谢谢!
  • 你很有可能使用这种方法找到一个开源应用程序,也许它会比视频更好地为你服务。我不能分享任何 python 代码,因为我只在 VBScript 中实现了它(根本不喜欢它)。我可以为python制作视频,但为什么应该我;-)
  • 实际上不需要。谢谢
  • @IceBear 你找到任何开源项目了吗?
  • @Piyush nopeeee
【解决方案2】:

我前段时间遇到了同样的问题——所以我写了一个小库 (updater4pyi) 来在 Mac OS X、Linux 和 Windows 上完全做到这一点。例如,您可以从 PyPI 获取它

> pip install updater4pyi

源代码库位于:https://github.com/phfaist/updater4pyi

这是一个小而不太成熟的项目。它意味着尽可能灵活,例如不依赖于任何特定的 gui 工具包。我在不同的平台上做了一些测试,但可能仍然存在错误。我希望它对其他人也有用。

【讨论】:

  • 哇,我很高兴你这样做了,我会尽快尝试的!
  • 仅当 repo 未归档时:(
【解决方案3】:

截至今天,pyinstaller 只有实验性的 python3 支持。如果有人想使用 esky,我建议使用 cx freeze。它支持 python 2 和 3,适用于 linux mac 和 windows

然后您就可以使用 esky。 Esky 具有使用引导机制的优势,因此您始终至少安装了一个可运行版本。

【讨论】:

  • 我用 Esky 和 ​​cx freeze 一起工作。
  • @FernandoFreitasAlves Esky 现已存档 :(
【解决方案4】:

还有http://www.pyupdater.org/我看这里就不引用了

【讨论】:

  • 嗨,有没有关于使用 PyUpdater 自动更新部分的好教程?我所看到的只是一个带有 wxpython 应用程序的演示。
  • @elams 我也在留意这个。如果你能找到任何东西,如果你能把它贴在下面,那就太好了。
猜你喜欢
  • 1970-01-01
  • 2022-01-04
  • 2019-01-21
  • 2021-07-27
  • 2019-12-06
  • 2014-12-22
  • 2021-09-26
  • 2020-07-09
相关资源
最近更新 更多