![]() |
1
3
我建议,与其重新设计自己的更新管理系统,不如看看开源选项,例如 google updater (这是一年前公开采购的 Omaha )--我认为Windows Focus是可以的,因为您专门指的是Windows,但是如果您还需要Mac支持,中提供了类似的功能。 update engine (对于Linux,您可能希望使用特定发行版的包管理系统,而不是使用任何附加组件)。 正如你将在 omaha overview ,重点不是确定和应用“delta”,而不是完全更新,而是为了用户的方便(以及安全性,当更新解决潜在的安全问题时),自动化过程。至于区别,我建议表现得类似于版本控制系统,比如 subversion (事实上,毫无疑问,您可以重用SVN的许多代码)--只有文本文件是不同的,二进制文件的“差异”是全部或全部(对于大多数二进制文件格式来说,如果有的话,在尝试发送少于整个新文件的过程中,如果完全改变了,那么获得的收益就太少了;尤其是对于图像,以及更普遍的各种压缩文件,通常情况下,底层内容的微小变化会对生成的文件产生巨大的变化)。 如果您认为某些或所有二进制文件实际上可能会受益于使用差异和增量补丁的方法,而不是逐个文件替换全部或全部文件,那么我建议您首先尝试使用专门的实用程序,例如 jojodiff 为了验证——如果确实是这样(可能只针对某些文件,而其他文件也可能被完全替换),您可以用更新程序打包它的补丁部分(并将其作为python的子进程运行,等等)。 至于在服务器上维护delta,一个混合的方法应该是有效的:即,当增量操作的优势变得太小而不能保证成本时,您将尝试保留所有(二次数)更新(从a a+1、a a+2、a+1 a+2等),但“切断”每个分支(有利于完全替换方法)。占用服务器上的存储空间和客户机上的处理时间(当然,除了启发式方法(也称为“尝试/实验并查看”),没有其他方法可以确定“太小”的阈值;-。 |
![]() |
2
1
您的更新管理器可以知道当前应用程序是哪个版本,哪个版本是最新版本,并且只应用相关补丁。 假设用户运行0.38,当前有0.42可用。0.42的更新包含0.39、0.40、0.41和0.42的补丁(可能在历史的更深处)。更新管理器下载0.42更新,知道它在0.38,并应用所有相关补丁。如果它当前运行0.41,它只应用最新的补丁,依此类推。 |
![]() |
Dsujan · 从第二个文件中获取更改行的差异 7 年前 |
![]() |
Damian Nadales · 让vc修订版其他窗口删除它获取的文件 7 年前 |
|
book · bash:如何打印diff命令输出? 7 年前 |
![]() |
lombocska · Liquibase diff-驱动程序问题 7 年前 |
![]() |
bitifet · 如何创建类似VCS的冲突合并文件? 7 年前 |