The IzPack project includes a set of utilities that you may find useful.
These projects live outside the regular IzPack installer Subversion repository. You can access it from http://svn.berlios.de/svnroot/repos/izpack/izpack-utils/ instead of http://svn.berlios.de/svnroot/repos/izpack/izpack-src/ for IzPack itself.
They will be shipped in the official IzPack releases under their own pack.
The 7-Zip project (see http://www.7-zip.org/) provides a so-called SFX for installers, i.e., an image that can be use to create self-extracting Windows executables. Once its content has been extracted, such a self-extracting executable can launch an executable or a file. In the later case, it is assumed that there exists an association between a file extension and a software component.
7-Zip SFX for installers works as follows:
The IzPack Windows executable wrapper takes an IzPack-generated installer JAR file, and wraps it inside a Windows SFX executable. This has several advantages, among these two ones:
And of course, you can ship a JAR and a Windows executable from the very same IzPack installer descriptor!
We have customized the SFX image from the 7-Zip project as follows:
While the rest of the work is licensed under the Apache License version 2, the sole SFX module is licensed under the Lesser GNU General Public License version 2 or later as required by the 7-Zip project.
izpack2exe is written in Python. It depends on 7-Zip and optionnaly UPX, a tool that can compresses executables.
In official IzPack releases, we provide this tool batteries-included on Windows, i.e., we will provide:
*izpack2exe as a Windows executable, so that you don't need to install Python, and
The usage is quite easy:
usage: izpack2exe.py [options] options: -h, --help show this help message and exit --file=FILE The installer JAR file / files (1 per bundled file, specify at least the installer JAR!) --output=OUTPUT The executable file --with-7z=P7Z Path to the 7-Zip executable --with-upx=UPX Path to the UPX executable --no-upx Do not use UPX to further compress the output --launch-file File to launch after extract (e.g., native launcher) --with-jdk Bundle a JRE/JDK with the .exe, eliminating the needing for a JRE just to run the installer. Points to the root of the desired JRE
A typical wrapping will be done like:
izpack2app is the Mac OS X brother of izpack2exe. It bundles a JAR installer inside an application bundle, so that your installer will look like a regular Mac OS X application.
To do that, we started from the Mac OS X Jar Bundler tool that you can find under /Developer/Java. We bundled a Jar installer, then stripped it. Indeed, an application bundle is nothing else but a structured set of files and directories.
What izpack2app does is simply:
izpack2app is written in Python. It does not require any third-party module to work. Python is bundled with Mac OS X and is mainstream on Linux and other Unix variants. We ship it as a Windows executable in the official IzPack releases (and of course also as a Python application!).
The usage is straightforward:
izpack2app.py installer.jar Installer.app
wraps installer.jar as Installer.app
izpack2jnlp is able to generate Java Web Start JNLP files so that IzPack-based installers can also be shipped via Java Web Start.
izpack2jnlp is written in Python and does not need third-party modules to work.
Please note that it only generates JNLP files: you must sign your installer JAR before you actually upload them to a web server as Java Web Start refuses to launch unsigned JARs.
You need to pass a few arguments on the command-line, run:
to see them.