Edit Condition Dialog

This dialog allows you to edit a conditional statement.

Edit Condition Dialog

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.

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

Use [ Evaluate ] to test the expression.

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

This section is described in the Predefined Conditions article.

Topics