What Are Good Installanywhere Replacements for Installing a Java Ee Application

What are good InstallAnywhere replacements for installing a Java EE application?

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):

  • They produce completely native and pretty Windows .exe installers that are
    easy to customise with your own graphics etc.
  • Both tools could easily be automated so that installer building is triggered from Ant. (With install4j it literally took me just five minutes to learn it and then implement it.)
  • Both companies seem to have good support (well, at least for prospects evaluating their products ;-) Especially from BitRock we got very quick replies.

In the following things install4j seemed better than BitRock for our needs (many of these are subjective, of course, so YMMV):

  • install4j definitely has better support for running custom Java code - it can be done at any point during the installation, and regardless of whether there's any preinstalled JRE on the system.
  • BitRock uses a more hard-coded sequence of installation steps while install4j is more flexible. In install4j, adding custom screens and forms (with or without custom Java code), asking user for input, etc., can be done at any point, before or after installing any files.
  • Also some basic things like defining the filesets that are to be copied to the target system, and adding an installation step to replace certain strings in configuration files seemed somewhat easier in install4j.
  • install4j has better support for JRE bundling
  • When creating installers on Linux, the look & feel of install4j IDE was nicer (more "native") than that of BitRock
  • (install4j's licensing options were better for us - we strongly preferred a couple of floating licenses to named licenses for all developers or an expensive "site license")

So ultimately we went with install4j. Here are some more details on why it was impressive:

  • Its IDE, where you put the installer together, is very simple and easy to use - I could figure out how to do most things I wanted quickly, even without looking at documentation. And when I did have to check something in the documentation (e.g. how to refer to installer variables; how to get started writing custom Java code against the install4j API), it didn't take long to find what I needed.
  • You can completely customise the screens and actions during the installation procedure, and also add custom screens and actions (coded against their Java API) at any point. This was important to us because we need to reuse existing custom Java code from the old InstallAnywhere installer.
  • In some small details, install4j seems ideal for Java developers. For example, if you want to add a validation script to check some user input, you can code that very quickly in the install4j IDE itself, using plain old Java, with coding assistance resembling that of IntelliJ IDEA.
  • We deemed the cost of install4j floating licenses reasonable, considering how good the tool is (and downright bargain compared to the inflated pricing of InstallAnywhere...)
  • In short, it seemed like the best installer tool available for deploying Java applications.

What is the best installation tool for java?

In MS Windows NSIS is great and it's free & OSS

Ref: Java Launcher with automatic JRE installation

Install builder for Java application

As pointed out earlier in a comment there is another similar thread, which anwsers my question. Thanks to @Zaki for this info.

What are the standard options for creating install packages for your software application?

If you are ready to pay for license, "InstallAnywhere" is a good solution.

I have used open source ant installer a while ago. If you are good with ANT builds, you can use ant installer; it s cross-platform.

Customized Installer suggestions

I would also consider NSIS. Read here to see how you can do multiple installations.

how to halt installanywhere installer process if intended target application already running

Configure a custom code action . Keep the following as reference.

public class PreviousVersionCheck extends CustomActionBase{

@Override
public void install(InstallerProxy proxy) throws InstallException {

boolean oldVersionRunning = isOldVersionRunning();//Logic to check if old version running.
proxy.setVariable("$OLD_VERSION_RUNNING$",oldVersionRunning)
}
}

After the custom code action , add a "Show Message Dialoge" .
Add the rule for the action as

$OLD_VERSION_RUNNING$ equals true

In the action properties, you have cancel and exit option,on click of dialouge Button..

Hope this helps..

What's the best way to distribute Java applications?

There are a variety of solutions, depending on your distribution requirements.

  1. Just use a jar. This assumes that the user has the the correct java version installed, otherwise the user will get "class-file format version" exceptions. This is fine for internal distribution inside a company.

  2. Use launch4j and an installer like NSIS. This gives you a lot more control, although the user can still do stupid stuff like un-installing the java runtime. This is probably the most popular approach, and what I currently use.

  3. Use Webstart. This also assumes that the user has the correct java version installed, but it's a lot easier to get going. My experience is that this is fine for tightly controlled intranet environments, but becomes a pain with larger deployments because it has some many weird failures. It may get better with the new plug-in technology in Java 1.7.

  4. Use a native-code compiler like Excelsior JET and distribute as a executable, or wrap it up in an installer. Expensive, and it generally ties you to a slightly older version of java, and there is some pain with dynamic class-loading, but its very effective for large-scale deployment where you need to minimise your support hassles.



Related Topics



Leave a reply



Submit