21

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

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

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

4

4 回答 4

13

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

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

检查本地和存储库版本

如果本地 < 远程(例如 v1.0 < v2.0),则:

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

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

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

如果本地>远程则:

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

启动主应用程序。

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

于 2014-06-02T15:34:11.683 回答
6

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

于 2016-08-27T13:33:05.887 回答
4

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

> pip install updater4pyi

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

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

于 2014-12-06T22:58:11.437 回答
0

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

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

于 2015-06-18T18:20:54.913 回答