Автоматическое обновление исполняемого файла python, созданного с помощью pyinstaller
у меня есть настольное приложение, которое я работаю, и я использую PyInstaller
для создания файлов распространения de.
Я выбрал PyInstaller
над py2exe
потому что он очень прост в использовании, и мне не нужно заботиться о DLL windows, но когда я использую py2exe
Я могу просто использовать Еский для автозапуска, но я не могу использовать его с PyInstaller
.
поэтому я не знаю, как запустить приложение автоматического обновления. У кого-то есть какие-то мысли или просто знаю, как я могу использовать PyInstaller
и Эски?
4 ответов
вы можете создать приложение запуска для вашего основного приложения и добавить туда всю логику обновления. Приложение launcher делает следующее:
отображает всплывающее окно (это дает быструю обратную связь для пользователя, что программа загружается)
проверяет локальные версии и версии репозитория
Если локальный
.... Проверьте наличие приложения updater в удаленном репозитории updater_v2.0.исполняемый.
........ Если он есть: загрузите его, запустите и выйдите. (см. ниже)
........ Если нет: загрузите последнее главное приложение exe и замените локальное (остерегайтесь прав доступа к файлам на этом шаге-вы пытаетесь написать c:\program файлы).
Если локальный > удаленный, то:
.... Отображение ошибки/предупреждения за исключением если это рабочая станция разработчиков (требуется настройка это)
запустите основное приложение.
целью приложения updater является размещение случаев, когда получение нового основного приложения exe недостаточно. Я также использую его для того, чтобы обновить само приложение launcher (вот почему launcher выходит, как только он запускает updater-BTW дает windows немного времени, прежде чем пытаться перезаписать исполняемый файл laucher)
я столкнулся с тем же вопросом некоторое время назад-поэтому я написал небольшую библиотеку (updater4pyi
), чтобы сделать именно это на Mac OS X, Linux и Windows. Вы можете сделать его из PyPI например с
> pip install updater4pyi
исходный репозиторий находится по адресу:https://github.com/phfaist/updater4pyi.
Это небольшой и не очень зрелый проект. Он должен быть максимально гибким, не полагаясь, например, на какой-либо конкретный инструментарий gui. Я сделал некоторые испытания на различных платформы, но все еще могут быть ошибки. Надеюсь, это может быть полезно и кому-то еще.
на сегодняшний день pyinstaller имеет только экспериментальную поддержку python3. Если кто-то хочет использовать esky, я бы рекомендовал использовать CX freeze. Он поддерживает python 2 и 3 и работает на linux mac и windows
затем вы можете использовать esky. Esky имеет преимущество работы с механизмом начальной загрузки, так что у вас всегда есть хотя бы одна установленная версия.