您必须在 ORCA 中查看您的 MSI,才能了解膨胀的来源。您可能能够简化用于对话框的图形,或者您可能会发现 InstallShield 插入的一些您不需要的 C++ 基础结构自定义操作。(右键显示所有自定义操作)
我刚刚使用 IS2012 创建了一个基本 MSI,采用所有默认设置(包括 MSZIP),大小为 613KB。然后,我从 syswow64 文件夹(根据大小选择:ahtmlle2.ocx 218kb)中添加了一个任意 OCX,提取了 COM 数据并重新构建。MSI 使用 MSZIP 为 845KB,使用 LZX 为 809KB。
然后我查看了二进制表,看到了 SetAllUsers.dll 和 ISSELFREG.dll。这两个我都不需要,所以我把它们拿出来了。这让我降到了 438KB。
最后,我查看了对话框中使用的库存位图。(在我的例子中是 NewBinary1 和 NewBinary5。)横幅 (NB1) 是 4KB。对话 (NB5) 为 16KB。不是真的臃肿。我仍然把它们变成空白的白色 JPG 并重建。这让我达到了 424KB。可能还有一些其他的事情要追逐(对话框图标),但现在我决定尝试 WiX。
我使用相同的 JPG 创建了一个 WiX MSI,大小为 392KB。更小,但没有任何意义。我将其用作交叉检查我的 IS MSI 是否相当纯净。