...
- And Condition
All nested conditions have to be true. - Or Condition
At least one nested condition has to be true. - Xor Condition
Exactly one nested condition has to be true - Not Condition
The nested condition has to be false (negated state).
Pre-
...
defined Conditions
There is a number of built-in conditions which are statically pre-set on launching the installation and which can be only referenced by their ID:
- izpack.windowsinstall
True if the current OS is (any) Windows. - izpack.windowsinstall.xp
True if the current OS is Windows XP. - izpack.windowsinstall.2003
True if the current OS is Windows Server 2003. - izpack.windowsinstall.vista
True if the current OS is Windows Vista. - izpack.windowsinstall.7
True if the current OS is Windows 7. - izpack.windowsinstall.8
True if the current OS is Windows 8. - izpack.macinstall
True if the current OS is Mac OS X. - izpack.linuxinstall
True if the current OS is (any) Linux. - izpack.solarisinstall
True if the current OS is (any) Solaris. - izpack.solarisinstall.x86
True if the current OS is (any) Solaris x86. - izpack.solarisinstall.sparc
True if the current OS is (any) Solaris Sparc.
Using Conditions
...
Conditions
Defining Conditions
<conditions> Element
Conditions are defined in the installation definition as nested <condition>
elements of the <conditions/>
element.
<condition> - Attributes
The following attributes must be set in a condition <condition> element definition:
Attribute | Usage |
---|---|
| 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. |
| 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. For instance, the VariableCondition has a name and value child element to specify, which variable should have a certain value to fullfil this condition.
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 | ||
---|---|---|
| ||
<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> |
Referencing
...
Conditions
Conditions are referenced as optional attributes of several other elements in a installation definition or from IzPack resources>
- as
condition
attribute
Referencing A Number Of Conditions In One Expression
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:
...
Code Block |
---|
{{\!(conditionA && (conditionB && \!(conditionC)))}} |
.So you should define complex conditions using the xml structure or use the Complex expression language.
Complex expression language
With IZPACK-577 and IZPACK-581 fixed and released, you can also use a more Complex expression language that evaluates using the boolean precedence rules, which is also reflected in the following table. The higher an operator is, the higher is its precedence.
...
Code Block |
---|
{{(!conditionA) && conditionB && (!conditionC)}} |
.The complex expression language has been introduced in IzPack 5.0.