2个'相同'的msi文件的大小有何不同?

时间:2013-11-06 14:16:48

标签: wix windows-installer compression

在我的公司,我们使用旧的过时ant系统例程来创建msi安装程序。由于它非常难以管理,我用python例程替换了整个例程。

它基本上做同样的事情,收集一堆文件,并用wix构建一个msi安装程序。

我正在处理的问题是ant例程创建的msi比python例程创建的msi大约900KB(两者都是~140MB)。我试图寻找差异,但无法找到一个。

我尝试了什么:

  • 在干净的计算机上安装两个安装程序:两个安装文件夹都包含相同的文件并且大小相等。
  • 只需解压缩两个msi并比较它们:没有区别
  • 将两个msi表与SuperOrca进行比较:只有ProductCode不同,但这是预期的。

我没有其他想法可以解决为什么存在文件大小差异,但由于可能缺少某些东西而感到有点不确定。有什么想法吗?

3 个答案:

答案 0 :(得分:2)

ANT和Python构建器是否都在构建计算机上使用相同的Wix安装?当应用程序文件相同时,最终安装包的这些小的差异可能来自存根/引导程序以及包含在程序包中的Wix的其他资源。

如果您使用不同的Wix版本/版本来构建这两个软件包,那么这些安装程序资源可能会有不同的大小,因此最终安装程序包的大小不同。

答案 1 :(得分:0)

我今天遇到了同样的问题:我使用MakeMsi从完全相同的二进制文件中创建了多个MSI,其中不同的是K字节。起初我认为我的构建脚本有问题。

经过一些网络搜索(没有直接成功),我尝试了由MakeMsi创建者提供的MSIDIFF转储功能。它将内容转换为可处理的MakeMsi脚本(纯文本)。

我抛弃了两个不同大小的MSI包,并将结果(几乎相同大小)与diff工具(我使用WinMerge,TortoiseMerge)进行了比较。我发现只有几行中的值(GUID,日期)不同。

这使我得出结论,MSI的不同大小是由于不同的压缩率(我们知道CAB files所涉及的)。尝试使用Zip和两个相同大小的文本,但差别不大,你会得到同样的现象。

答案 2 :(得分:0)

MSI文件是“稀疏”文件,而不是连续的数据流。只是工具构建MSI文件的顺序可能会导致不同的大小。