Our project has a requirement that the client be installable on a Windows workstation running Java Runtime Edition 1.4. To provide this capability, the team opted to use a technology called IzPack. IzPack provides a portable installer infrastructure, built in Java. The installer framework provides the features necessary to do uninstalls, automated installation and desktop icons.
However, when IzPack upgraded from version 3.8 to 4.x, they dropped support for JRE 1.4. Without this feature, our installer was dead in the water. Various solutions were investigated. For example, Retroweaver is an open source project that attempts to instrument Java 1.5 class files for 1.4 compatibility. However, IzPack was making use of the Java 1.5 XML parsing libraries that are not in the 1.4 JRE. Further investigation suggested that the time cost for this approach was just too high for a same-day turnaround.
Kevin Pfarr, the technical lead on another of our teams, has used a technology called Nullsoft Scriptable Install System (NSIS). It provides a goto based scripting language with decent documentation and a reasonable set of macros into which to hook. It runs as an executable on windows that will package up your installer and create an .EXE file. This executable is installed on the CI box and the path is updated. Wrapping a simple exec call in Ant to it and passing any environment variables desired into the script allows for a customizable installer to be created as needed.
Kevin and I paired for roughly an hour and migrated the current installer from IzPack to NSIS. We wrapped an Ant task around the execution process and then integrated it into the build. The installers created binary equivalent installations, negating any build number increment or the need for retesting.
Without Kevin’s input and expertise, this story could easily have taken several days. Kevin was excellent (as always,) and able to help us make sure we hit every requirement in the installer quickly and easily. Cross-team pairing is an excellent way to learn new technology, work with people you otherwise might not have been able, and, in this case, there was little to no “red tape” involved, so look for opportunities to take advantage of it whenever you can!