Google'Omaha'(他们的Chrome自动更新引擎)的体验是什么?

时间:2010-09-14 17:37:15

标签: google-chrome auto-update

Google已将Google Chrome中使用的自动更新机制开源为Omaha

对于任何不是谷歌的人来说,配置似乎相当复杂和困难。在项目中使用奥马哈的经验是什么?可以推荐吗?

6 个答案:

答案 0 :(得分:30)

我们使用奥马哈作为我们的产品。最初,改变硬编码的URL和字符串有相当多的工作。此外,服务器不是开源的,但协议已有详细记录,因此使用Google App Engine创建兼容服务器并不困难。

毫无遗憾地放弃我们的旧客户端更新解决方案并与奥马哈合作。

答案 1 :(得分:16)

也许,您可以利用courgette algorithm,这是Google Chrome中使用的更新机制。它非常易于使用并适用于您的基础架构。目前,它只适用于Windows操作系统。 Chrome的Windows用户会以小块的形式接收更新,而Mac和Linux用户仍然会收到总大小的块。

您可以在here SVN存储库中找到源代码Chromium。这是一种压缩算法,可将小型更新应用于Google Chrome,而不是始终发送整个发行版。而不是将整个10 MB推送给用户,您可以只推动更改的差异。

有关Courgette如何运作的更多信息可以在here和关于它的官方博客文章here找到。

它的工作原理如下:

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>

或者,您可以在应用程序中包含该内容并从那里进行更新。您可以通过创建自己的服务来模仿奥马哈自动更新环境,定期检查并运行Courgette。

答案 2 :(得分:2)

<强>更新

  • 如果你不了解c ++,python或com,那么定制google omaha就不那么容易了。
  • 不经常发布更新
  • 要使用任何语言实施手动更新,您可以使用com classes

恢复

  • google omaha仍然活着但是懒惰
  • 修复了错误但不希望修补程序
  • google omaha适合从windows vista及更高版本支持的Windows客户端应用
  • 我正在使用支持的服务器端也支持跨平台支持
  • 服务器上也支持反馈和崩溃
    • 使用Google协议缓冲区发送反馈
    • 使用breakpad完成崩溃处理

我个人会去谷歌奥马哈而不是实施我自己的解决方案。但是我们将讨论这个内部。

答案 3 :(得分:1)

在.NET世界中,您可能需要查看ClickOnce部署。

答案 4 :(得分:1)

我只花了几天配置奥马哈。这很乏味,但并非不可能。我在详细的tutorial中总结了所需的步骤。我使用omaha-server作为后端。我还不能评论生产用途,但会在我了解更多时更新此答案。

答案 5 :(得分:0)

自动更新机制是我亲自编写代码的东西,并且过去总是如此。除非你有一个数千兆字节的应用程序并且只想上传点点滴滴,否则只需依靠你自己的代码/安装程序。也就是说,我根本没看过谷歌的开源库......甚至不知道它存在。我无法想象它会提供比您自己编码更优越的东西,并且使用您自己的代码,您不受任何许可限制的约束。