The Packs Element
Packs in IzPack are bundles of files grouped under a certain package ID. Each file or set of files in a pack can be given certain attributes, which tell the compiler
- from where to get files into the compiled setup
and the installer - where to put the files
- which files to directly execute (or just receive the executable permission)
- which files to parse and replace variables in
- whether to overwrite existing target files with the same path
- whether to rename existing target files with the same path before they are overwritten
Each pack can be selected or deselected by default or by the user except is marked hidden or mandatory.
Packs Reference
There are the following possible root elements to define packs:
- pack
- refpack
- refpackset
which might embed a couple of possible nested elements describing the pack.
<pack>
Attributes
Attribute |
Usage |
---|---|
|
defines the pack name |
|
takes |
|
optional. Lets you make the pack targeted to a specific operating system, for instance unix, mac and so on |
|
optional. Lets you choose whether the pack is selected for installation by default or not. Possible values are yes and no. A pack which is not preselected needs to be explicitly selected by the user during installation to get installed |
|
can be used so that the files are not located in the installer Jar. The possible values are true or false, the default being false. The author of this feature needed to put his application on a CD so that the users could run it directly from this media. However, he also wanted to offer them the possibility to install the software localy. Enabling this feature will make IzPack take the files on disk instead of from the installer. Please make sure that your relative files paths are correct! |
|
this attribute is used to give a unique id to the pack to be used for internationalization via packsLang.xml file |
|
this attribute is used to reference a unique resource that represents the pack's image for the ImgPacksPanel. The resource should be defined in the <resources> element of the installation XML using the same value for the id attribute of the |
|
an id of a condition which has to be fullfilled to install this package |
|
takes true or false and specifies whether the pack shall be shown in the packs panel. The size of a hidden pack will be used to calculate the required space, but the pack itself won't be shown. A hidden pack can be preselected or selected conditionally. For the latter, you have to specify a |
Nested Elements
<singlefile>
- Adding/renaming a Single Pack File
See Pack SingleFile for more details.
<file>
- Adding a Set Of Files
See Pack SingleFilePack File for more details.
<fileset>
- Adding a Set Of Files With Filtering
See Pack Fileset for more details.
<description>
- Adding a Description
The contents of the <description>
tag describe the pack contents. This description is displayed if the user highlights the pack during installation.
<depends>
- Defining Dependencies
This can be used to make this pack selectable only to be installed only if some other is selected to be installed. The pack can depend on more than one by specifying more than one <depends>
elements. Circular dependencies are not supported and the compiler reports an error if one occurs.
This tag takes the following attribute:
|
The name of the pack that this one depends on |
<os>
- OS Restrictions
It is possible to restrict a pack to a certain list of operating systems. This tag takes the following attributes:
|
unix, windows or mac |
|
the exact OS name (ie Windows, Linux, ...) |
|
the exact OS version (see the JVM os.version property) |
|
the machine architecture (see the JVM os.arch property) |
<updatecheck>
- Cleaning Up After Updates
This feature can update an already installed package, therefore removing superfluous files after an installation.
Each pack can now specify an <updatecheck>
tag. Includes and excludes can be defined as filesets, but no file name mappers can be used. If no include or exclude pattern is given all files are deleted in $INSTALL_Path on the target system, which were not part of the setup.
Be careful with this facility to not delete 3rd-party files coming from other installations, for instance plugins to a base applications.
Example::
<updatecheck> <include name="lib/**" /> <exclude name="config/local/** /> </updatecheck>
$INSTALL_PATH
is treated as the base path for include/exclude patterns with relative paths.
<parsable>
- Parse/Substitute Variables In Installed Files
Files specified by <parsable>
are parsed after installation and may have variables substituted.
|
the file to parse, could be something like |
|
specifies the type (same as for the resources) - the default is plain |
|
specifies the file encoding |
|
specifies the operating system, works like for |
|
an id of a condition which has to be fullfilled to parse this file |
<executable>
- mark file as executable and optionally execute it
The <executable>
tag is a very useful thing if you need to execute something during the installation process. It can also be used to set the executable flag on Unix-like systems. Here are the attributes:
|
the file to run, could be something like |
|
If the executable is a jar file, this is the class to run for a Java program |
|
|
|
specifies when to launch :
|
|
specifies what to do when an error occurs:
|
|
specifies the operating system, works like for |
|
takes |
|
an id of a condition which has to be fullfilled to execute this file |
Takes an <args>
tag to pass one or more arguments (one <arg>
tag per argument) to the executable.
<arg>
passes the argument specified in the value
attribute. Slashes are handled special (see attribute targetfile of tag <parsable>
.
<os>
- make a file OS-dependent
The <os>
tag can be used inside the <file>
, <fileset>
, <singlefile>
, <parsable>
, <executable>
tags to restrict it's effect to a specific operating system family, architecture or version using the following attributes:
Attribute |
Description |
---|---|
|
unix, windows, mac to specify the operating system family |
|
the operating system name |
|
the operating system version |
|
the operating system architecture (for instance the Linux kernel can run on i386, sparc, and so on) |
Example
<packs> (...) <pack name="Core" required="yes"> (...) <executable targetfile="$INSTALL_PATH/bin/compile" stage="never"> <os family="unix"/> </executable> (...) </pack> (...) </packs>
<additionaldata>
- Adding Customizing Data
This tag can also be specified in order to pass additional data related to a file tag for customizing.
Attribute |
Description |
---|---|
|
key to identify the data |
|
value which can be used by a custom action |
<refpack>
The <refpack>
takes only one attribute file
, which contains the relative path (from the installation compiler) to an externally defined packs-definition. This external packs definition is a regular IzPack installation XML. However the only elements that are used from that XML file are the <packs> and the <resources> elements.
This enables a model in which a single developer is responsible for maintaining the packs and resources (e.g. separate packsLang.xml_xyz files providing internationalization; see Internationalization of the PacksPanel) related to the development-package assigned to him. The main install XML references these xml-files to avoid synchronization efforts between the central installation XML and the developer-maintained installer XMLs.
Attributes
Attribute |
Description |
---|---|
|
Relative path during compile-time to an externally defined packs-definition |
<refpackset>
The <refpackset>
tag can be used in situations were there is no predefined set of <refpack>
files, but a given directory should be scanned for <refpack>
files to be included instead. This element takes the following parameters:
Attribute |
Description |
---|---|
|
Relative base directory during compile-time for the refpackset |
|
Pattern of files in |
Example:
<refpackset dir="" includes="**/refpack.xml" />
Internationalization of the PacksPanel
In order to provide internationalization for the PacksPanel, so that your users can be presented with a different name and description for each language you support, you have to create a file named packsLang.xml_xyz where xyz is the ISO3 code of the language in lowercase. Please be aware that case is significant. This file has to be inserted in the resources section of `` install.xml`` with the id and src attributes set at the name of the file. The format of these files is identical with the distribution langpack files located at `` $IZPACK_HOME/bin/langpacks/installer``. For the name of the panel you just use the pack id as the txt id. For the description you use the pack id suffixed with .description.
An example:
<resources> <res id="packsLang.xml_eng" src="i18n/myPacksLang.xml_eng"/> </resources>
The packsLang.xml_eng file:
<langpack>
<str id="myApplication" txt="Main Application"/>
<str id="myApplication.description" txt="A description of my main application"/>
[]
</langpack>