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:
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.