Compile-time Properties - <properties>

Understanding Properties

IzPack properties are key-value pairs that can be used for substitution during the compilation phase, only. The scope makes the difference to variables, which are evaluated and can be seen also during the installation phase. IzPack properties will not be visible during the execution of the compiled installer.

Properties cannot be re-defined and once a property is created, it will not be overwritten.

Using Properties

Properties can be explicitely set in the installer descriptor. Additionally, IzPack sets built-in properties depending on how the compilation is launched

Setting Properties

Explicit Properties

Explicit properties can be defined by the user using the <properties> element as a child of the <installation> element.

Example:

<properties>
  <property name="info.appName" value="My Application"/>
  <property name="info.appsubpath" value="my-company/my-app"/>
  <property name="info.url" value="http://www.my-company.com"/>
  <property name="info.company.name" value="My Company Name"/>
  <property name="info.company.email" value="info@my-company.com"/>
</properties>

Maven Properties

When launching the compilation using the IzPack Maven plugin, all Maven project properties are available as properties in IzPack.

Maven properties have priority over explicit properties, since they are set during instantiation of the IzPack compiler, before the IzPack compilation starts so they can not be replaced by later specifications from the <properties> element.

This behavior of defining implicit properties is similar to setting implicit Ant project properties in IzPack 4.X.

Example:

<properties>
  <!-- Installer variables -->
  <info.appName>My Application</info.appName>
  <info.appsubpath>my-company/my-app</info.appsubpath>
  <info.url>www.my-company.com</info.url>
  <info.company.name>My Company Name</info.company.name>
  <info.company.email>info@my-company.com</info.company.email>
</properties>

Reading/Substituting Properties

IzPack properties can be referenced in the installation specification by a leading 'at' placeholder followed by the property name (for example @my.prop.name).

Optionally, when embedding property substitution into text which continues without a whitespace character, the key can be embedded in braces opening after the 'at' (for example @{my.prop.name}).

IzPack properties are substituted when their definition is found in the installation descriptor XML inside of

Example:

 

<info>
  <appname>@{info.appName}</appname>
  <appsubpath>@{info.appsubpath}</appsubpath>
  <appversion>@{project.version}</appversion>
  <authors>
    <author name="@{info.company.name}" email="@{info.company.email}"/>
  </authors>
  <url>@{info.url}</url>
  ...
</info>