A professional installation program has become an essential part of any commercial software product release. Java software installation on multiple platforms presents special problems not addressed by traditional installer development tools.
We examined two multi-platform installation products: Zero G Software Corp.’s InstallAnywhere 4.5.2 Enterprise ($2,495.00), and InstallShield Software Corp.’s InstallShield Multiplatform 4.51 Enterprise ($2,495.00). Since many Java development projects target primarily the Windows platform, we also looked at InstallShield Developer 7.02 ($1,199.00), to assess how well a Windows-only solution would address the needs of Java developers for that platform.
All of the programs that we looked at were Windows versions. Our test platform was Windows 2000. The Java program for which we built installers was a JDK 1.4 Swing application currently under development.
A look at the feature lists of the products on the vendors’ web sites [insert a link here to company info, including URLs] will show that the companies have a similar understanding of what is needed for building good installers:
All of the products do a good job with all of these points, with the obvious exception that InstallShield Developer is restricted to the Windows platform. What we’ll try to bring out in this review is the differences in approach to meeting these goals, and any distinguishing features (good or bad) of the products.
InstallAnywhere 4.5.2 is distributed exclusively on the web. Its documentation, part of the download, consists of a User Guide in both html and pdf formats. No special documentation search or index features are provided, though simple browser searches are easy since the entire guide is contained in one file.
InstallShield Multiplatform 4.51 and Developer 7.02 are available either by download or on CD. The shrink-wrapped packages come with printed “Getting Started Guide” booklets, but most of their documentation is provided in html and pdf formats. Search and indices are provided for both products in the style of Windows Help. We found the documentation to be readily navigable.
All of the programs provide wizards to ease the creation of a simple installer. The wizards prompt for things like the name of the program and the files to be installed on a user’s machine, then automatically generate an installer. InstallAnywhere created a usable installer with the least effort: one time through the wizard, a trip to the Zero G web site to download their Java 1.4 virtual machine (vm) bundle, and a visit to the program’s “Advanced Designer” to specify that we wanted to use this vm.
InstallShield Multiplatform would have been equally easy if we had been trying to build an installer for a JDK 1.3 or earlier application. This product didn’t have a 1.4 vm to bundle with an installer. There is a way to create a bundled vm for Multiplatform, but it is cumbersome and involves downloading and using a particular freeware command-line zip utility. The corresponding process for InstallAnywhere, when that product doesn’t have the desired vm, is considerably simpler.
InstallShield Developer, of course, is not intended for installing Java applications, and has no provision for bundling virtual machines. It was easy, however, to set up a directory structure like what we wanted to create on the user’s machine, and tell Developer’s project wizard to create this structure. Since Developer has no provision for creating an executable launcher for an application, it was necessary to use a DOS batch file to fulfill that purpose.
Few would be satisfied with the basic installers created by the installation project wizards in any of these products. There are many nuances in even the most routine installation that would be unreasonable to expect a wizard to handle. All of the products have installation development environments designed to manage these details.
InstallAnywhere organizes an installation project according to the following categories: project (properties of the entire install project), three installation phases (pre-install, install, post-install), platforms (for platform-specific properties), PowerUpdate (for integrating with Zero G’s live application update product), and build. Figure 1 is an example of the user interface for the “project” tab. Other categories have similar interfaces.
Figure 1. InstallAnywhere Project Tab
InstallShield Multiplatform (Figure 2) organizes a project using four categories: product, installer, uninstaller and build. The product category contains properties of the product being installed: its directory structure, launcher, how to handle finding or bundling a virtual machine, and the like. The installer and uninstaller categories deal primarily with the sequence of wizard panels that are presented to the user during installation or uninstallation.
Figure 2. InstallShield Multiplatform Product Tab
InstallShield Developer (Figure 3) is organized like a checklist of installation development tasks. For us this was the easiest method of organization to understand upon first seeing it. On the other hand, the details are closely tied to the requirements of the native Windows Installer technology, some of which are irrelevant to installing Java software. By the way, this application is a native Windows application itself, so its gui is the most responsive of the three.
Figure 3. InstallShield Developer Files Category
Once an installation developer has used the project wizard to generate a basic installer, the key to productivity with these tools is the ability to efficiently customize the installer to fit requirements. This customization consists of changing existing actions and wizard panels, inserting or removing provided actions, panels and rules (aka conditions), or creating completely new actions, panels or rules.
Again, the three products use different approaches to accomplish the purpose. InstallAnywhere has stock actions, panels and rules that can be inserted at any point into the installation sequence. Each one of these objects has properties that can be edited by the developer. Custom actions and panels can be written in Java using the API, extending the CustomCodeAction or CustomCodePanel classes, respectively.
InstallShield Multiplatform provides stock actions, panels and conditions (their version of rules) which can again be inserted into the installation sequence and edited using property sheets. This product provides the ability to create custom conditions in addition to actions and panels. It also organizes custom code beans in a BeanGallery to facilitate re-use by a team of developers across projects.
InstallShield Developer provides the same capabilities, but most customization is done using their proprietary InstallScript language. This requires serious installation developers to learn another specialized programming language; but InstallScript has existed in prior versions of InstallShield Windows installation toolkits, and there must be many Windows developers who already have experience with it.
A further customization offered to InstallShield Developer users is visual editing of new or existing panels. This capability makes it less likely that developers will have to write custom code in InstallScript.
InstallAnywhere supports the following platforms: Windows, Mac OS 8.1-9.x, Mac OS X, generic Unix, AIX, HP-UX, Linux and Solaris. InstallShield drops Mac and generic Unix from this list, but adds OS/2. It also offers OS/400 as an extra cost option. InstallShield Developer, of course, is limited to the Windows platform, and even its Windows support is not designed for Java.
Technical Support Policies
Zero G offers free support for InstallAnywhere Enterprise for 15 days following purchase. After that the fee is $1,495.00/year for Multiplatform, InstallShield charges $599.00/year for email-only support, $1,499.00/year for email/phone. The fees for Developer are $399.00/year and $699.00/year for email and email/phone support, respectively. Major corporate customers can pay InstallShield even more than these fees for higher priority support.
InstallAnywhere can create installers that run in your choice of AWT or Swing. InstallShield Multiplatform’s gui installers are restricted to AWT. InstallShield Developer’s installers are native Windows applications that look as good and behave as snappily as possible on that platform.
The InstallShield products require the use of platform-specific icon files (eg., .ico under Windows; we had to download an icon editor to convert our .gif icon) to assign an icon to a Java program launcher. InstallAnywhere is able to accomplish that using a .gif file.
Both Java-based programs can slow significantly when run for long periods of time, implying that they may have memory leaks. InstallShield Developer has no performance problems that we saw.
There is a lot more to each of these products than we could cover here. They are all well-designed and executed installation solutions. We liked InstallAnywhere’s quick support of newly released versions of Java, and its ease of use. InstallShield Multiplatform’s bean-based approach to custom Java code is a plus for that product, especially when more than one person will be using the tool.
For Java development targeted at the Windows platform, it is possible to save significant up-front investment by using InstallShield Developer. This would require, of course, that starting the application with a DOS batch file is acceptable. If someone on the team is experienced with the InstallScript language and older versions of InstallShield’s Windows installer products, there is extra incentive to consider using Developer.
Dave Neuendorf (www.neusysinc.com) and Richard Wiener (email@example.com)
Cite this review as follows: Dave Neuendorf, Richard Wiener: InstallAnywhere, InstallShield Multiplatform and InstallShield Developer, in Journal of Object Technology, vol. 1, no. 2, pages 175-181. http://www.jot.fm/products/review2