Monday, June 20, 2011

How To Configure izPack with Installer plugin in Griffon

Recently I used Installer plugin for Griffon in one of my open source project. Overall it was very easy to install and have it creating a simple installer for your Griffon application, however when it comes to customizing the izPack configuration I did not find any good documentation. Thanks to the usual helpfulness of Andres Almiray :) and going through some source code, I managed to customize the installer to meet my requirement and would like to share my findings here.

Once you install the installer plugin through:

griffon install-plugin installer

A set of izPack configuration templates will also be installed with the plugin. The template works pretty well for any Griffon example application but probably does not make too much sense for anything else. The easiest way to provide your own customization is by creating your custom template and override the default ones by hooking into Griffon build time event notification. I will show you how to do that here step-by-step.

First: Create your installer source directory to store your configuration and resources such as icons. In this tutorial we will create a folder structure as the following:

/src/installer/izpack/resources

Second: Create your own izPack configuration. Copy the default configuration to the resources folder you just created. The default configuration files can be found under ~/.griffon/projects/installer/izpack/resources.

Third: Create event handler to listen on packaging event and override the default configurations with yours. Open _Events.groovy file under /scripts (Create it if it does not exist yet). Add the following lines:

eventPreparePackageEnd = {installers ->
ant.copy( todir: "${projectWorkDir}/installer/izpack/resources", overwrite: true ) {
fileset( dir: "${basedir}/src/installer/izpack/resources", includes: "**" )
}

ant.replace( dir: "${projectWorkDir}/installer/izpack/resources" ) {
replacefilter(token: "@app.name@", value: griffonAppName)
replacefilter(token: "@app.version@", value: griffonAppVersion)
}
}


Now run the izPack packaging command

griffon package izpack

You should see the customized installer based on your configuration being generated. Hope you have found this tutorial helpful and again you are always welcome to provide your feedback and comment here.

3 comments:

Andres Almiray said...

Hi Nick, thanks for posting this up :-) One minor clarification, the script name must be _Events.groovy otherwise it won't be picked up.

Cheers.

Nick Zhu said...

Thanks Andres, that was a typo, now fixed.

A. Mooman said...

Hi,
What would you need to add a remote virtual Machine into opnenebula?
root@kvmserver:~# virt-viewer --connect qeum+ssh://oneadmin@192.168.156.17/system suse
Password:
libvir: QEMU error : server closed connection
unable to connect to libvirt qeum+ssh://oneadmin@192.168.156.17/system

The domain XML file always looking for the image source!
Thank you.

--Nasser
nmooman@gmail.com