fbpx

Обновление вашего приложения с помощью Esky — wxPython #48

автор

В проект wxPython, начиная с версии 2.9 была добавлена возможность обновлять ваши приложения с помощью новой библиотеки, которая называется wx.lib.softwareupdate. Возможность обновлять программное обеспечение была реализована посредством смешанного класса, использующего пакет Esky. Насколько мне известно, данная технология позволяет проводить только запрашиваемые обновления и не работает в фоновом режиме.

Приступая к работе

Если у вас не установлена Esky, то вы можете сделать это посредством pip

В зависимости от того, какой платформой вы пользуетесь, вам также может понадобиться загрузка пакета двоичного программирования. Например, если вы пользуете Windows, вам понадобится py2exe, в случае использования Macpy2app. Мы будем создавать простое средство просмотра фотографий, в которое мы затем добавим обновление. В данной статье мы работаем на Windows, но на Mac процесс не должен отличаться. Вы можете использовать pip для установки py2exe и py2app.

Нам также понадобится иерархия папок, которая должна будет выглядеть примерно так:

Теперь вам нужно создать начальную версию программного обеспечения и сохранить её в папке image_viewer0.0.1.

Добавление кода обновления в начальный релиз

Так как мы знаем, что в будущем нам нужно будет добавлять дополнительные функции, мы пишем программу таким образом, чтобы она могла самостоятельно обновляться. Давайте взглянем на первую версию программного обеспечения:

Для активации обновления программного обеспечения, нам нужно импортировать класс SoftwareUpdate из wx.lib.softwareupdate. Теперь нам нужно создать подкласс для обеих wx.App и SoftwareUpdate, так как SoftwareUpdate является смешанным классом.

Мы собрали ТОП Книг для Python программиста которые помогут быстро изучить язык программирования Python. Список книг: Книги по Python

Затем в конструкторе __init__ нам нужно вызвать InitUpdates с помощью URL по нашему выбору плюс та URL, которая связана с ChangeLog.txt. Мы настраиваем отображение названия приложения и, наконец, вызываем CheckForUpdate. Вот и всё. Теперь нам нужно запаковать всё это в исполняемый файл.

Вам нужно будет создать скрипт setup.py, в котором будет код, размещённый ниже, и поместить его в ту же директорию, где лежит начальный скрипт релиза.

Вам также понадобиться файл version.py, в котором будет следующее:

Теперь вы действительно готовы к созданию исполнительного файла. Откройте терминал (cmd.exe в Windows), и укажите папку, куда вы поместили все эти файлы. Вам также стоит положить в папку несколько иконок, которые вы сможете найти в хранилище кода книги (для более детальной информации ознакомьтесь с введением).

Вам это нужно, так как скрипт setup.py написан таким образом, что будет искать иконки. Окей, теперь нам нужно создать дистрибутив. Впечатайте следующие строки в ваш терминал:

Эта команда предполагает, что в вашем пути файла есть Python. Если же нет, вам нужно будет добавить или просто изменить полный путь к Python. Как только вы запустите эту команду, вы увидите целую кипу исходящих данных. Если всё пройдёт нормально, в конце у вас будет две папки build и dist. Нас не особо интересует первая из них. Во второй папке должен быть лишь один файл, который называется как-то так: wxImageViewer-0.0.1.win32.zip

Подготовка нового релиза

Вашим пользователям нравится, когда приложении появляются новые возможности. Начальная версия нашей программы позволял только использовать проводник для поиска необходимого файла. Давайте добавим несколько новых опций в ваше приложение:

  • Кнопки «Вперёд» и «Назад», чтобы вы могли перемещаться между файлами в папке.
  • Возможность запуска «Слайд-шоу».

Так как это будет новый релиз, создайте в Python новый скрипт с таким же названием, как и у первоначального, а затем сохраните его в папке image_viewer0.1.0, созданной нами ранее.’

Мы собрали ТОП Книг для Python программиста которые помогут быстро изучить язык программирования Python. Список книг: Книги по Python

Для того, чтобы всё было крайне просто – скопируйте код, который вы найдёте ниже, в ваш скрипт. Или же вы можете взять первоначальную версию кода и обновлять её в процессе. Я оставлю это решение за вами. Следующий сниппет достаточно длинный, так что я разобью его на несколько логических блоков, чтобы мне было проще вам всё объяснить.

Первое что вам броситься в глаза, это разбивка приложения на серии классов. Теперь у нас есть ViewerPanel, содержащая все главные виджеты. Также вы заметите, что появились кнопки для навигации между всеми изображениями папки. У нас также есть функция слайд-шоу, которая будет переключать изображения из папки каждые три секунды.

Здесь мы создали подкласс из wx.Frame. Мы добавили простую панель инструментов, позволяющую открыть папку с изображениями. Кроме указанных функций, данный класс больше ничего не делает. Как бы то ни было, вы можете расширить функциональность посредством добавления панели состояния или меню.

Последним классом здесь является SoftwareUpdate смешанный с wx.App. Он также подтверждает класс фрейма. Это довольно прямолинейны класс, так что в будущем вам не удастся с ним взаимодействовать.

Теперь нам нужно взглянуть на новую версию setup.py, так как она немного отличается.

Этот второй скрипт использует пабсаб из wxPython. В любом случае, py2exe самостоятельно этого не узнает, так что вам нужно указать ей на точное расположение пабсаб файлов, требующих захвата.

Мы собрали ТОП Книг для Python программиста которые помогут быстро изучить язык программирования Python. Список книг: Книги по Python

Не забудьте убедиться в том, что ваша версия файла version.py имеет более высокое релизное значение, чем оригинальный файл, иначе обновление не удастся. Вот какое я указал в своём приложении:

Теперь нам нужно повторить тот же фокус с командной строкой, за исключением того, что в этой раз мы проделываем его с обновлённой директорией релиза.

Скопируйте zip-файл в вашу папку downloads. Теперь нам нужно разместить эти файлы на localhost вашего компьютера. Чтобы сделать это войдите в вашу папку с загрузками посредством командной строки и запустите следующую команду:

Теперь Python запустит небольшой HTTP-сервер, на котором размещены эти файлы. Если вы вставите в адресную строку вашего браузера http://127.0.0.1:8000 и перейдёте по этой ссылке, вы увидите это своими глазами. Теперь вы готовы к процессу обновления!

Обновление программы

Убедитесь в том, что вы разархивировали первоначальную версию вашего средства для просмотра изображений в какую-то из папок вашего компьютера. Затем запустите файл, который называется image_viewer.exe. Если всё идёт по плану, вы увидите следующее окно:

Продолжите, согласитесь на обновление, и программа попросит вас перезапустить приложение:

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

Итоги

Сейчас вы уже должны быть готовы к тому, чтобы играть по-крупному. Вы также можете использовать AutoCheckForUpdate вместо CheckForUpdate, указав определённый промежуток между уведомлениями, чтобы они не выскакивали каждый раз, когда вы будете запускать программу.

Или, если вы хотите просто разместить функцию CheckForUpdate в хэндлер событий, использующий тригеры. Множество приложений так и делают, позволяя пользователю найти в меню пункт «Проверка обновлений». Используйте вашу навигацию и начинайте хакать! Существует также конкурент Esky, который называется goodasnew, так что вы можете использовать и его. Пока что он не интегрирован в wxPython, но кто знает, что может случиться в будущем.

Вам может быть интересно

Scroll Up