Introduction
============

.. include:: include-top.inc

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 :-)

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 :-)

.. include:: include-bottom.inc
