Question

I have a few merge modules (MSM files) from a third party. Unfortunately, I think the drones who made the MSMs just clicked through InstallShield and didn't make a nice, compact MSM. I opened the MSMs and deleted some InstallShield custom actions that were absolutely not needed - they popped up a console window and severely bloated my setup.

These InstallShield custom action binaries were stored in the Binary table. I deleted these entries using Orca and saved the MSM. As a result, my compiled MSI file decreased by a significant amount. (I use WiX to compile).

Unfortunately, the MSM files did not decrease in size after deleting the Binary table rows in Orca. I tried using "Save As" and saving to an MSM file, but the result was only 36 KB - it eliminated the actual files needed by the MSM, too! Examining the before and after MSM files in 7-Zip (to view the internal OLE structured storage that MSI uses) shows that the offending data streams were indeed deleted - but the overall file did not shrink.

I suspect I need to somehow compact the MSM file to reclaim space needed by deleted custom actions. How do I do this?

(Why am I asking? Would like to get this taken care of before committing anything to distributed source control system.)

Was it helpful?

Solution

Editing merge module files is not simple, especially since they contain a CAB archive with their files. I don't think Orca is enough.

The easiest and safest approach is to use a setup authoring tool to import them, modify their settings and content and then generate new MSM files.

Regarding the custom actions, please note that setup authoring tools (including InstallShield) rarely add custom actions automatically. So my bet is that those custom actions were added with a purpose.

Make sure that you really don't need them before removing their information.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top