Я поддерживаю кросс-платформенное приложение, основанное на PyQt, которое работает на Linux и Mac.Самооценка py2exe/py2app application
Windows и версии для Mac распространяются с использованием py2exe и py2app, который создает довольно большие пакеты (~ 40 МБ).
Я хотел бы добавить «автоматическое обновление» функциональность, основанные на заплатах, чтобы ограничить размер загрузок:
- проверку новых версий на сервере HTTP
- загрузить патчи, необходимые для обновления до последней версия
- применить список исправлений и перезапустить приложение
у меня есть несколько вопросов:
- Что такое предпочтительный способ обновления приложения Windows, поскольку открытые файлы заблокированы и не могут быть перезаписаны?
- как подготовить и применить исправления? возможно, используя bsdiff/pspatch?
[обновление]
Я сделал простой класс, чтобы сделать патчи с bsdiff, который является очень эффективным, как рекламируются на их сайте: а дифф на два py2exe версий моего приложения (~ 75 Мб несжатых) выпускает патч 44 КБ! Достаточно мало для меня, я буду придерживаться этого формата.
Код доступен в пакете 'update' от pyflu, небольшой библиотеки кода Python.
Из интереса, как вы планируете иметь дело с обновлениями, которые охватывают несколько версий/обновлений. например у пользователя есть 1.0, то к моменту их следующего попытки запустить его было (скажем) 10 обновлений? Не могли бы вы создать патчи по требованию? С кэшированием я думаю, что это будет не так уж плохо, но предполагает, что у вас есть код на стороне сервера ... –
Если пользователь пропустил 10 обновлений, программа обновления загрузит 10 патчей, необходимых для перехода к последней версии, и применит их один одним. Отсутствует код на стороне сервера, просто простой сервер apache, отображающий содержимое каталогов. –