interview question and answer

September 24, 2012

How do I create a MSI wrapper over EXE installation files

In order to exemplify the procedure, we will assume to wrap three .EXE installers "test1.exe", "test2.exe" and "test3.exe" into a .MSI. Here are the steps:

1. In Product Details Tab (Product Details Page) under "Add or Remove Programs (Control Panel)" group, uncheck the "Register product with Windows Installer" option. We don't want the wrapper to appear in "Control Panel" -> "Add or Remove Programs" as an installed program.

2. Go to Files and Folders Page and add the .EXE installers in the "Application Folder".

3. Create a .BAT file with the following content and add it in the Files and Folders Page:

"|InstallPath|test1.exe"
"|InstallPath|test2.exe"
"|InstallPath|test3.exe"

5.  In the same folder, using the toolbar or context menu, create a text file update for the .BAT file. This file update should include a single replace operation:

Find : |InstallPath|
Replace : [APPDIR]
6.  In the Custom Actions Page add the .BAT file as a "Launch File or Open URL" custom action after the "Finish Execution" action group from "Install Execution Stage":

In the "Execution Properties" group on the right page make sure you choose the "Asynchronous execution, do not wait for return" option.
Also enable only the "Install" option from the "Execute Sequence Condition" group.

No comments: