...
The assignment of a dynamic variable itself can be made dependent on a certain condition, using the condition attribute, which refers to the ID of condition defined in the installer description elsewhere.
Types of Dynamic Variable Assignments
Plain Values
The simpliest way to assign a value to a dynamic variable is a plain value.
...
since there are no replacements used which might be refreshed on a panel change.
Plain Values as Embedded Text
In another addition to normal variables, the value of a variable can be also defined using a nested value element embedding plain text
Example:
To comment out something in a xml file if a certain pack with the ID "mycoolfeature" is not activated, you might alternate between one and the same variable name, which gets assigned different values in different conditions.
Code Block | ||||
---|---|---|---|---|
| ||||
<dynamicvariables>
<variable name="XML_Comment_Start" condition="\!izpack.selected.mycoolfeature">
<value><\!\[CDATA[<!--]\]></value>
</variable>
<variable name="XML_Comment_End" condition="\!izpack.selected.mycoolfeature">
<value><\!\[CDATA[-->]\]></value>
</variable>
<variable name="XML_Comment_Start" value="" condition="izpack.selected.mycoolfeature" />
<variable name="XML_Comment_End" value="" condition="izpack.selected.mycoolfeature" />
</dynamicvariables>
|
The condition "izpack.selected.mycoolfeature" is generated automatically when a pack with the ID "mycoolfeature" was specified. You could now use ${XML_Comment_Start} and ${XML_Comment_End} in a file which should be parsed.
Values from Environment Variables
Code Block | ||||
---|---|---|---|---|
| ||||
<dynamicvariables> <variable name="search.path" environment="PATH"/> </dynamicvariables> |
...
since there are no replacements used which might be refreshed on a panel change and the environment variable PATH won't change during the runtime of an installation process.
Values from Property/Option Files
Dynamic variables can be also assigned from a value in configuration files with key-value pairs, as property files.
...
Code Block | ||||
---|---|---|---|---|
| ||||
<dynamicvariables> <variable name="option.1" checkonce="true" file="${INSTALL_PATH}/../old_installation/test.properties" type="options" key="first.setting"/> <variable name="option.2" checkonce="true" file="${INSTALL_PATH}/../old_installation/test.conf" type="options" key="work.dir"/> </dynamicvariables> |
Values from INI Files
It's also possible to assign Windows INI file values to IzPack dynamic variables. INI files are 3-dimensional configuration files with key-value pairs which are divided into several sections, following a certain syntax.
...
Code Block | ||||
---|---|---|---|---|
| ||||
<dynamicvariables> <variable name="ini.1" checkonce="true" file="C:/Program Files/freesshd/FreeSSHDService.ini" type="ini" section="SSH server" key="SSHCMD"/> </dynamicvariables> |
Values from XML Files
Another facility of dynamic variable assignments is reading values from XML files using XPath queries. For the syntax of XPath see XML Path Language (XPath) for more information.
...
Code Block | ||||
---|---|---|---|---|
| ||||
<dynamicvariables> <variable name="XMLReadTest.1" checkonce="true" ignorefailure="false" file="${INSTALL_PATH}/../old_installation/test.xml" type="xml" key="/installations/installation[path='/usr/local']/title[@lang='en']/text()"/> <variable name="XMLReadTest.2" checkonce="true" ignorefailure="false" file="${INSTALL_PATH}/../old_installation/test.xml" type="xml" key="//title[@lang='en']/text()"/> </dynamicvariables> |
Values From Configuration Files in an Archive (JAR/ZIP)
All of the above variants of reading a dynamic variable value from a configuration file can be also applied if that configuration files is packaged as an entry into a ZIP or JAR file.
...
Code Block | ||||
---|---|---|---|---|
| ||||
<dynamicvariables> <variable name="previous.version" jarfile="${INSTALL_PATH}/${INSTALL_SUBPATH}/libs/config.jar" entry="release.properties" type="options" key="release.version" checkonce="false" ignorefailure="true"> </variable> <variable name="other.stuff" zipfile="${INSTALL_PATH}/${INSTALL_SUBPATH}/libs/misc.zip" entry="app.ini" type="ini" section="Global Settings" key="AUTOSTART" checkonce="true" ignorefailure="true"> </variable> </dynamicvariables> |
Values from the Windows Registry
Dynamic variable values can be also gathered from Windows registry data.
...
Code Block | ||||
---|---|---|---|---|
| ||||
<dynamicvariables> <variable name="RegistryReadTest" checkonce="true" regkey="HKLM\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment" regvalue="Path"/> </dynamicvariables> |
Values from the Output of a Command Execution
Last but not least, a dynamic variable value can be assigned from the output of an external command execution.
...
Code Block | ||||
---|---|---|---|---|
| ||||
<dynamicvariables> <variable name="hostname" checkonce="true" executable="hostname" type="process"/> <variable name="result.value" checkonce="true" executable="${INSTALL_PATH}/bin/init.sh" type="shell"/> </dynamicvariables> |
Filtering Values Using Regular Expressions
Each dynamic variable assignment can be filtered using a Java regular expression. This is done by the nested regex element.
...