IzPack 4.3.0 was released on April 21st 2009.
The present document contains the announcement materials and some highlights on the new features in this release.
About IzPack

IzPack is a one-stop solution for packaging, distributing and deploying applications. IzPack is opensource, released under the liberal Apache Software License 2.0.
It is fully cross-platform and generates a single installer. As such, it is an alternative to native solutions such as platform-specific installers and package managers.
IzPack-generated installers only require a Java virtual machine to run.
Many companies and projects have been using IzPack over the years, including Sun Microsystems, JBoss/RedHat, the Scala language project, some ObjectWeb/OW2 projects, XWiki and many more.
Downloading IzPack
IzPack can be obtained free of charge from its website at http://izpack.org/
Getting professional services
IzPack creator and project leader Julien Ponge offers paid professional services:
- one-time and subscription-based support,
- consulting,
- custom developments,
- installer creation bootstrap.
Do not hesitate to contact Julien and get more informations from http://izpack.proservices.ponge.info/
Those services directly help in sustaining and improving IzPack.
About this release
This release is the result of a collective effort where our developers and contributors worked hand-in-hand to improve IzPack. Also, new developers have joined the project to bring further ideas and energy to the project.
About a hundred issues have been resolved in this release. The complete list along with JIRA issues can be reviewed at http://jira.codehaus.org/browse/IZPACK/fixforversion/14763
New features highlights
The release contains its usual set of bug fixes, small enhancements and documentation improvements. Each resolved issue is significant, however we cannot detail each of them. Instead, let us focus on some important new features in IzPack 4.3.0.
Scripting support through the Apache Bean Scripting Framework
IzPack provides installation, compilation and uninstallation events which can be intercepted by custom handlers. This is a common IzPack extension mechanism. As an example, IzPack itself provides such handlers for various tasks such as writing Windows registry entries during installation, and properly removing them during uninstallation.
This new feature allows such handlers to be implemented with a scripting language rather than Java classes. This makes them easier to develop, test and maintain in some contexts.
The Apache Bean Scripting Framework (see http://jakarta.apache.org/bsf/) supports a wide range of languages, including JavaScript, Groovy, Python, Ruby and more.
This feature was contributed by Matthew Inger.
See http://jira.codehaus.org/browse/IZPACK-240
Full console manual and automated installations
This is probably the most long awaited feature in IzPack!
From the start, IzPack has provided the ability to record and replay installations on other systems. This is however very different from “real” console installations, which turn out to be useful in production scenario (e.g., installing a software on a remote system through a SSH connection that does not forward X11 instructions).
Console installations can be manual (through text prompts) or even automated.
This great work was contributed by Mounir El Hajj.
See http://jira.codehaus.org/browse/IZPACK-320
Removal of NanoXML in favor of a javax.xml backend
IzPack was first created in 2001, a time when there was no standard XML parser in the Java standard runtime (actually this was the very beginning of XML being all the rage!).
IzPack chose to embed a library called NanoXML as it was efficient, very small and it came along with a sensible API. We are now in 2009: there is a standard Java API for XML parsing in every Java runtime, and NanoXML has not been maintained for years. It also started to show some limitations and bugs, such as not supporting XML namespaces and more.
This release is free of NanoXML and instead uses a javax.xml backend. The changes to the existing IzPack code base and third party developments are insignificant as an adapter has been developed, carefully mimicking the NanoXML behavior and preserving the parts of its interface that we were using.
This work was made by Anthonin Bonnefoy and David Duponchel, 2 students from a french computer engineering school called ISIMA in the beautiful city of Clermont-Ferrand.
For the record, Anthonin and David have now joined the IzPack project as developers.
See:
http://jira.codehaus.org/browse/IZPACK-280,
http://jira.codehaus.org/browse/IZPACK-306
Ability to call Java classes before and after each panel
IzPack panels have always been able to perform some custom validation. A typical example is the LicencePanel that vetoes the installation to progress as long as the user has not accepted the license agreement.
Florian Buehlmann has extended the validation mechanism so that a more generalized set of validations can be performed before and after a panel.
See http://jira.codehaus.org/browse/IZPACK-285
Privileges elevation improvements
IzPack is able to perform privileges elevation on various operating systems, as otherwise some installations can fail due to insufficient user permissions.
IzPack 4.2.1 already brought some improvements in this area by allowing the elevation mechanism to be enabled only on certain operating systems (e.g., attempt an elevation only when run on Windows Vista or Mac OS X).
The detection of the current user privileges has been improved on Windows XP and Vista. Also, the uninstaller now avoids privileges elevation when the installer did not perform one. Finally, there was an issue when the installer was started from a Windows UNC path.
See:
http://jira.codehaus.org/browse/IZPACK-217,
http://jira.codehaus.org/browse/IZPACK-347,
http://jira.codehaus.org/browse/IZPACK-308
Graphical reporting of launch-time errors
When an installer is launched, some errors can be encountered before the graphical user interface is up. This results in the end-user not seeing an error nor seeing the installer showing up, unless it was started from a terminal.
Christian d’Heureuse contributed a fix for that, so that an error message shows up graphically.
See http://jira.codehaus.org/browse/IZPACK-318
AntActionListener improvement
Up to now an AntActionListener required the build file to exist on the system to be use as the input to Ant. This limits the beforePack and beforePacks order to only those build files that preexist since at this point of the installation no files have been extracted from the installer packs. This also requires that build files exist on the system even if the Ant custom actions being executed are transient and not needed before or after the installation is performed.
The AntActionListener has been improved to reference a buildresource property that can specify an IzPack resource reference defined by the tag. This resource will be extracted to a temporary file on the system and used as the Ant build file for the AntActionListener. The temporary file will be removed when the installation completes. Using this mechanism, an embedded build file can be now used which does not need to exist on the system before or after the installation.
Note that either the buildfile or buildresource must be provided but not both.
See http://jira.codehaus.org/browse/IZPACK-158
Configuration of the uninstaller path
It was possible to define a customized name for an uninstaller, but it was not possible to customized where it was written. Florian Buehlmann fixed that.
See http://jira.codehaus.org/browse/IZPACK-263
Compile-time variable substitutions
Kjell Braden added the possibility to perform variables substitution in files at the installer compilation time.
See: http://jira.codehaus.org/browse/IZPACK-365
Greetings
The IzPack team would like to thank its developers and contributors for having made this release possible! We would also like to thank our numerous and growing users worldwide for pushing us forward!
Other thanks go to:
Further links