当一款软件被安装在用户系统当中之后,我们该如何保持其始终紧随更新进度?尽管Linux用户们通常会利用软件包管理系统从选定的库中获取***版本,但其它系统的用户往往就没那么幸运了。有鉴于此,我们开发出一款开源工具来实现这一目标,其基于来自谷歌的Omaha开源协议。
几年之前,谷歌公司发布了一套名为Omaha(也被称为Google Update)的开源协议,并将其作为其Chromium项目中的组成部分。该协议旨在帮助用户以更为轻松的方式完成复杂的桌面软件更新流程。
就目前而言,Omaha被主要应用在各类谷歌产品当中,例如谷歌Chrome或者谷歌地球。其Google Update系统则主要在Windows软件领域发挥作用,旨在实现自动化更新流程; 谷歌软件的Linux版本仍然依赖于Linux发行版当中自带的各类软件包管理器。Google Update的主要优势在于,该框架能够被整合到任何需要支持自动化更新功能的软件当中,并具备对单一来源的各类新补丁及更新加以管理的能力(同时能够收集错误报告)。
目前谷歌公司已经发布了一款通用型客户端,用于支持Omaha协议。该客户端的服务器实现方案尚未发布,而且用户需要利用具备基础常见命令支持能力的基础版本才能将Google Update集成到自有软件当中。我所效力的公司希望帮助开发基于自定义Chromium的浏览器,因此我们开发并发布了其服务器开源版本,这样Google Update系统的潜在用户将能够拥有完整的访问流程,并非常顺利地将方案与自己的软件加以集成。
除了Omaha协议之外,我们的实现方案还包含对Sparkle的支持能力——Sparkle是Mac OS X软件领域中一套广受好评的更新框架。除此之外,我们还将自己的实现方案与管理员面板相结合,希望借此简化版本管理、alpha与beta版本分部升级以及错误报告工具等功能。
我们一直在密切关注其部署流程,并帮助用户利用简单命令设置一套生产或者开发环境。最终,我们选择了开放性Docker平台,其不仅能够让分发流程更具灵活性,同时允许用户在任意给定服务器中的隔离环境下运行该镜像。大家能够轻松将其部署在任意云环境当中。
为了与更多人分享Omaha服务器,我们开发出了一套演示方案(点击此处查看),其中囊括了更多细节、完整的文件,并通过GitHub进行示例共享,且接收热心参与者们的项目贡献。
对于该客户端,我们对谷歌的实现方案进行了fork以保持其与Visual Studio各现代版本之间的兼容效果,并在流程整合的同时改进了用户体验。不过根据Chromium的群发通知邮件,该谷歌客户端目前仍处于开发过程当中,因此系统成果仅仅适用于内部环境,这意味着未来几年内该公司都不会发布***补丁。目前的客户端版本还无法支持一部分协议功能,例如CodeRed(允许用户在安装失败之后恢复原先版本)。该客户端的版本同样被托管在GitHub中的独立库当中,全部源代码都基于Apache 2.0许可发布。
我们希望自己的方案能够简化各位开源爱好者及企业客户的日常工作体验,帮助大家在Chromium OS或者Chrmium浏览器之上建立起自己的基础设施,并带来一套适用于生产环境的服务器/客户端方案链。除此之外,大家也可以将该系统视为适合与更新流程较为复杂的项目相匹配的高效更新解决方案。