Level 2

Single Uninstaller for multiple dynamic merge modules

I’m looking for some guidance on how to get one uninstaller working for multiple dynamic merge modules. I’m using IA2010 SP1 with hotfix A (build 3792).

I’ve been able to create the single Uninstaller, however it only partially uninstalls. I suspect I’m missing something basic?

Sorry for the long post, but hopefully I’ve covered everything pertinent.

I have a dozen or so existing IA installers that I’ve re-built as merge modules and dynamically imported as components in a “suite” Installer. The components are associated to features and the features to Install Sets. With maintenance mode enabled or not, I can install successfully and create a single uninstaller. The problem is that the uninstaller seems to only partially uninstall; I suspect only the pre-uninstall logic of the last installed merge module is executed, followed by the uninstall step of the “suite”. For this post, I’ve reproduced the issue with a very scaled down Windows installer based on the “Office Suite” example from the User Manual; if anyone can suggest a solution?

The IA user guide, indicated that there were 4 guidelines to achieving a single installer:

(1) Every product must have the same Product ID.
(2) Each separate product should then be “demoted” to a feature of the master product.
(3) The uninstallers for these separate projects must also share the same uninstaller name and uninstaller location.
(4) Every product that installs features will register its features with the uninstaller.

I believe I’ve followed guidelines 1 through 3, although I’m a little unclear on the 4th on how to “register a feature with an uninstaller”. Looking at the product registry file (.com.zerog.registry.xml) the product/feature parenting tags seem to be created with out me adding any specific IA actions. The registry however does look incorrect or at least different than what I would expect, in that the last merge module in the installer is listed as the “product”. (registry file attached)

Example Installer:
• “OfficeSuiteExample” dynamically importing “SpreadsheetApplication” and “WordProcessorApplication”
• All 3 installers definitions have the same product id.
• All have the same default install dir: “$DESKTOP$\IA_Example\InstallDir”
• Each Installs a text file to test bare minimal install functionality.
• All have the Uninstaller name and location: “$USER_INSTALL_DIR$\Uninstall\ChangeInstallation”
• Installation appears successful
• Uninstall appears to executes (1) “WordProcessor Application” pre-uninstall actions and (2) uninstall OfficeSuite file. What is missing from the execution are:
o Spreadsheet and Office Suite Pre-Uninstall not executed
o Spreadsheet and WordProcessor files not Uninstall

Install config looks like this:

In Screen capture on the install, I’ve kept the basic template of each installer to be able to see the progression of the Install steps.

Directory after Installation contains the expected 3 text files and single uninstaller.

In screen capture of Uninstall, I’ve included the feature list variable which looks reasonable. The Window title, panel title and info text all indictate the "WordProcessor Application".

Directory after Uninstall, leaves these files behind.

Uninstall logs only created for WordProcessor, and nothing particularly note worthy in log.

I can make the iap_xml files available if anyone wants.

Thanks in advance for any help you may be able to provide.
Labels (1)
0 Kudos
4 Replies
Level 7

I use "execute uninstaller" to uninstall my merge modules, each of which has its own uninstall action installed.
0 Kudos
Level 6

I was also not able to get this working and resorted to using the Execute Uninstaller command to invoke the uninstaller of each merge modules.
0 Kudos
Level 7


You may upgrade to a newer version of IA. It has an option to select whether or not the merge modules should be uninstalled along with the parent. This will automatically take care of multiple merge module uninstallations when the parent is uninstalled.

0 Kudos
Level 6

Ok thanks for the info.
0 Kudos