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

Каков наилучший способ автоматического обновления приложения Windows?

Google Chrome автоматически обновляет каждые пять часов. Я хочу клонировать эту точную функциональность в своем приложении. Каков наилучший способ реализовать эту функцию в Windows?

4b9b3361

Ответ 1

Для репликации поведения этого обновления вам понадобятся две вещи:

  • Приложение для обновления, которое регулярно проверяет наличие обновлений. Если обновление найдено, оно должно установить его автоматически. Большинство коммерческих инструментов для создания настроек включают хорошие приложения для обновления. Вы можете попробовать написать обновление самостоятельно, но это не так просто, как кажется.

  • Индивидуальные установки для каждой версии вашего продукта. Установка для каждого пользователя записывает данные только в папку профиля пользователя (AppData, Роуминг и т.д.) И HKEY_CURRENT_USER. Нет файлов программы или HKEY_LOCAL_MACHINE.

Требуются установки для каждого пользователя, чтобы вы могли выполнить обновление без пауз. Если установка выполняется на машине, более новая версия Windows покажет приглашение на повышение, и пользователь не будет знать, что происходит.

Обновление

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

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

В обоих сценариях вам необходимо учитывать, что Updater может потребоваться обновить себя. Таким образом, процесс, который выполняет обновление, должен быть временным процессом (например, временной копией приложения для обновления). Он также должен работать без повышения. Вот почему услуга не такая хорошая идея. Он должен остановиться перед обновлением, использовать временный процесс, который обрабатывает обновление и запускается снова по завершении.

Другие вещи для рассмотрения:

  • проблемы с разрешениями (если для процесса обновления требуются какие-либо привилегии или возвышение)
  • скачать места
  • механизм обнаружения обновлений (как Updater определяет, установлена ​​ли новая версия или нет)

Обновления

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

Большинство обновлений - это установочные пакеты (например, MSI) или патчи (MSP). Это лучший подход, поскольку они обрабатывают всю логику обновления:

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

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

Обновления работают двумя способами:

Установщик Windows имеет большую поддержку для обоих из них, поэтому вы можете использовать пакеты MSI и заплаты MSP, Он также поддерживает тихие установки, поэтому все, что требуется вашему Updater, - это выполнить пакет с параметром командной строки.

Эти пакеты также поддерживают установку для каждого пользователя или каждого компьютера через свойство ALLUSERS.

Обновление распространения

После того, как вы решите установить Updater и некоторые пакеты обновлений, вам также нужен механизм распространения:

  • способ сообщить обновителю, что обновления доступны (например, файл информации об обновлениях на вашем сервере)
  • способ определить, установлено ли обновление или нет (поэтому он был установлен только один раз)

Все это не очень просто. Вот почему многие продукты используют сторонние обновления. Даже некоторые инструменты для создания коммерческих инструментов предлагают обновления для ваших пакетов.

Пользовательский updater в основном используется очень крупными компаниями с большим количеством продуктов, потому что инвестиции для них достойны.

Ответ 2

Если вы хотите иметь такую ​​же функциональность, вы можете. Google открыла его.

https://github.com/google/omaha