1. Expression

This field contains the resulted conditional statement and
can also be edited using Smart Condition Edit Control. Use the [ Validate ]
button to validate it.

If the condition is invalid, you will be prompted with an error
message that will indicate the error's beginning.

2. Insert Operand

This section allows you to insert operands in the
statement.

2.1 Property

Insert reference to an installer property which is already
created in your package.

Example: MY_PROP

This condition will be true only if the property MY_PROP
contains a value. If the property is empty the condition is not
fulfilled.

2.2 Environment Variables

Insert reference to an environment variable.

Example: %JAVA_HOME

This condition will be true only if the environment
variable JAVA_HOME exists on the machine on which the package is
running. If JAVA_HOME doesn't exist the condition will not be
met.

2.3 Folder

Insert reference to an installation folder.

Example: APPDIR

This condition will be true only if the property APPDIR
which is assigned to the Application Folder from the Files and
Folders is resolved.

2.4 Component Action

Insert a reference to the action state of a component (for
example if a component will be installed or not).

Example: $Your_Component=3

Test if the correspondent component will be installed on
the machine.

2.5 Component State

Insert reference to the installed state of a component (for
example if a component is already installed when the installation
runs).

Example: ?Your_Component=3

This condition will be true only if the correspondent
component was installed. For example you have a custom action which
unregister a certain DLL file with the attached component. If the
component wasn't installed the custom action will not run during
uninstall, otherwise the custom action will be executed.

2.6 Feature Action

Insert reference to the action state of a feature (for
example if a feature will be installed or not).

Example: &Feature=5

Test if the correspondent feature will be reinstalled on
the machine.

2.7 Feature State

Insert reference to the installed state of a feature (for
example if a feature is already installed when the installation
runs).

Example: !Feature=3

This condition will be true only if the feature is already
installed on the machine.

2.8 Constant

Add a constant to the conditional statement.

These constants represent the feature and component state
values used in conditional expressions.

You can use the following:

INSTALLSTATE_UNKNOWN (-1) - No action to be taken on the
feature or component.

INSTALLSTATE_ADVERTISED (1) - Advertised feature. This state
is not available for components.

INSTALLSTATE_ABSENT (2) - Feature or component is not
present.

INSTALLSTATE_LOCAL (3) - Feature or component is on the local
computer.

INSTALLSTATE_SOURCE (4) - Feature or component will run from
the source.

Example: &Feature=3

This condition will be true only if the feature "Feature"
will be installed locally. If the feature is not selected for
installation the condition is false.

3. Insert Operator

In this section you can insert operators in the conditional
statement. Use the [ Insert ] button to add the selected
one.

3.1 Logical operators:

IMP - TRUE if left term is FALSE or right term is TRUE.

EQV - TRUE if both terms are TRUE or both terms are
FALSE.

XOR - TRUE if either but not both terms are TRUE.

OR - TRUE if either or both terms are TRUE.

AND - TRUE if both terms are TRUE.

NOT - Unary operator; inverts state of following term.

3.2 Comparative operators:

= - TRUE if left value is equal to right value.

~= - TRUE if left value is equal to right value. The
comparison is case insensitive.

<> - TRUE if left value is not equal to right
value.

~<> - TRUE if left value is not equal to right value.
The comparison is case insensitive.

> - TRUE if left value is greater than right value.

~> - TRUE if left value is greater than right value. The
comparison is case insensitive.

>= - TRUE if left value is greater than or equal to right
value.

~>= - TRUE if left value is greater than or equal to right
value. The comparison is case insensitive.

< - TRUE if left value is less than right value.

~< - TRUE if left value is less than right value. The
comparison is case insensitive.

<= - TRUE if left value is less than or equal to right
value.

~<= - TRUE if left value is less than or equal to right
value. The comparison is case insensitive.

3.3 Sub-String/Bitwise Operators

Substring operators can occur between two string
values.

>< - TRUE if left string contains the right
string.

~>< - TRUE if left string contains the right string. The
comparison is case insensitive.

<< - TRUE if left string starts with the right
string.

~<< - TRUE if left string starts with the right string.
The comparison is case insensitive.

>> - TRUE if left string ends with the right
string.

~>> - TRUE if left string ends with the right string.
The comparison is case insensitive.

Bitwise operators can be used between two integer
values.

>< - TRUE if the left and right integers have any bits
in common.

<< - TRUE if the left integer's high 16-bits are equal
to the right integer.

>> - TRUE if the left integer's low 16-bits are equal to
the right integer.

4. Predefined conditions

Use the [ Insert ] button or double click a
predefined condition from the list to include it.

Installation

Features and Components

When adding a
predefined condition that contains reference to a component or a
feature, you will be prompted to select one from the
project.

Operating System

Installed Software

When adding an installed
software predefined condition, the Detect Installed Software Dialog will be shown
allowing you to determine the minimum version of the installed
software.