Автоматическое обновление исполняемого файла 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. Я сделал некоторые испытания на различных платформы, но все еще могут быть ошибки. Надеюсь, это может быть полезно и кому-то еще.


появилась http://www.pyupdater.org/ я вижу, что он не привел сюда


на сегодняшний день pyinstaller имеет только экспериментальную поддержку python3. Если кто-то хочет использовать esky, я бы рекомендовал использовать CX freeze. Он поддерживает python 2 и 3 и работает на linux mac и windows

затем вы можете использовать esky. Esky имеет преимущество работы с механизмом начальной загрузки, так что у вас всегда есть хотя бы одна установленная версия.