I want to verify if certain exe files already exist in a merge module .ism (binary format). Is there a method of doing this without using InstallShield?
-
Do you mean .ISM or .MSM? – Christopher Painter Mar 30 '14 at 19:16
3 Answers
An *.ism file is really an MSI file with a changed extension. MSI files in turn are SQL databases stored as COM-structured storage files - a file system inside a single file with file streams for various content. This is the same format used in Office documents.
You can view MSI files with Orca from the Windows SDK: http://www.hass.de/content/how-install-microsoft-orca

- 39,960
- 25
- 91
- 164
-
1Only when it's in Binary format. It can also be in XML format which was the binary database transformed to DTD/XML using Msi2XML. – Christopher Painter Mar 30 '14 at 19:17
Windows Installer XML (WiX) Deployment Tools Foundation (DTF) has an InstallPackage class available that exposes a FindFiles() method. This should be really easy to query the EXE. Just realize that being a merge module you won't know the full installation path as that's decided by the MSI generally.

- 54,556
- 6
- 63
- 100
-
Nice idea, seems your code here could help (with minor modifications): http://stackoverflow.com/a/15532841/129130 – Stein Åsmul Mar 31 '14 at 08:20
Both of Chris's suggestions should work fine, as would using Orca. But it got me thinking there might be an even easier way using a tool called Merge Module Finder. It all depends on what you really want to do? Find files already in merge modules? Investigate what merge modules are in an Installshield file? It is not quite clear exactly what you want to do.
Though a bit clunky at times (I think the author hasn't updated it for the latest versions of Windows) it will help you look for a file in a bunch of merge modules interactively. You can also search for a registry value. Here is a screenshot:

- 39,960
- 25
- 91
- 164
-
I've written a lot of these types of tools but never published them. One of these days I should tell you about the InstallManifest generator and the InstallDifferences tool. But for this simple search I just say findstr /s -i -m somefilename *.msm – Christopher Painter Mar 31 '14 at 12:32