自动更新使用pyinstaller生成的python可执行文件

时间:2013-12-16 18:21:11

标签: python py2exe pyinstaller esky

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

我选择PyInstaller而不是py2exe,因为它非常易于使用,我不需要关心Windows dll,但是当我使用py2exe时,我可以简单地使用{ {3}}自动更新,但我无法将其与PyInstaller一起使用。

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

4 个答案:

答案 0 :(得分:6)

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

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

检查本地和存储库版本

如果本地<远程(比如v1.0< v2.0)然后:

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

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

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

如果本地>远程然后:

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

启动主应用程序。

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

答案 1 :(得分:5)

前段时间我遇到了同样的问题 - 所以我在Mac OS X,Linux和Windows上编写了一个小型库(updater4pyi)。您可以从PyPI获取它,例如

> pip install updater4pyi

源存储库位于:https://github.com/phfaist/updater4pyi

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

答案 2 :(得分:2)

还有http://www.pyupdater.org/我发现这里没有引用

答案 3 :(得分:0)

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

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