2

我有一些来自第三方的合并模块(MSM 文件)。不幸的是,我认为制造 MSM 的无人机只是点击了 InstallShield,并没有制造出漂亮、紧凑的 MSM。我打开了 MSM 并删除了一些绝对不需要的 InstallShield 自定义操作 - 它们弹出了一个控制台窗口并严重膨胀了我的设置。

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

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

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

(我为什么要问?希望在向分布式源代码控制系统提交任何内容之前解决这个问题。)

4

1 回答 1

1

编辑合并模块文件并不简单,尤其是因为它们包含带有文件的 CAB 存档。我认为 Orca 还不够。

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

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

在删除他们的信息之前,请确保您真的不需要他们。

于 2011-11-28T18:29:44.793 回答