cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
AaronM
Level 6

Properties with merge modules

What is the relationship regarding properties between merge module and the basic MSI installers that consume it?

The "Installed" property indicates if the product is installed and nothing to do with whether the merge module's files were already installed by another product. There are a several custom actions of the merge module that need to be executed with any install or upgrade of a product, but not to run when uninstalling.

Scenario A
Merge module includes custom actions that updates its sql database. If a product installer that includes the merge module is doing an upgrade, still need to run the custom actions in merge module since could include new custom actions and can not rely on the "(NOT) Installed" condition.

Is there a property that states what mode the installer is in? Ie. whether it is installing, upgrading, or uninstalling? As mentioned above, can't simply rely on the "Installed" property as that is related to the product itself and doesn't solve case where want to run the merge module's custom action on upgrades.

Scenario B
Installer consumes merge module, but only includes it with FeatureA and not with FeatureB. The install works fine in that the merge module files do not get copied when only FeatureB is requested, but the custom actions still run since included in merge module's ModuleInstallExecuteSequence table with condition "NOT Installed".

Can merge module define a property and have the consuming installer set the a value to it? In this scenario, installer sets the property to false for FeatureB and merge module's custom actions would check on that property for condition. However, the property didn't show up in the consuming installer's property table in initial testing.

Note: I realize that consuming installers can manually insert custom actions from a merge module with ability to set sequence number and condition, but it is preferably to have that all be handled by the merge module. Then again, the consuming installer will have some knowledge of the merge module custom actions since it will most likely want to add values to ActionText table so the user-interface of installer has text describing the current action. The benefit of merge module adding custom actions to the ModuleInstallExecuteSequence table is that if the consuming installer is not aware of new custom actions in merge module it will still run those and only have blank text for description.
Labels (1)
0 Kudos
(3) Replies
MichaelU
Level 12 Flexeran
Level 12 Flexeran

If I understand enough of what you're trying to condition on, component-state or component-action conditions (see Conditional Statement Syntax) should provide the granularity you need.
0 Kudos
RobertDickau
Flexera Alumni

A couple of tips:

Creating an MSI log file will show you the properties from the main installer and the merge modules: properties from the main installer have simple names (ProductName, MY_PROP, etc.); while ones from merge modules look like PROPNAME.HHHHHHHH_HHHH_HHHH_..., where the number after the dot is the merge module's Module ID GUID value.

For the installation and uninstallation conditions, please see the help topic "Detecting First-Time Installations", and perhaps the "Installation and Uninstallation Conditions" tip in the Tips & Tricks page: http://www.acresso.com/products/installation/installshield.htm?tabContent=/products/installation/installshield/res_4744.htm.

As for ActionText for merge-module actions, please see [thread=175716]this thread[/thread].
0 Kudos
AaronM
Level 6

Michael and Robert - Thank you! The info has helped greatly.
0 Kudos