Mar*_*ark 60 google-chrome auto-update
Google已将谷歌Chrome中使用的自动更新机制开源为奥马哈.
对于任何不是谷歌的人来说,配置似乎相当复杂和困难.在项目中使用奥马哈的经验是什么?可以推荐吗?
Bev*_*ins 30
我们使用奥马哈作为我们的产品.最初,改变硬编码的URL和字符串有相当多的工作.此外,服务器不是开源的,但协议已有详细记录,因此使用Google App Engine创建兼容服务器并不困难.
放弃我们的旧客户端更新解决方案并与奥马哈合作并不后悔.
Moh*_*our 16
也许,您可以利用courgette算法,这是Google Chrome中使用的更新机制.它非常易于使用并适用于您的基础架构.目前,它只适用于Windows操作系统.Chrome的Windows用户会以小块的形式接收更新,这与仍然收到总大小的块的Mac和Linux用户不同.
你可以找到源代码这里的铬 SVN仓库.这是一种压缩算法,可将小型更新应用于Google Chrome,而不是始终发送整个发行版.您可以只推送更改的差异,而不是将整个10 MB推送给用户.
有关Courgette如何运作的更多信息可以在这里找到,官方博客文章可以在这里找到.
它的工作原理如下:
Run Code Online (Sandbox Code Playgroud)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>
Run Code Online (Sandbox Code Playgroud)
或者,您可以在应用程序中包含该内容并从那里进行更新.您可以通过创建自己定期检查和运行Courgette的服务来模仿奥马哈自动更新环境.
自 2016 年以来,我一直在各种项目中使用 Omaha。这些项目有少数到数百万个更新客户端。目标操作系统主要是 Windows,但也有一些 Linux 设备和(通过 Sparkle)macOS。
Omaha 很难设置,因为它需要您编辑Google 的 C++ 实现。您还需要一个相应的服务器。标准实现是omaha-server,并非来自 Google。但是,作为回报,它还支持 Sparkle 在 Mac 上进行自动更新(因此我在上面提到了 Sparkle)。
虽然设置上述组件很困难,但一旦配置它们,它们就可以很好地工作。鉴于 Google 使用 Omaha 更新数百万(数十亿?)台设备,这可能并不奇怪。
为了帮助其他人开始使用 Omaha,我编写了一个教程,快速概述了它的工作原理。
自动更新机制是我亲自编写的,并且过去一直都有。除非您有一个多千兆字节的应用程序并且只想上传零碎的内容,否则只需依靠您自己的代码/安装程序即可。也就是说,我根本没有看过谷歌的开源库......甚至不知道它的存在。我无法想象它提供的东西比您自己编写的代码更好,并且使用您自己的代码,您将不受任何许可限制的约束。
归档时间: |
|
查看次数: |
15318 次 |
最近记录: |