Каков опыт работы с Google "Омаха" (их механизм автоматического обновления для Chrome)?
Google открыла механизм автоматического обновления, используемый в Google Chrome, как Omaha.
Кажется довольно сложным и трудным для настройки для любого, кто не является Google. Каков опыт использования Омахи в проектах? Можно ли его рекомендовать?
Ответы
Ответ 1
Мы используем Omaha для наших продуктов. Первоначально было довольно много работы по изменению жестко заданных URL-адресов и строк. Кроме того, сервер не является открытым исходным кодом, но протокол хорошо документирован, поэтому создать совместимый сервер с помощью Google App Engine не составит труда.
Нет никаких сожалений в том, что мы отказываемся от нашего старого решения для обновления клиента и отправляемся в Omaha.
Ответ 2
Возможно, вы можете использовать алгоритм каббата, который является механизмом обновления, который используется в 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.
Ответ 3
В мире .NET вы можете взглянуть на ClickOnce развертывание.
Ответ 4
UPDATE
- Настройка google omaha не так проста espacialy, если у вас нет знаний о С++, python или com.
- Обновления не публикуются часто
- Чтобы внедрить обновления вручную на любом языке, вы можете использовать классы com
Резюме
- google omaha все еще жив, но ленивым способом
- исправлены ошибки, но не ожидаются исправления
- google omaha подходит для клиентских приложений Windows, поддерживаемых в Windows Vista и выше
- серверная часть, которую я использую, поддерживает также поддержку для кроссплатформенной поддержки.
- Обратная связь и сбои также поддерживаются на сервере
- обратная связь отправляется с буферами протокола google
- Обработка аварийных сообщений выполняется с помощью передовой панели
Я лично перешел на google omaha вместо того, чтобы реализовать свое собственное решение. Однако мы обсудим это внутреннее.
Ответ 5
Я просто потратил несколько дней на настройку Омахи. Это утомительно, но не невозможно. Я кратко изложил требуемые шаги в подробном tutorial. Я использую omaha-server для бэкэнд. Я еще не могу комментировать производство, но буду обновлять этот ответ, когда узнаю больше.
Ответ 6
Механизм автообновления - это то, что я сам король себя и всегда имел в прошлом. Если у вас нет приложения с несколькими гигабайтами и вы хотите загружать только биты и фрагменты, просто полагайтесь на свой собственный код/установщик. Тем не менее, я вообще не смотрел открытую библиотеку Google и даже не знал, что она существует. Я не могу себе представить, что он предлагает что-либо, превосходящее то, что вы могли бы закодировать сами, и своим собственным кодом вы не связаны никакими лицензирующими ограничениями.