views:

174

answers:

5

Hi,

I would like to know what packages are out there that can be used to create installers to distribute applications.

The target application is written in Java. The installer must be able to:

  • be compiled via an ant script
  • be compiled Linux (and Windows)
  • run on Windows and Linux
  • detect / handle previously installed versions of the application

We currently use IzPack, because it does all of the above, except the latter: It cannot easily detect previously installed version of the software, and this is the deal breaker for us.

Are there any other packages out there which fit the bill?

Thank you!

+5  A: 

I think that you may be missing izPack's CheckedHelloPanel which (according to the online docs) checks in the registry to see if another version has already been installed, and asks if you want to install a second version.

OTOH ... if you mean that the installer should be capable of doing an in-place upgrade of a previous version, that is a really hard problem, and I've yet to encounter an installer builder that even attempts to address it.

EDIT On non-windows platforms, there is a fundamental problem. If an application can be installed in a non-standard place, it is impossible to tell with 100% confidence if a copy (of the same or a different version) has previously installed. And this may be at the root of why CheckedHelloPanel only supports old version detection on Windows.

That having been said, izPack is open source, so if you can figure out a methodology for detecting a previous version on Linux, you can modify CheckedHelloPanel to implement it. And maybe the izPack will accept a patch. Anyway, I recommend you look at that approach first before ditching a tool that you are otherwise happy with. (Especially if what you want to do simply cannot be done on Linux.)

Stephen C
@Stephen C, I have considered that however, the feature is only available in Windows, and my installer needs to work on Windows. `Additonal on windows the registry will be scanned for an entry which determines that the product is already installed` ( http://izpack.org/documentation/panels.html#id4 )
bguiz
@Stephen C, also I don't require it to be capable of doing an in place upgrade. Assume the first version has not yet been installed, but subsequent versions should detect previous versions installed.
bguiz
+1 and check @Stephen C : I have followed your suggestion, except the extending `CheckedHelloPanel` did not really work well (for my target application at least). H/w I've extended `IzPanel` to achieve a similar effect, so thanks for the suggestion!
bguiz
A: 

InstallAnywhere can do all that, and ISMP (InstallShield Muli-Platform) did all that when Flexera was still selling it, but they're commercial software. I don't know of a free equivalent that does all those things.

Ed
We use InstallAnywhere at work, and I would *not* recommend it.
dave
We use it at work too...my coworkers are trying to convince management to move to another tool, it's nightmare and very very unproductive in terms of time needed to build and test it. I think next version is going to go with InstallShield
raticulin
The companies that made InstallAnywhere and InstallShield Multi-Platform were bought by a third company, and their product lines were merged. The bottom line is that ISMP is no longer on the market. They still sell "InstallShield" products for Windows native installs, but not for multi-platform.
Ed
The frustration as users of ISMP at my previous company was the reason we created BitRock :) InstallAnywhere was a better successor but still painful
Daniel Lopez
+2  A: 

install4j can handle all your requirements.

Mark
+1  A: 

Give InstallJammer a try. It's free, open source and should do exactly what you want. Specifically, it not only will detect a previous installation, but it actually has some sophisticated capabilities for detecting multiple previous versions and gathering needed information from them.

Download it and give it a try, and if you have any questions, drop by the forums and ask. I usually answer everyone pretty quickly and completely. 0-]

Damon
@Damon, I have checked out the documentation, and under `Check for previous install` and `Add install info`, makes references to `registry` and `install registry`. I am wary that these equates to (part of) the Windows registry. If not where is this registry actually located?
bguiz
InstallJammer keeps its own "registry" of installations on the target system. These are stored on disk and not in the Windows registry even on a Windows system.Each installation stores some basic information in the IJ registry, and that is what is used to check for previous installations. You can also store your own information with each installation if you want, as the installer just stores what it needs.It's a very flexible system though, so I think you will find you can get any information you want out of it.
Damon
+1  A: 

Give a try to our tool, BitRock InstallBuilder it meets all your requirements

Daniel Lopez