Google“奥马哈”(Chrome的自动更新引擎)有什么经验?

Google已经开源谷歌浏览器中使用的自动更新机制,如奥马哈 。

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

我们使用奥马哈为我们的产品。 最初有相当多的工作来改变硬编码的URL和string。 此外,服务器不是开源的,但协议是有据可查的,因此使用Google App Engine创build兼容的服务器并不困难。

抛开我们的旧客户端更新解决scheme,并与奥马哈一起工作,没有遗憾。

也许,您可以利用小提琴algorithm ,这是Google Chrome中使用的更新机制。 这非常容易使用和应用到您的基础设施。 目前,它只适用于Windows操作系统。 Chrome的Windows用户以小块接收更新,而Mac和Linux用户仍然以总大小收到大块数据。

您可以在Chromium SVN存储库中find源代码。 这是一个压缩algorithm,将较小的更新应用到Google Chrome,而不是始终发送整个分发。 而不是把整个10 MB推送给用户,你可以推动变化的差异。

关于小胡瓜如何工作的更多信息可以在这里find,官方的博客文章在这里 。

它是这样工作的:

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中右键单击编译),并且可以使用该窗体中的应用程序进行testing:

用法:

  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> 

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

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

UPDATE

  • 如果您不了解c ++,python或com,那么定制google omaha并不容易。
  • 更新不经常发布
    • crystalnix / omaha是由社区pipe理,他们试图将主要的回购合并到他们的; 附加function被实现,基本的东西被固定
    • 谷歌/奥马哈更加积极和谷歌的变化被添加,但不经常
  • 要以任何语言实现手动更新,您可以使用com类

恢复

  • 谷歌奥马哈还活着,但以一种懒惰的方式
  • 错误是固定的,但不要期望修补程序
  • 谷歌奥马哈适合从Windows Vista和以上支持的Windows客户端应用程序
  • 我正在使用的服务器端也支持跨平台支持
  • 服务器也支持反馈和崩溃
    • 反馈与谷歌协议缓冲区发送
    • 崩溃处理是用breakpad完成的

我个人会去谷歌奥马哈,而不是实施我自己的解决scheme。 不过我们会讨论这个内部的。

我刚刚花了几天configuration奥马哈。 这是乏味的,但不是不可能的。 我在详细的教程中总结了所需的步骤。 我使用omaha-server作为后端。 我还不能评论生产使用,但会更新这个答案,因为我了解更多。

一个自动更新机制是我自己编码的东西,并且总是在过去。 除非你有一个多GB的应用程序,并且只想上传零碎,只需要依靠自己的代码/安装程序。 这就是说,我没有看过Google的开源库,甚至不知道它存在。 我无法想象它提供了什么优于你自己编码的东西,并且你自己的代码不受任何许可限制的约束。