Подтвердить что ты не робот

Автоматическое обновление исполняемого файла python, созданного с помощью pyinstaller

У меня есть настольное приложение, над которым я работаю, и я использую PyInstaller для генерации файлов распространения.

Я выбрал PyInstaller над py2exe, потому что он очень прост в использовании, и мне не нужно заботиться о DLL файлах Windows, но когда я использую py2exe, я могу просто использовать Esky, чтобы autoupdate, но я не могу использовать его с PyInstaller.

Поэтому я не знаю, как запустить приложение для автоматического обновления. У кого-то есть некоторые мысли или просто знаю, как я могу использовать PyInstaller и esky?

4b9b3361

Ответ 1

Вы можете создать приложение запуска для своего основного приложения и добавить туда всю логику обновления. Приложение запуска запускает следующее:

Отображает всплывающее окно (это дает быструю обратную связь с пользователем, загружаемой программой)

Проверяет версии локального и репозитория

если локальный < remote (скажем, v1.0 < v2.0), то:

.... Проверьте в удаленном репозитории наличие приложения-обновления updater_v2.0.exe.

........ Если есть одно: загрузите его, запустите его и выйдите. (см. ниже)

........ Если нет: загрузите последнее основное приложение exe и замените локальный (остерегайтесь прав доступа к файлу на этом шаге - вы пытаетесь записать файлы c:\program).

если local > remote then:

.... Показывать сообщение об ошибке/предупреждение кроме, если это рабочая станция для разработчиков (вам нужно установить для этого)

Запустите основное приложение.

Цель приложения-обновления - разместить случаи, когда получение нового основного приложения exe недостаточно. Я также использую его для обновления самого приложения запуска (то, почему запуск запускается, как только он запускает программу обновления), BTW дает Windows немного времени, прежде чем пытаться перезаписать исполняемый файл laucher)

Ответ 2

Я столкнулся с тем же вопросом некоторое время назад, поэтому я написал небольшую библиотеку (updater4pyi), чтобы сделать именно это в Mac OS X, Linux и Windows. Вы можете получить его из PyPI, например, с помощью

> pip install updater4pyi

Исходный репозиторий находится по адресу: https://github.com/phfaist/updater4pyi.

Это небольшой и не очень зрелый проект. Он должен быть максимально гибким, не полагаясь, например, на какой-либо конкретный набор инструментов gui. Я проверил некоторые тесты на разных платформах, но могут быть ошибки. Я надеюсь, что это может быть полезно и для кого-то другого.

Ответ 3

Существует также http://www.pyupdater.org/ Я вижу, что здесь не цитируется

Ответ 4

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

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