Google открыла механизм автоматического обновления, используемый в Google Chrome, как Omaha.
Кажется довольно сложным и трудным для настройки для любого, кто не является Google. Каков опыт использования Омахи в проектах? Можно ли его рекомендовать?
Google открыла механизм автоматического обновления, используемый в Google Chrome, как Omaha.
Кажется довольно сложным и трудным для настройки для любого, кто не является Google. Каков опыт использования Омахи в проектах? Можно ли его рекомендовать?
Мы используем Omaha для наших продуктов. Первоначально было довольно много работы по изменению жестко заданных URL-адресов и строк. Кроме того, сервер не является открытым исходным кодом, но протокол хорошо документирован, поэтому создать совместимый сервер с помощью Google App Engine не составит труда.
Нет никаких сожалений в том, что мы отказываемся от нашего старого решения для обновления клиента и отправляемся в Omaha.
Возможно, вы можете использовать алгоритм каббата, который является механизмом обновления, который используется в Google Chrome. Он действительно прост в использовании и применяется к вашей инфраструктуре. В настоящее время он работает только для операционных систем Windows. Пользователи Windows Chrome получают обновления в небольших кусках, в отличие от пользователей Mac и Linux, которые все еще получают куски в общем размере.
Вы можете найти исходный код здесь в Chromium Репозиторий SVN. Это алгоритм сжатия для применения небольших обновлений для Google Chrome, а не для отправки всего дистрибутива все время. Вместо того, чтобы нажимать на пользователя весь 10 MB, вы можете просто изменять различия.
Более подробную информацию о том, как работают Кабриолеты, можно найти здесь и официальное сообщение в блоге об этом .
Он работает следующим образом:
server: hint = make_hint(original, update) guess = make_guess(original, hint) diff = bsdiff(concat(original, guess), update) transmit hint, diff client receive hint, diff guess = make_guess(original, hint) update = bspatch(concat(original, guess), diff)
Когда вы проверяете источник, вы можете скомпилировать его как исполняемый файл (щелчок правой кнопкой мыши в Visual Studio), и вы можете использовать приложение в этой форме для тестирования:
Применение:
courgette -dis <executable_file> <binary_assembly_file>
courgette -asm <binary_assembly_file> <executable_file>
courgette -disadj <executable_file> <reference> <binary_assembly_file>
courgette -gen <v1> <v2> <patch>
courgette -apply <v1> <patch> <v2>
Или вы можете включить это в свое приложение и делать обновления оттуда. Вы можете имитировать автоматическую среду обновления Omaha, создав свой собственный сервис, который вы периодически проверяете и запускаете Courgette.
В мире .NET вы можете взглянуть на ClickOnce развертывание.
UPDATE
Резюме
Я лично перешел на google omaha вместо того, чтобы реализовать свое собственное решение. Однако мы обсудим это внутреннее.
Я просто потратил несколько дней на настройку Омахи. Это утомительно, но не невозможно. Я кратко изложил требуемые шаги в подробном tutorial. Я использую omaha-server для бэкэнд. Я еще не могу комментировать производство, но буду обновлять этот ответ, когда узнаю больше.
Механизм автообновления - это то, что я сам король себя и всегда имел в прошлом. Если у вас нет приложения с несколькими гигабайтами и вы хотите загружать только биты и фрагменты, просто полагайтесь на свой собственный код/установщик. Тем не менее, я вообще не смотрел открытую библиотеку Google и даже не знал, что она существует. Я не могу себе представить, что он предлагает что-либо, превосходящее то, что вы могли бы закодировать сами, и своим собственным кодом вы не связаны никакими лицензирующими ограничениями.