Ejemplo sencillo con izpack

De ChuWiki

En este ejemplo vamos a instalar IzPack y a hacer con él un instalador básico de una posible aplicación que hayamos hecho. El ejemplo será simple y con lo mínimo para hacerlo funcionar. En la documentación de IzPack y en sucesivos tutoriales de esta wiki podrás ver algunas características más avanzadas. Aquí tienes todos los fuentes para estos ejemplos de hacer instaladores con izpack

Instalar IzPack[editar]

Lo primero que debemos hacer es bajarnos la última versión de IzPack. El instalador está hecho, por supuesto, con IzPack, por lo que es un .jar que debemos ejecutar y necesitamos tener instalado previamente un JRE o JDK de Java. Si Windows está adecuadamente configurado, bastará con hacer doble click sobre el IzPack-install-4.3.3.jar que nos hemos bajado (o la versión que sea). Si no funciona, debemos ejecutarlo desde línea de comandos, abriendo una ventana de cmd y ejecutando el comando

C:\> java -jar IzPack-install-4.3.3.jar

Una vez instalado, aparte de documentación y demás, en el directorio bin del sitio donde hayamos instalado IzPack tendremos un ejecutable de nombre compile. Ese ejecutable es el que nos servirá para crear nuestros instaladores para nuestras aplicaciones. Debemos, por tanto, poner ese directorio bin en el PATH de búsqueda de ejecutables

C:\> set PATH=%PATH%;C:\Aplicaciones\IzPack\bin

Nuestra aplicación[editar]

Supongamos que la aplicación de la que queremos hacer un instalador ya está hecha y la tenemos en un directorio concreto. Puede ser similar a la siguiente estructura

+---APLICACION
    +---bin
    |    +---- aplicacion.jar
    +---conf
    |    +---- configuracion.xml
    +---doc
    |    +---- documentacion.html
    +---images
         +---- icono.gif

Vamos a hacer un instalador para esto. Supongamos que además vamos a hacer que la instalación de la documentación sea opcional.

El fichero xml del instalador[editar]

Para crear nuestro instalador debemos primero hacer un fichero xml en el que indicaremos qué cosas queremos que tenga nuestro instalador y qué cosas queremos que instale. El tag principal del fichero xml es <instalation> y debe llevar un atributo con la version 1.0. Esta versión es propia de IzPack y en un futuro puede cambiar si cambia el formato del xml. Supongamos que este fichero es instalacion.xml

<installation version="1.0">
...
</installation>


Información general[editar]

Ahora hay que poner una serie de tags más o menos generales para el instalador. Estos tags indican idioma para el instalador, nombre de la aplicación que se va a instalar, versión de la misma, tamaño de la ventana del instalador, etc, etc. Ponemos aquí algunos de ellos, entre los cuales algunos son obligatorios.

<installation version="1.0">

   <info>
      <appname>Chuidiang prueba izpack</appname>
      <appversion>1.0</appversion>
      <url>http:www.chuidiang.com</url>
      <authors>
         <author name="chuidiang" email="chuidiang@chuidiang.com"/>
      </authors>		
   </info>

   <guiprefs resizable="yes" width="800" height="600"/>

   <locale>
      <langpack iso3="spa"/>
   </locale>
   ...

El tag <info> contiene información sobre la aplicación que se va a instalar:

  • appname es el nombre de la aplicación.
  • appversion es la versión de la apliación
  • url es la página web de la aplicación
  • authors son los autores de la aplicación, poniendo nombre y email.

El tag <guiprefs> indica preferencias sobre la ventana del instalador. En el ejemplo indicamos tamaño y que si es redimensionable.

Con <locale> indicamos los idiomas posibles del instalador. No todos los idiomas están soportados

Los paneles del instalador[editar]

Al ejecutar el instalador saldrá una ventana con una cierta información y botones de "siguiente", así hasta pasar por una serie de paneles con los que llegamos al final de la instalación, IzPack, además de permitirnos definir nuestros propios paneles a medida, tiene una serie de paneles predefinidos habituales en los instaladores. En este ejemplo pondremos sólo unos pocos, aunque aquí puedes ver un listado completo de paneles predefinidos por IzPack. En el instalacion.xml pondremos los siguientes paneles

<installation version="1.0">
...
   <panels>
      <panel classname="HelloPanel"/>
      <panel classname="PacksPanel"/>
      <panel classname="TargetPanel"/>
      <panel classname="InstallPanel"/>
      <panel classname="FinishPanel"/>
   </panels>
...
  • HelloPanel es un panel de bienvenida que muestra la información que pusimos en <info>
  • PacksPanel es un panel que muestra los distintos componentes que se van a poder instalar. En nuestra aplicación de ejemplo dijimos que la documentación sería opcional, así que este panel mostrará, cuando tengamos el fichero instalacion.xml completo, dos posibles módulos a instalar. Uno con el ejecutable y sus ficheros de instalación obligatoria y otro con la documentación, que podremos o no marcar para ser instalado.
  • TargetPanel es un panel que pide al usuario en qué directorio quiere instalar la aplicación.
  • InstallPanel es un panel con las barras de progreso de la instalación.
  • FinishPanel es un panel indicando el éxito de la instalación.

Al final del artículo tienes fotos de ejemplo con cada uno de estos paneles.

Módulos a instalar[editar]

Ahora sólo nos queda definir qué módulos queremos instalar (el ejecutable y la documentación) y qué tiene cada uno de ellos. Esto se hace con el tag <packs> y los subtag <pack>

<installation version="1.0">
...
   <packs>

      <pack name="ejecutables" required="yes">
         <description>El ejecutable y sus ficheros</description>
         <file src="APLICACION/bin" targetdir="$INSTALL_PATH/bin"/>
         <file src="APLICACION/conf" targetdir="$INSTALL_PATH/conf"/>
         <file src="APLICACION/images" targetdir="$INSTALL_PATH/images"/>
      </pack>

      <pack name="documentacion" required="no">
         <description>La documentacion</description>
         <file src="APLICACION/doc" targetdir="$INSTALL_PATH/doc"/>
      </pack>

   </packs>

En este ejemplo, hay dos módulos <pack>:

  • uno de ellos denominado ejecutables (name="ejecutables") y cuya instalación es obligatoria (requiered="yes"). Ese módulo lleva una descripción que se mostrará en el instalador y lleva varios tag <file> en el que se indica qué ficheros se van a instalar, los ejecutables, ficheros de configuración e imágenes.
  • El otro, llamado documentacion (name="documentacion") y de instalación opcional (required="no"). Este módulo lleva también una descripción que se mostrará en el instalador y un tag <file> indicando el directorio donde está la documentación.

Veamos con un poco de detalle el tag <file>. Fíjate en la estructura de directorios de nuestro proyecto y supón que estamos haciendo nuestro instalacion.xml para IzPack en paralelo al directorio APLICACION

UN_DIRECTORIO
   +---instalacion.xml 
   +---APLICACION
       +---bin
       |    +---- aplicacion.jar
       +---conf
       |    +---- configuracion.xml
       +---doc
       |    +---- documentacion.html
       +---images
             +---- icono.gif

cuando ejecutemos el comando de IzPack compile para generar el instalador, lo haremos en el directorio UN_DIRECTORIO, que contiene tanto nuestra APLICACION con el fichero de configuración para IzPack instalacion.xml. En el tag <file> ponemos como atributo src qué fichero o directorio queremos incluir. El path para ese fichero o directorio es relativo al directorio de ejecución del comando compile. Por ello, en src ponemos APLICACION/bin, APLICACION/conf, etc. Si en <file src="..."> indicamos un directorio, el instalador incluirá ese directorio y todo su contenido, por lo que no necesitamos indicar los ficheros uno a uno.

Cuando instalemos, esos ficheros irán en la ubicación que haya deseado el usuario que ejecuta el instalador. IzPack pone a nuestra disposición esa ubicación elegida por el usuario por medio de una variable INSTALL_PATH a cuyo contenido podemos acceder poniendo un $ delante. Por ello, el targetdir en el que irá el fichero o directorio indicado será targetdir="$INSTALL_PATH/..."

Resumiendo, los <file src="APLICACION/bin" targetdir="$INSTALL_PATH/bin"/> indican qué ficheros y dónde se van a poner. El directorio bin de nuestra aplicación irá al directorio bin del path donde el usuario quiera instalar la aplcación.

Crear el instalador[editar]

Con esto tenemos todo ya configurado. Ahora sólo nos queda crear el instalador usando IzPack y este fichero instalacion.xml que acabamos de escribir. Vamos al directorio UN_DIRECTORIO y ejecutamos el comando

C:\> cd UN_DIRECTORIO
C:\> C:\Aplicaciones\IzPack\bin\compile instalacion.xml -o install.jar

donde

  • C:\Aplicaciones\IzPack se supone que es el directorio donde hemos instalado IzPack. Ahí está el subdirectorio bin y el ejecutable compile.
  • instalacion.xml es el fichero de configuración que acabamos de escribir
  • -o es la opción con la que indicamos el nombre que deseamos para el instalador (install.jar)

Si todo va bien, se generará un install.jar que es nuestro instalador. Podemos ejecutarlo con doble click sobre él o bien con el comando "java -jar install.jar". Las pantallas que muestra son las siguientes:

HelloPanel

PacksPanel

TargetPanel

InstallPanel

FinishPanel