Автоматическая проверка обновлений программы [C#]

UpdateКогда-то писал статью, как сделать автоматическую проверку программы. Там был описан способ с использованием связки Delphi + PHP. В этой же статье опишу, как сделать тоже самое, только без использования PHP. Достаточно будет простого сервачка 🙂
Кстати, в примере будет использоваться Inno Setup для создания инсталлятора. С его помощью намного удобнее как устанавливать программу, так и обновлять ее (будет использоваться «тихий» режим установки при обновлении).

Полностью весь код приводить в статье не буду, т.к. придется слишком много описывать простых вещей. Готовый проект можно взять в исходниках, ссылка на которые в конце статьи.

Суть заключается в следующем: программа будет запускать апдейтер и передавать в качестве аргументов командной строки версию и ссылку на файлик, в котором будет записана последняя версия программы и ссылка на инсталлятор этой версии в формате:

Апдейтер будет получать эти параметры, переходить по ссылке, парсить содержимое файлика, сверять версию в файлике с версией, которую ему передала программа и если версия в файлике больше, то скачивать последнюю версию программы (инсталлятор) и запускать с ключем /VERYSILENT.
Как видите, ничего сложного 🙂

Собственно, ниже приведен код класса Updater:

И пример использования:
Конструктор главной формы апдейтера:

в нем берем аргументы командной строки и передаем их в конструктор класса Updater.
В обработчике события Load главной формы следует вызвать метод CheckForUpdates, код которого представлен ниже:

В этом методе вызывается метод CheckForUpdates класса Updater. В нем реализован алгоритм, о котором я писал выше: вызываем метод GetReleaseLink (получение ссылки для скачивания инсталлятора), который возвращает либо строку со ссылкой, либо пустую строку (это значит, что обновление не требуется). Если была возвращена ссылка, то скачиваем инсталлятор во временную папку, закрывает главное окно программы и запускаем инсталлятор с ключем /VERYSILENT. Инсталлятор автоматически обновит программу и запустит ее после обновления, при этом не будет выдавать никаких окон и т.п. (по крайней мере, не должен 🙂 ).

Теперь перейдем к программе.
В программе нужно объявить несколько переменных:

первая хранит в себе текущую версию программы (ее следует изменять, после выпуска новой версии), вторая константа содержит в себе ссылку на тот самый файлик 🙂 , в котором хранится последняя версия программы и ссылка на нее и третья — название файла апдейтера (чисто для удобства).
В обработчике Load главной формы программы следует вызвать метод CheckForUpdates, код которого представлен ниже:

Этот метод запустить апдейтер с нужными параметрами (текущей версией и ссылкой) и будет ждать завершения работы апдейтера.
Вот и всё 🙂

Исходники можно найти, как всегда, на GitHub.

Кстати, в репозитории можно скачать рабочий пример и посмотреть наглядно, как это выглядит.
Скачивать нужно файл updater_example_setup_1.0.0.exe , установить и запустить программу. После запуска появится окно, в котором можно увидеть текущую версию:
2014-07-31 18-32-26 Скриншот экраначерез несколько секунд программа обновится и версия будет уже другой 🙂
2014-07-31 18-34-10 Program

Запись опубликована в рубрике Статьи по C# с метками , , . Добавьте в закладки постоянную ссылку.

Один ответ на “Автоматическая проверка обновлений программы [C#]

  1. anton говорит:

    спасибо за статью!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *