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