Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the experience with Google 'Omaha' (their auto-update engine for Chrome)?

Google has open-sourced the auto update mechanism used in Google Chrome as Omaha.

It seems quite complicated and difficult to configure for anybody who isn't Google. What is the experience using Omaha in projects? Can it be recommended?

like image 586
Mark Avatar asked Sep 14 '10 17:09

Mark


People also ask

Does Google Chrome update itself automatically?

Updates automatically Chrome checks for new updates regularly, and when an update is available, Chrome applies it automatically when you close and reopen the browser.

How do I stop Google Chrome from auto updating?

Go to "msconfig" from Win+R. Go to Service tab. Uncheck both "Google Update Service" boxes. Click OK and Restart computer to save changes.

How long do Chromebook updates last?

Google says all Chrome OS devices now receive regular upgrades for a minimum of six and a half years from when their chipset first appeared on the platform — which usually ends up meaning any given device will be updated for at least five years from its initial sale date.


2 Answers

We use Omaha for our products. Initially there was quite a bit of work to change hardcoded URLs and strings. We also had to implement the server ourselves, because there was not yet an open source implementation. Today, I would use omaha-server.

There are no regrets with ditching our old client update solution and going with Omaha.

like image 75
Bevan Collins Avatar answered Sep 20 '22 18:09

Bevan Collins


Perhaps, you can leverage the courgette algorithm, which is the update mechanism that is used in Google Chrome. It is really easy to use and apply to your infrastructure. Currently, it just works for Windows operating systems. Windows users of Chrome receive updates in small chunks, unlike Mac and Linux users who still receive the chunks in total size.

You can find the source code here in the Chromium SVN repository. It is a compression algorithm to apply small updates to Google Chrome instead of sending the whole distribution all the time. Rather than push the whole 10 MB to the user, you can push just the diff of the changes.

More information on how Courgette works can be found here and the official blog post about it here.

It works like this:

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) 

When you check out the source, you can compile it as an executable (right click compile in Visual Studio) and you can use the application in that form for testing:

Usage:

  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> 

Or, you can include that within your application and do the updates from there. You can imitate the Omaha auto update environment by creating your own service that you periodically check and run Courgette.

like image 45
Mohamed Mansour Avatar answered Sep 24 '22 18:09

Mohamed Mansour