Автоматическое обновление в стиле Google Chrome

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

У меня уже есть что-то запущенное, но это больше похоже на грязный взлом, чем на то, что мне нравится об этом. Итак, я хотел бы знать, как спроектировать и реализовать такое решение. Мой ужасный хакер работает следующим образом:

  1. У меня есть механизм, чтобы проверить, существует ли новая версия (запрос к базе данных или веб-сервис)

  2. Загрузите полный zip-архив со всей новой версией.

  3. Проверить подпись файла. Если все прошло хорошо, установите для параметра реестра: must update значение true.

  4. При перезапуске приложения, если значение must update имеет значение true, запустите программу обновления и существуйте.

  5. Обновление удаляет содержимое папки приложения, распаковывает обновление и заменяет старое содержимое, запускает приложение и закрывается.

Теперь я хотел бы изменить его, чтобы оно работало чище. Я планирую отправить обновление в виде файла bsdiff . Он загружается. Но вопрос в том, что будет дальше?

Когда применять обновление? Кто отвечает за применение патча? это сама программа или это третья программа, как я, которая отвечает за применение патча и перезапуск приложения?

8
задан Sambatyon 23 May 2011 в 12:56
поделиться