Introduction

Introduction

Welcome to IzPack !

IzPack is a tool that will help you to solve your software installation problems. It is a JavaTM based software installer builder that will run on any operating system coming with a Java Virtual Machine (JVM) that is compliant with the Sun JVM 1.5 or higher. Its design is very modular and you will be able to choose how you want your installer to look and you will also be able to customize it using a very simple Application Programming Interface (API). Although IzPack is essentially a JavaTM only application (it can run on virtually any operating system), it can interact in a clean way with the underlying operating system. Native code can interact with it on a specific platform without disturbing the operation on incompatible operating systems. For instance, you can develop Unix-specific code that will be silent if run on Windows. To put it in a nutshell, whereas most of the other JavaTM installers force you to go their way, IzPack will let you go your way. Some respectable companies have been using it in order to produce customized installers for their very specific needs.

"So, if it's so good, how much is it ?" : well, you can get it for free. BUT IzPack is not a freeware. It's not free as in "free beer" but "free as in free speech". So it's neither freeware nor public domain. It is software covered by the Apache Software License 2.0. You have access to the IzPack source code and you can modify it to make it suit your needs.

You are not required to publish your modifications per the terms of the Apache Software License. However if you have made general-purpose changes, please consider contributing them back as it will benefit to the larger IzPack community. Another benefit of contributing back your changes is that you won't have to maintain your own patches and apply them back whenever we publish a new version of the software...

To learn more about the Apache Software License 2.0, visit http://www.apache.org/licenses/LICENSE-2.0.html

The Features

IzPack uses XML files to describe installations. When you make an installer, you have a choice of panels. You can see panels as a kind of plugin that composes the installer. For instance, a panel can choose the installation path, the packs to install, prompt the user for a license agreement and so on. This approach is very modular. You can also create your own panels if you have specific needs. In some cases you even have a choice from multiple panel versions for the same task. You can also choose the order in which panels appear during the installation process. IzPack can be used in a number of different ways:

  • by writing the XML installation file "by hand" and compiling it with the command line compiler
  • by invoking the compiler from the great Apache Ant tool (see http://ant.apache.org/) as IzPack can be used as a task for Ant

Here is a brief (and certainly incomplete !) list of the main IzPack features :

  • XML based installation files
  • easy internationalization using XML files (10 translations are already available)
  • Ant integration, command-line compiler
  • easy customization with the panels and a rich API (even an XML parser is included !)
  • powerful variable substitution system that you can use to customize scripts and more generally any text-based file
  • powerful condition system that can be used to conditionally show panels, user input fields and execute files conditionally
  • different kinds of installers (standard, web-based, multi-volume, ...)
  • launching of external executables during the installation process and Unix executable flag support (useful for the scripts for instance)
  • layout of the installation files in packs (some can be optional)
  • native code integration facilities
  • jar files nesting support
  • ... more things to discover and create !.

The Development

I started writing IzPack in April 2001 and many people have helped me improving it since. i prefer not to mention them here as i would for sure forget some of them, so please check the file named Thanks.txt which i try to get as up-to-date as possible in order to mention everyone who helped me. As far as i'm concerned, i'm a french student and i rather see this as a fun activity in my free time where i can learn a lot of great things. The contributors to the project are both individuals and companies. Help can take any form :

  • translations
  • new features and various fixes
  • bug fixes
  • writing manuals
  • ... anything else you like (smile)

The official IzPack homepage is located at http://izpack.org/. The IzPack developer services are generously hosted by Codehaus at http://izpack.codehaus.org/. The project is grateful to the BerliOS community for havinh hosted the services in the past.

3rd party code used in IzPack

IzPack uses several 3rd party libraries and i would like to mention them in respect for their respective authors work :

  • NanoXML by Marc De Scheemaecker: the XML parser used inside IzPack and released under a zlib/png-style license - see http://nanoxml.sourceforge.net/
  • Kunststoff Look and Feel by Incors Gmbh: a SwingTM Look and Feel that can be used for installers. Released under the LGPL license - see http://www.incors.org/
  • Tango Icons: icons from the Tango project at http://tango.freedesktop.org/
  • Some Apache Jakarta classes and libraries: released under the Apache License
  • Metouia Look and Feel by Taoufik Romdhane: released under the LGPL license - see http://mlf.sf.net/
  • Liquid Look and Feel by Miroslav Lazarevic: released under the LGPL license - see liquidlnf.sf.net/
  • JGoodies Looks by Karsten Lentzsch: released under a BSD-style license - see http://looks.dev.java.net/
  • Nimbus look and feel by Sun Microsystems under a LGPL license - see https://nimbus.dev.java.net/

So, now let's dive into understanding how IzPack works. You'll be surprised to see how powerful and simple it can be (smile)