C++ 软件更新过程

C++ 软件更新过程,c++,updates,C++,Updates,我在qt中制作了一个小软件,它只有一个可执行文件和几个DLL。我希望有人能帮助我了解如何更新exe和DLL,而不必替换整个exe和DLL,写入对现有exe或dll所做的更改。如果在代码中对特定的dll或exe进行更改,则必须重新编译和重建dll或exe,然后覆盖现有的dll或exe。如果不这样做,我看不出你怎么可能对现有的exe或DLL进行更改。如果你在代码中对特定的DLL或exe进行更改,你必须重新编译和重建DLL或exe,然后覆盖现有的DLL或exe。我看不出,如果不这样做,你怎么可能对现有

我在qt中制作了一个小软件,它只有一个可执行文件和几个DLL。我希望有人能帮助我了解如何更新exe和DLL,而不必替换整个exe和DLL,写入对现有exe或dll所做的更改。

如果在代码中对特定的dll或exe进行更改,则必须重新编译和重建dll或exe,然后覆盖现有的dll或exe。如果不这样做,我看不出你怎么可能对现有的exe或DLL进行更改。

如果你在代码中对特定的DLL或exe进行更改,你必须重新编译和重建DLL或exe,然后覆盖现有的DLL或exe。我看不出,如果不这样做,你怎么可能对现有的exe或DLL进行更改。

你可能会感兴趣的是,谷歌使用哪种方式来为exe文件提供小差异

您可能会感兴趣的是,谷歌使用哪种方式将小差异传递给exe文件

您可以发布一个修补程序文件,其中包含用户现有版本的
.exe
.dll
文件与其现在需要使用的文件之间的差异

当然,您的构建过程仍然会生成完整的二进制文件集1,但这意味着您需要部署的文件更少

不过,这样做并不常见,因为对最终用户来说,这更复杂,而且(除非您的发行量很大),没有什么明显的好处


注1为什么这很重要?对您而言,以下两者之间的区别是什么:

  • 旧文件存在
  • 工具链用新信息覆盖文件
  • 新文件现在已存在

  • 旧文件存在
  • 工具链仅修改现有文件中已更改的字节
  • 新文件现在已存在
出于任何实际目的,我看不出第二种方法有什么好处。

您可以发布一个补丁文件,其中包含用户现有版本的
.exe
.dll
文件与其现在需要使用的文件之间的差异

当然,您的构建过程仍然会生成完整的二进制文件集1,但这意味着您需要部署的文件更少

不过,这样做并不常见,因为对最终用户来说,这更复杂,而且(除非您的发行量很大),没有什么明显的好处


注1为什么这很重要?对您而言,以下两者之间的区别是什么:

  • 旧文件存在
  • 工具链用新信息覆盖文件
  • 新文件现在已存在

  • 旧文件存在
  • 工具链仅修改现有文件中已更改的字节
  • 新文件现在已存在

出于任何实际目的,我看不出第二种方法有什么好处。

修改现有的exe可能会导致AV扫描仪将应用程序标记为已感染。为什么不想直接替换该文件?你必须关闭应用程序才能更新或替换exe,那么你得到了什么?“qt中的小软件”听起来像是自相矛盾的说法。修改现有exe可能会导致AV扫描仪将应用程序标记为已感染。为什么不想直接替换该文件?你必须关闭应用程序才能更新或替换exe,那么你得到了什么?“qt中的小软件”听起来有点矛盾。对于bsdiff或(见我的答案)小胡瓜这样的可执行文件,可以使用diff和补丁工具。对于bsdiff或(见我的答案)小胡瓜这样的可执行文件,可以使用diff和补丁工具。