Каков опыт работы с Google 'Omaha' (их механизм автоматического обновления для Chrome)? - PullRequest
59 голосов
/ 14 сентября 2010

Google открыл механизм автоматического обновления, используемый в Google Chrome, как Омаха .

Это кажется довольно сложным и сложным в настройке для всех, кто не является Google. Каков опыт использования Омахи в проектах? Можно ли это порекомендовать?

Ответы [ 6 ]

30 голосов
/ 01 сентября 2011

Мы используем Омаху для наших продуктов. Первоначально было довольно много работы по изменению жестко закодированных URL-адресов и строк. Кроме того, сервер не является открытым исходным кодом, но протокол хорошо документирован, поэтому было легко создать совместимый сервер с помощью Google App Engine.

Мы не сожалеем о том, что отказались от нашего старого решения по обновлению клиентов и перешли на Omaha.

16 голосов
/ 10 октября 2010

Возможно, вы можете использовать алгоритм цукини , который является механизмом обновления, который используется в Google Chrome . Это действительно легко использовать и применять в вашей инфраструктуре. В настоящее время это работает только для операционных систем Windows. Пользователи Chrome для Windows получают обновления небольшими порциями, в отличие от пользователей Mac и Linux, которые все еще получают порции в общем размере.

Вы можете найти исходный код здесь в репозитории Chromium SVN. Это алгоритм сжатия, позволяющий применять небольшие обновления к Google Chrome вместо постоянной отправки всего дистрибутива. Вместо того, чтобы выдавать пользователю целые 10 МБ, вы можете указать только разницу изменений.

Более подробную информацию о том, как работает Courgette, можно найти здесь и официальном сообщении в блоге об этом здесь .

Работает так:

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.

2 голосов
/ 14 июля 2016

ОБНОВЛЕНИЕ

  • Настройка Google Omaha не так проста, особенно если у вас нет знаний о C ++, Python или COM.
  • Обновления не являютсяопубликовано, что часто
  • Для реализацииОбновления вручную на любом языке вы можете использовать com классы

Резюме

  • Google Омаха все еще жива, но вленивый способ
  • исправлены ошибки, но не ожидаются исправления
  • google omaha подходит для клиентских приложений Windows, поддерживаемых из Windows Vista и выше
  • серверная сторона, которую я использую, также поддерживаетsparkle для поддержки кроссплатформенности
  • обратные связи и сбои также поддерживаются на сервере
    • обратные связи отправляются с помощью буферов протокола Google
    • обработка сбоев выполняется с помощью breakpad

Лично я бы пошел на Google Omaha вместо того, чтобы реализовать свое собственное решение.Однако мы обсудим это внутреннее.

1 голос
/ 01 августа 2016

Я только что провел несколько дней, настраивая Омаху. Это утомительно, но не невозможно. Я суммировал необходимые шаги в подробном учебнике . Я использую Омаха-сервер для бэкэнда. Я пока не могу комментировать производственное использование, но обновлю этот ответ, когда узнаю больше.

1 голос
/ 08 октября 2010

В мире .NET вы, возможно, захотите взглянуть на ClickOnce развертывание.

0 голосов
/ 26 сентября 2010

Механизм автообновления - это то, что я лично кодирую сам, и всегда буду иметь в прошлом. Если у вас нет приложения на несколько гигабайт и вы хотите загружать только фрагменты, просто положитесь на свой собственный код / ​​установщик. Тем не менее, я вообще не смотрел на библиотеку с открытым исходным кодом Google ... и даже не знал, что она существует. Я не могу себе представить, что он предлагает что-то превосходящее то, что вы могли бы написать самостоятельно, и с вашим собственным кодом вы не связаны никакими лицензионными ограничениями.

...