C / C ++更新可执行文件?

时间:2015-10-21 15:13:43

标签: updates binaryfiles patch updating

我想问一下应用程序更新是如何工作的。我不明白!我举一个GTA V的例子。

当Rockstar发布补丁或更新时,如何在不再下载整个GB / MB或重新编译的情况下更新代码?更新后,您可以轻松开始游戏。

我在其他游戏中看到了类似的方法。他们修改了2MB的代码,更新程序只下载了2MB。修改后的代码进入游戏而不重新编译...我是愚蠢的还是为什么我不知道它是如何工作的? ...我的意思是,如果有一个5​​0MB的大.DLL文件,并且devoloper只编辑了1行,则更新程序不会再次下载50MB,相反它只获得1个编辑的行,是的...它在._。* ...

1 个答案:

答案 0 :(得分:2)

我认为你不知道申请binary patches的可能性。

基本上,我们的想法是,如果源代码中的更改很小并且二进制文件被重新编译,则非常大的部分将是相同的。可以利用它来发布尺寸也很小的补丁。

例如,假设您的50 MB二进制文件中只有10个字节被更改。一个智能工具可以做到这一点:取旧文件,忽略前23,678,789字节,然后用补丁内容替换接下来的10个字节,再删除2个字节,忽略下一个4332字节,添加一个,并保持其他一切不变。在适当的格式中,此补丁只需要几个字节。

当然,完整的补丁包含原始文件和修改过的文件的散列是合理的,以确保一切顺利,如果发生灾难,您可以重新下载整个文件。您可以添加签名以确保仅安装授权的修补程序。但基本的想法是你可以做二进制差异和补丁,这是绝对常见的。

相关问题