我维护一个跨平台应用程序,基于在 linux mac 和 windows 上运行的 PyQt。
windows 和 mac 版本使用 py2exe 和 py2app 分发,它们会产生相当大的包 (~40 MB)。
我想添加一个“自动更新”功能,基于补丁来限制下载大小:
- 在 http 服务器上检查新版本
- 下载更新到最新版本所需的补丁
- 应用补丁列表并重新启动应用程序
我有一些疑问:
- 由于打开的文件被锁定且无法覆盖,因此更新 Windows 应用程序的首选方法是什么?
- 如何准备和应用补丁?也许使用bsdiff/pspatch?
[更新]
我做了一个简单的类来使用bsdiff制作补丁,这在他们的网站上宣传非常有效:我的应用程序的两个 py2exe 版本(未压缩约 75 MB)上的差异会产生一个 44 kB 的补丁!对我来说足够小,我会坚持这种格式。
该代码可在pyflu的“更新”包中找到,这是一个小型 Python 代码库。