Google已将Google Chrome中使用的自动更新机制开源为Omaha。
对于任何不是谷歌的人来说,配置似乎相当复杂和困难。在项目中使用奥马哈的经验是什么?可以推荐吗?
答案 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)
<强>更新强>
恢复
我个人会去谷歌奥马哈而不是实施我自己的解决方案。但是我们将讨论这个内部。
答案 3 :(得分:1)
在.NET世界中,您可能需要查看ClickOnce部署。
答案 4 :(得分:1)
我只花了几天配置奥马哈。这很乏味,但并非不可能。我在详细的tutorial中总结了所需的步骤。我使用omaha-server作为后端。我还不能评论生产用途,但会在我了解更多时更新此答案。
答案 5 :(得分:0)
自动更新机制是我亲自编写代码的东西,并且过去总是如此。除非你有一个数千兆字节的应用程序并且只想上传点点滴滴,否则只需依靠你自己的代码/安装程序。也就是说,我根本没看过谷歌的开源库......甚至不知道它存在。我无法想象它会提供比您自己编码更优越的东西,并且使用您自己的代码,您不受任何许可限制的约束。