Troubleshooting Issues by Logging a Suite Installation

If you are troubleshooting issues with Suites installations, the best place to start is with a debug log. Debug logs provide some insight into the operations that are being performed by a Suite installation. To create a debug log, run the suite with the following command line:

Setup.exe /debuglog

If a log name other than InstallShield.log or an alternate path is desired for the log, use the following command line instead:

Setup.exe /debuglog”C:PathToLogLogFile.log”

Suite debug logs contain the following information:

  • Initialization information from the Suite engine
  • Property values and property value changes
  • Feature action and installed state information
  • Package detected state and eligibility information
  • Package command lines and launch result information

The Suite UI provided by default in Suite projects also logs information to the debug log but, in general, this information can be ignored. (UI information is typically prefixed with “UI DLL:” in the log.)

One thing to note is when feature, package state, and Suite mode information is written to the log, only numeric values for the states are provided. The following is a mapping of numeric values to state representations:

Table 1: Feature Action States

Log ValueState
0No action will be taken for the feature.
1The feature will be installed.
2The feature will be removed.

Table 2: Feature Installed States

Log ValueState
0The feature is not currently installed.
3The feature is installed.

Table 3: Package States

Log ValueInstalled StateAction State
0The package is not installed.
1The package is currently installed.The package will run its Install operation.
2The package will run its Modify operation.
3The package will run its Repair operation.
4The package will run its Remove operation.
5No action will be performed for the package.

Table 4: Suite Install Modes

Log ValueInstall Mode
0First-time installation
1Maintenance/UI maintenance mode selection
2Maintenance/Modify
3Maintenance/Remove
4Maintenance/Repair
5Stage only (administrative-style installation)

Debug logs can be useful in any number of scenarios where a Suite installation is not behaving in an expected manner. For example, suppose a Suite project contains two packages, one EXE and one MSI, each associated with their own feature in the Suite. At run time on some machines, even though both features appear to be selected, only the EXE package is installing. To begin troubleshooting this behavior, create a debug log on one of the machines encountering this behavior. Once the log is available, we want to verify that both features were in fact selected to be installed. Each feature will log information similar to the following:

9-21-2011[03:07:04 PM]: Engine: determining suite feature states
9-21-2011[03:07:04 PM]: Initializing state for feature ‘NewFeature’
9-21-2011[03:07:04 PM]: Default action state 1 for mode 0
9-21-2011[03:07:04 PM]: Initial feature state: 1
9-21-2011[03:07:04 PM]: Final feature state: 1

9-21-2011[03:07:04 PM]: Initializing state for feature ‘NewFeature1’
9-21-2011[03:07:04 PM]: Default action state 1 for mode 0
9-21-2011[03:07:04 PM]: Initial feature state: 1
9-21-2011[03:07:04 PM]: Final feature state: 1

The above information indicates the initial states of features NewFeature and NewFeature1. Both have been initialized to a state of 1, indicating they are selected for installation. So the features in this Suite do not appear to be an issue. Continuing on in the log, the following information is provided:

9-21-2011[03:07:10 PM]: Engine: setting parcel states as determined by feature selections
9-21-2011[03:07:10 PM]: Feature NewFeature setting parcel states, parent override: no, override state: 0
9-21-2011[03:07:10 PM]: Requesting action state 1 for parcel ‘{BA3EAE7A-0701-4CE0-9224-4F5C0F135792}’
9-21-2011[03:07:10 PM]: Containing feature is request state change to parcel {BA3EAE7A-0701-4CE0-9224-4F5C0F135792}, feature request: 1

At this point in the Suite installation, the UI DLL has completed the “UI selection” phase and gathered all necessary data for the installation to start. The Suite engine now determines what packages (referred to as parcels in the log file) will be installed based on the features they are associated with. This information indicates package ‘{BA3EAE7A-0701-4CE0-9224-4F5C0F135792}’ (this GUID comes from the Package GUID setting contained in each package in a Suite project) is being requested to install (action state 1) from feature NewFeature (whose action state is selected to install). Looking forward a couple lines in the log provides the following information:

9-21-2011[03:07:10 PM]: Parcel is ineligible or the current parcel state and install mode to not allow parcel configuration

For some reason, this package (the MSI package that is not installing as expected) has become ineligible. Looking for this package with the given parcel ID in the Packages view in the Suite project shows that the package contains an eligibility condition. The condition indicates that the package is eligible if either the MSI product code and package code are already installed or the MSI product code is installed and the product version is not greater than the MSI’s product version. Reading the inline help for the eligibility condition explains the purpose of this condition is to prevent the package from installing if a newer version of this MSI product is already installed.

Digging further on the machine that produced this behavior shows that a newer version of the MSI contained in the suite install was already present on the machine, causing the MSI in the suite to become ineligible.

While this article provided only a brief overview of the information contained in a Suite debug log and how it could be used to troubleshoot an issue, this is by no means an exhaustive reference. Debug logs are generally straight forward to read, but they can be posted on the InstallShield Community forums or provided with a support incident submitted to Flexera Support for additional assistance.

Leave a Reply

Your email address will not be published. Required fields are marked *