2

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

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

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

我试过的:

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

我对为什么可能存在文件大小差异没有其他想法,但感觉有点不确定,因为可能缺少某些东西。有任何想法吗?

4

3 回答 3

2

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

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

于 2013-11-07T12:36:16.420 回答
0

我今天遇到了同样的问题:我使用 MakeMsi 从完全相同的二进制文件制作了多个 MSI,它们之间的差异有一些 K 字节。起初我认为我的构建脚本有问题。

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

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

这使我得出结论,不同大小的 MSI 是由于压缩率略有不同(我们知道涉及到CAB 文件)。尝试使用 Zip 和两个大小相同但几乎没有差异的文本,您会得到相同的现象。

于 2016-07-01T08:57:33.023 回答
0

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

于 2016-07-06T23:08:01.380 回答