Я поддерживаю кросс-платформенное приложение, основанное на PyQt, которое работает на linux mac и windows.
Окна и версии mac распространяются с использованием py2exe и py2app, который создает довольно большие пакеты (~ 40 МБ).
Я хотел бы добавить функциональность "автоматического обновления" на основе патчей для ограничения размера загрузок:
- проверить новые версии на http-сервере
- скачать патчи, необходимые для обновления до последней версии
- применить список исправлений и перезапустить приложение
У меня есть несколько вопросов:
- что является предпочтительным способом обновления приложения Windows, поскольку открытые файлы заблокированы и не могут быть перезаписаны?
- Как я могу подготовить и применить исправления? возможно, используя bsdiff/pspatch?
[обновление]
Я сделал простой класс для создания патчей с bsdiff, который очень эффективен, как рекламируется на их сайте: diff на двух py2exe версии моего приложения (~ 75 МБ несжатого) создают патч 44 КБ! Достаточно мало для меня, я буду придерживаться этого формата.
Код доступен в пакете "update" pyflu, маленькой библиотеки кода Python.