В компании меня попросили написать функцию автообновления а-ля хром. т.е. Он должен периодически проверять, доступна ли новая версия, загружать новую версию и автоматически применять ее при следующем запуске приложения.
У меня уже есть что-то работающее, но это больше похоже на грязный хак, чем на то, что меня радует. Итак, я хотел бы знать, как разработать и реализовать такое решение. Мой ужасный хак работает так:
Иметь механизм для проверки существования новой версии (запрос к базе данных или веб-служба).
Загрузите полный zip со всей новой версией.
Проверьте подпись файла. Если все прошло нормально, установите значение реестра: must update на true.
При перезапуске приложения, если значение обязательного обновления равно true, запустите программу обновления и существуйте.
Обновление удаляет содержимое папки приложения, разархивирует обновление и заменяет старое содержимое, запускает приложение и завершает работу.
Теперь я хотел бы изменить его, чтобы он работал чище. Я планирую отправить обновление в виде файла bsdiff. Его скачивают. Но вопрос в том, что будет дальше?
Когда применить обновление? Кто отвечает за применение патча? это сама программа или это третья программа, как я сделал, которая отвечает за применение патча и перезапуск приложения?