Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: & has to be encoded as &

The Conditions Element

This element allows you to define conditions which can be used to dynamically change the installer, e.g. the panels shown, the variables set, files parsed, files executed and much more. When you define a condition it will get a type and an id. The id has to be unique. Conditions can be referenced based on this id (e.g. with the RefCondition).

There are several built-in types of conditions. At the time of writing this, Izpack has the following built-in types:

Condition

Function

Usage

VariableCondition

based on the value of a certain variable

 

PackSelectionCondition

based on a pack selected for installation

 

JavaCondition

based on a static java field or method

 

CompareNumericsCondition

based on the comparison of a certain variable with a given value and operator

 

RefCondition

based on another condition

<condition type="ref" id="" refid="ConditionToEvaluate"/>

There are also boolean types to combine more than one condition:

AndCondition

both conditions have to be true

OrCondition

only one of both conditions has to be true

XOrCondition

one condition has to be true, the other one has to be false

NotCondition

the condition has to be false

When you define a set of conditions, you just have to write as many <condition> tags as you like. A condition can take the following attributesWhen you define a set of conditions, you just have to write as many <condition> tags as you like.

Basic Condition Types

The following basic types of conditions can be used:

See the links for more details.

Using Conditions

Defining Conditions

<conditions> Element

Conditions are defined in the installation definition as nested <condition> elements of the <conditions/> element.

For example: 

<condition> - Attributes

The following attributes must be set in a <condition> element definition:

Attribute

Usage

type

the

The type of the condition. For built-in types, this is the lowercase portion of the condition class name without condition appended (variable,packselection,java, ...). Custom condition types should be referenced by the full qualified class name, e.g. de.dr.rules.MyCoolCondition.

id

the

The id of the condition. This will be used to refer to this conditions in other elements

<condition> - Nested Elements

The condition element can have several child elements depending on the condition type of this conditions. E.g. . For instance, the VariableCondition has a name and value child element to specify, which variable should have a certain value to fullfil this condition.

This Here is an example which defines four conditions, two VariableConditions, a JavaCondition and a AndCondition which will refer to two of the first conditions.:

Code Block
xml
languagehtml/xml
<conditions>
<conditions>    <condition type="variable" id="standardinstallation">
        <name>setup.type</name>
        <value>standard</value>
    </condition>
    <condition type="variable" id="expertinstallation">
        <name>setup.type</name>
        <value>expert</value>
    </condition>
    <condition type="java" id="installonwindows">
        <java>
            <class>com.izforge.izpack.util.OsVersion</class>
            <field>IS_WINDOWS</field>
        </java>
        <returnvalue type="boolean">true</returnvalue>
    </condition>
    <condition type="and" id="standardinstallation.onwindows">
        <condition type="ref" refid="standardinstallation"/>
        <condition type="ref" refid="installonwindows" />
    </condition>
</conditions>

Expression languages

...

Anchor
Referencing Conditions
Referencing Conditions
Referencing Conditions

Conditions are referenced as optional attributes of several other elements in a installation definition or from IzPack resources:

  • as condition attribute
  • as conditionid attribute (for compatibility reasons of some tags)

Referencing A Number Of Conditions In One Expression

Anchor
Simple Expression Language
Simple Expression Language
Simple Expression Language

From IzPack 3.11 on, you don't have to define compound conditions because you can use a simple expression language. The language supports the following operators:

+

an operator for the

Andcondition

And Condition

|

an operator for the

OrCondition {{
}}

Or Condition

^

an operator for the

XOrCondition

Xor Condition

!

an operator for the

NotCondition

Not Condition

These simple expressions DO NOT follow the usual boolean logic with precedence rules. Instead, they are evaluated left to right in a simple way.

Example:

Code Block

...

!conditionA+conditionB+!conditionC

...

does not equal

Code Block
(!conditionA) && conditionB && (!conditionC)

...

but is the same like

Code Block
!(conditionA && (conditionB && !(conditionC)))


Example:

Code Block
languagexml
titleinstall.xml
<dynamicvariables>
    <variable name="db.

...

instance" value="MSSQLSERVER" checkonce="true" condition="useMssql+mssqlInstanceSelected+!haveDatabaseURL" />
</dynamicvariables>


Anchor
Complex expression language
Complex expression language
Complex expression language

With IZPACK-577 fixed and released, you can also Beginning with IzPack 5.0, there is also the possibility to use a more Complex complex expression language that which evaluates using the based on boolean precedence rules, which is also reflected in the following table. The higher an operator is, the higher is its precedence.

^

an operator for the Xor Conditon

&&

an operator for the

Andcondition

And Condition

||

an operator for the

OrCondition

Or Condition

!

an operator for the

NotCondition

Not Condition


Example:

Code Block
@!conditionA

...

&&conditionB

...

&&!conditionC

equals

Code Block
(!conditionA) && conditionB && (!conditionC)

...

XOR and parentheses () may be added in the future.

More types of conditions can be defined by inheriting com.izforge.izpack.Condition class.

Built-in conditions

A number of built-in condition IDs are available for you.

...

Name

...

Condition

...

izpack.windowsinstall

...

The OS is (any) Windows

...

izpack.windowsinstall.xp

...

The OS is Windows XP

...

izpack.windowsinstall.2003

...

The OS is Windows Server 2003

...

izpack.windowsinstall.vista

...

The OS is Windows Vista

...

izpack.windowsinstall.7

...

The OS is Windows 7

...

izpack.macinstall

...

The OS is Mac OS X

...

izpack.linuxinstall

...

The OS is a Linux variant

...

izpack.solarisinstall

...

The OS is a Solaris variant

...

izpack.solarisinstall.x86

...

The OS is a Solaris x86 variant

...

izpack.solarisinstall.sparc

...

In order to use the complex expression language the expression must start with a '@' character.


Example:

Code Block
languagexml
titleinstall.xml
<dynamicvariables>
    <variable name="db.instance" value="MSSQLSERVER" checkonce="true" condition="@useMssql &amp;&amp; !haveDatabaseURL &amp;&amp; mssqlInstanceSelected" />
</dynamicvariables>


Note

Because "&" is a reserved character in xml documents you have to use "&amp;" instead!