Which (commercial or free) installer tool would you recommend to replace InstallAnywhere as the installer for a Java EE application? What do you specifically like about it, and what are its downsides?
Some requirements:
- Must support running custom Java code as part of installation procedure
- Must support Windows, including latest 64-bit versions like Windows Server 2008; support for other target operating systems is a plus
- Must be able to install a bundled application server (such as Resin or Tomcat) as a service on Windows
- Must support basic stuff like copying and moving files around, editing configuration files, extracting ZIPs, etc.
- (Must support bundling a specific version of JRE; at the very least by including a ZIP to be extracted)
Edit: a few more points:
- Preferably does not depend on a preinstalled JRE (or any other 3rd party runtime environment or library) on target machine; in other words, can produce an independent Windows .exe (or .msi)
- The tool should preferably be cross-platform so that installer development can be done on Linux, Windows, or Mac.
- Should preferably have a decent GUI for putting the installer together. Once that is done, however, it must be possible to skip the GUI and make installer building part of automated build process.
In this case, unfortunately, SO didn’t tell us much that we didn’t know already (and indeed the tool we ultimately chose was not mentioned in any answer). However, I’m posting our experiences here, as they might be helpful to others later on.
We (quickly) evaluated the following installer tools, mostly by looking at their websites and browsing for other information on the web: Actual Installer, Advanced Installer, BitRock InstallBuilder, Inno Setup, Install Creator, Installer VISE for Windows, InstallShield, install4j, IzPack, NSIS, openInstaller, Scriptlogic MSI Studio, Smart Install Maker, Symantec Wise Installation Studio, and WiX.
We screened out most of them early on, and ended up shortlisting two options for closer evaluation: BitRock InstallBuilder and install4j. For these tools, we downloaded evaluation versions and did some prototyping, to see if the things that are most important to us are really supported, and how easy or hard it is to get things working.
Both of the options were good in many things (and both seemed good alternatives to InstallAnywhere):
In the following things install4j seemed better than BitRock for our needs (many of these are subjective, of course, so YMMV):
So ultimately we went with install4j. Here are some more details on why it was impressive: