Building Conditional Statements in Advanced UI and Suite/Advanced UI Projects

InstallShield 2018

Project • This information applies to the following project types:

Advanced UI
Suite/Advanced UI

Project-specific differences are noted where appropriate.

Edition • The Advanced UI project type is available in the Professional edition of InstallShield. The Suite/Advanced UI project type is available in the Premier edition of InstallShield. For information about the differences between these two project types, see Advanced UI Projects vs. Suite/Advanced UI Projects.

How Advanced UI and Suite/Advanced UI Installations Use Conditions

The Advanced UI and Suite/Advanced UI project types in InstallShield have support for building conditional statements that control different areas of the run time:

Exit conditions—The Exit Condition setting in the General Information view lets you specify one or more exit error messages that you want the Advanced UI or Suite/Advanced UI installation to display under various conditions before ending the installation. If the condition that you define is true when an end user launches the Advanced UI or Suite/Advanced UI installation, the Advanced UI or Suite/Advanced UI installation displays the error message. When end users dismiss the error message, the Advanced UI or Suite/Advanced UI installation ends.
Detection conditions—The Detection Condition setting for a package in the Packages view lets you specify the condition that the Advanced UI or Suite/Advanced UI installation should use to evaluate whether the package is already installed on target systems. If this does not change from false to true (or from true to false) at run time, the Advanced UI or Suite/Advanced UI installation assumes that the package failed to install (or remove) its payload. In addition, subsequent maintenance and remove operations (or subsequent maintenance and install operations) may not behave as expected.
Eligibility conditions—The Eligibility Condition setting for a package in the Packages view lets you specify the condition that the Advanced UI or Suite/Advanced UI installation should use to determine whether the target system meets the requirements that are necessary for the package to be run. For example, if the package should be run only on 64-bit systems, you could set up an x64 platform requirement in a condition; the Advanced UI or Suite/Advanced UI installation would launch the package only on 64-bit systems. You may also want to set up an eligibility condition to prevent end users from being able to install the current package version over a future newer version.
Feature conditions—The Condition setting in the Features view lets you build conditional statements to evaluate whether the feature should be selected for installation by default on the InstallationFeatures wizard page.
Action conditions—The Condition setting for an action that is scheduled for an event in the Events view lets you build conditional statements that evaluate whether the installation should run the action.

In addition, the settings in the Events area for a package in the Packages view let you build conditional statements that evaluate whether the installation should run an action for the selected package.

Project • Action conditions are available in Suite/Advanced UI projects.

Wizard interface conditions—The condition settings for wizard pages and controls in the Wizard Interface view let you build conditional statements that evaluate behavior such as whether the installation should invoke an action, validate an end user’s response, enable a control, show a page or control.
Mode conditionsInstallShield creates two types of mode conditions automatically: install mode conditions and maintenance mode conditions. The mode conditions are shown only in the project file (.issuite); this type of condition is not available for edit within InstallShield. These mode conditions determine whether an Advanced UI or Suite/Advanced UI installation runs in first-time installation mode or in maintenance mode. For more details, see Triggering Install Mode or Maintenance Mode of an Advanced UI or Suite/Advanced UI Installation.

Condition Operators

Each condition that you define in an Advanced UI or Suite/Advanced UI project begins with one of the following operators:

Any—An Any condition group operates like a logical OR operation. If any of the conditions that are in the Any group evaluate to true, the entire condition group evaluates to true. If none of the conditions that are in the Any group evaluate to true, the entire condition group evaluates to false.
All—An All condition group operates like a logical AND operation. All of the conditions that are in the All group must evaluate to true in order for the condition group to evaluate to true.
None—A None condition group operates like a logical NOR operation. If none of the conditions that are in the None group evaluate to true, the entire condition group evaluates to true. If any of the conditions that are in the None condition group evaluate to true, the entire condition group evaluates to false. Note that if the None condition group consists of only one conditional statement, it operates like a logical NOT operation.

Types of Condition Checks

When you are building a conditional statement for an exit, detection, eligibility, feature, or wizard interface condition in an Advanced UI or Suite/Advanced UI project, or for an action condition in a Suite/Advanced UI project, you can select from a number of different types of checks that you want to be evaluated on target systems. Examples are operating system version, presence of a file or registry entry, and presence of an already installed product.

For detailed information about each of the types of condition checks that are supported, as well as each of the subsettings that are displayed under a condition, see Types of Condition Checks in Advanced UI and Suite/Advanced UI Projects.

Syntax for Building Conditions

Building a conditional statement involves using one or more of the condition settings to add operators and condition checks.

To add a conditional statement to a condition setting, click the setting’s New Condition button:

When you do that, InstallShield adds an operator row under the condition setting; the default operator is Any. To change the operator for the condition, click the drop-down arrow in the operator setting and then click the appropriate option.

Changing the Default Operator

Once you have added an operator, click the New Condition button in the operator setting and then click the appropriate condition check type. At this point, InstallShield adds a subsetting (or more subsettings, depending on which condition check type you selected) under the operator setting.

Whenever a conditional statement is invalid (for example, if an entry is required in a setting but it is left blank), InstallShield shows a warning icon in that setting. To find out why the condition is invalid, move the pointer over an icon; InstallShield displays a tooltip that explains the issue.

To nest another condition within a condition, click the New Condition button in an operator setting and then click the appropriate operator for the nested condition. One of the Any/All/None meta-conditions is referred to as a condition group. All of the nested condition groups and conditions under a condition setting together form a condition tree.

Nesting a Condition Within a Condition

To move a condition or a condition group within a condition tree, point to the Move Condition button in the setting of the item that you want to move, and then click the appropriate direction (Move Up, Move Down, Move Left, or Move Right).

You can use an asterisk as a placeholder for the current package’s product code, package code, and product version when you are defining eligibility and detection MSI package conditions, as long as the package that you are configuring is an .msi package.

Default Eligibility Condition for an .msi Package

You can also use an asterisk as a placeholder for the current package’s upgrade code and either the minimum or maximum version number when you are defining eligibility and detection MSI upgrade conditions, as long as the package that you are configuring is an .msi package.

See Also