Каков опыт работы с 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 и даже не знал, что она существует. Я не могу себе представить, что он предлагает что-либо, превосходящее то, что вы могли бы закодировать сами, и своим собственным кодом вы не связаны никакими лицензирующими ограничениями.