Edit Condition DialogCopy link to this sectionLink to this section copied!

1. ExpressionCopy link to this sectionLink to this section copied!

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 OperandCopy link to this sectionLink to this section copied!

This section allows you to insert operands in the statement.

2.1 PropertyCopy link to this sectionLink to this section copied!

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 Copy link to this sectionLink to this section copied!

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 FolderCopy link to this sectionLink to this section copied!

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 ActionCopy link to this sectionLink to this section copied!

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 StateCopy link to this sectionLink to this section copied!

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 ActionCopy link to this sectionLink to this section copied!

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 StateCopy link to this sectionLink to this section copied!

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 ConstantCopy link to this sectionLink to this section copied!

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 OperatorCopy link to this sectionLink to this section copied!

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

3.1 Logical operators:Copy link to this sectionLink to this section copied!

  • 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:Copy link to this sectionLink to this section copied!

  • = - 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 OperatorsCopy link to this sectionLink to this section copied!

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 conditionsCopy link to this sectionLink to this section copied!

This section is described in the Predefined Conditions article.

Topics