MAKEMSI quickly and reliably creates MSI files in a non-programmatic way
Have your say! Join the MAKEMSI discussion list or view archive! Suggest improvements. No question too simple or too complex.
[Bottom][Contents][Prev]: Repackaging - Converting an EXE to MSI[Next]: Wrap Existing Installers
Have your say! Join the MAKEMSI discussion list or view archive! Suggest improvements. No question too simple or too complex.
\->Building or Updating MSIs->Repackaging - Converting an EXE to MSI->Create a MSI Transform

Create a MSI Transform

If the installer you wish to "wrap" is MSI based (has a ".msi" file extension or is an EXE which embeds an MSI) then its best to create a transform which describes any changes you wish to make to how it installs.

You should realise that a severe limitation of Windows Installers is that only a single install can occur at any one time. This is why the "wrap existing installers" approach can't be used for MSI based installers... Windows Installer still supports "nested installs" but this approach is not recommended (and is depreciated).

If there are other files that need to be in place to install then you will probably wish to use the "MsiExtraFiles" command.

Is an EXE Installer Wrapping an MSI? If so how to extract the MSI?

You can try the Universal Extractor tool to try to extract the files, if it succeeds and it extracted an MSI then you know!

Otherwise start a normal manual installation of the product (leave it sitting at the "welcome" dialog) and then use process explorer to look at recently started processes. If it always installs unattended you may have only a short period of time, open a command prompt and get a command prompt ready to invoke "PsSuspend.exe" on "MSIEXEC.EXE" and when you see "MSIEXEC.EXE" being start with process explorer, immediately switch to the command prompt and press enter, now you have as much time as you need (use the commands "-r" switch to resume when finished).

If you don't see the EXE or you see some likely "MSIEXEC.EXE" command lines (check all such processes) then the product is MSI based (and the full location and name of the MSI will be visible in the command line).

Make a copy of this MSI file (probably in a "temp" directory) and any obviously related files then cancel the install.

Sometimes it is obvious what was used to package the product and most tools don't generate MSI files (NSIS for example).

Update the MSI or Build a Transform

You can do this by making the changes to the MSI using "MAKEMSI" and then executing the "transform" command to build the transform file.

You could also decide simply to skip the transform step and use the updated MSI.

Use MSI Directly or use the Boot Strapper EXE?

OK your've build the transform, you have two main choices:

  1. Use SETUP.EXE
    All you need to do is work out if it is possible to specify the transform, and if so what the syntax is.

  2. Apply Transform Directly to the extracted MSI
    Your main questions then are

    Often the boot strap code does nothing more than package a bundle of files into a single EXE however sometimes it also checks for prerequisite products and installs these if required.

    Ideally you'd add launch conditions to your MSI or transform to tell the user to install any required products to replace the functionality that the bootstrapper provided (it might also be possible to install some of these products if wanted).

    If the EXE is Install Shield based you may need to worry about its runtime, this can be executed/installed separately or perhaps you can apply the transform via an early immediate custom action via a "MSIEXEC.EXE" command line.


Microsoft awarded me an MVP (Most Valuable Professional award) in 2004, 2005, 2006, 2007, 2008 & 2009 for the Windows SDK (Windows Installer) area.Please email me any feedback, additional information or corrections.
See this page online (look for updates)

[Top][Contents][Prev]: Repackaging - Converting an EXE to MSI[Next]: Wrap Existing Installers


MAKEMSI© is (C)opyright Dennis Bareis 2003-2008 (All rights reserved).
Friday October 13 2017 at 2:08pm
Visit MAKEMSI's Home Page
Microsoft awarded me an MVP (Most Valuable Professional award) in 2004, 2005, 2006, 2007, 2008 & 2009 for the Windows SDK (Windows Installer) area.