我有一个桌面应用程序正在处理我正在使用PyInstaller
生成de分发文件。
我选择PyInstaller
而不是py2exe
,因为它非常易于使用,我不需要关心Windows dll,但是当我使用py2exe
时,我可以简单地使用{ {3}}自动更新,但我无法将其与PyInstaller
一起使用。
所以我不知道如何启动自动更新应用程序。有人有一些想法或者只知道如何使用PyInstaller
和esky?
答案 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)
然后你可以使用esky。 Esky具有使用引导机制的优势,因此您始终至少安装了一个可运行版本。