如何压缩合并模块?

问题描述:

我有一些来自第三方的合并模块(MSM文件)。不幸的是,我认为制造MSM的无人机只是点击了InstallShield,并没有制造出精美紧凑的MSM。我打开了MSM并删除了一些完全不需要的InstallShield自定义操作 - 它们弹出了一个控制台窗口,并严重臃肿了我的设置。如何压缩合并模块?

这些InstallShield自定义操作二进制文件存储在Binary表中。我使用Orca删除了这些条目并保存了MSM。结果,我编译的MSI文件减少了很多。 (我用WiX编译)。

不幸的是,MSM文件并没有大小Orca删除二进制表行后减少。我尝试使用“另存为”并保存到MSM文件,但结果只有36 KB - 它消除了MSM所需的实际文件!检查7-Zip中的MSM文件之前和之后(查看MSI使用的内部OLE结构化存储)显示,有问题的数据流确实被删除 - 但整个文件没有缩小。

我怀疑我需要以某种方式压缩的MSM文件收回被删除的自定义操作所需的空间。我该怎么做呢?

(我为什么要问?想犯什么分布式源代码控制系统之前得到这个照顾。)

编辑合并模块文件并不简单,尤其是因为它们包含一个CAB压缩包的文件。我不认为Orca就够了。

最简单和最安全的方法是使用安装创作工具导入它们,修改它们的设置和内容,然后生成新的MSM文件。

关于自定义操作,请注意安装创作工具(包括InstallShield)很少会自动添加自定义操作。所以我敢打赌,这些自定义操作是添加了一个目的。

在删除他们的信息之前,确保你确实不需要他们。

+0

更进一步,我将着眼于彻底抛弃MSM,并将这些文件放在我的应用程序目录中。他们只将一些DLL放在共享目录中,然后将该目录放入PATH中。问题在于该公司没有找到他们的部署情况:如果客户已经在PATH中拥有旧版本的工具包,那么我们的软件就会中断。 –