As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened,
visit the help center for guidance.
Closed 7 years ago.
First of all hello and thanks for taking the time to help me with my problem.
I need to develop an application in Java which will use SQLite. The application needs to be cross platform (starting from Windows XP onwards, Linux and MAC).
I need to select an installer (be it free or paid) which will check whether JRE is installed on the target machine and if it isn't to install it, to install and create the DB and install the application.
If you have experience with any installer please recommend it and tell me what the pros and cons of it are. I need to compile a list and need to present it to my project manager so he can take appropriate actions.
Thanks in advance!
P.S. Many people have recommended IzPack. It is not an option because it already requires JVM in order to run.
First of all, most of packaging solutions has an option to pack the JRE inside the installer. So, the executable, be it an exe, bin or rpm will be shipped with proper JRE inside. This is better approach as it minimizes the number of of unexpected issues you can run into if you assume that the JRE would be available on target system e.g: permissions, JRE install location, JRE version etc.
The executable will unpack the JRE it was shipped with and launch java application (your installer).
There are many multi-platform packaging solutions both free/open source and commercial.
The most popular commercial is InstallAnywhere by Flexera. It comes with handy IDE, XML-based bean configuration (think of bean as a single step or screen during UI-based installation process) and many custom checks you might wish to perform during the installation. You can create a silent installation with response file to ship your installation on many boxes inside an enterprise. You also have the ability to create custom beans for your installation that will perform custom logic.
Install4J is also commercial solution - I have not tried it because it does not support all platforms I needed.
Another commercial install wizard is JExpress by Denova. It is also fully customizable and has the same platform support coverage as InstallAnywhere, it comes with the full suite of features but the development of the custom installation is less handy and it has less integration with Windows OS (for the time I played with it I could not perform a registry check and based on the result do actionA or action B).
Open source packaging wizards I tried are lzpack it is good and flexible but the lack of good documentation affects the time you get the things done.
InstallJammer is another open source but it does not support all platforms - only basic windows and linux platform but I think that this project has been discontinued.
Good luck!
I need to select an installer (be it free or paid) which will check whether JRE is installed on the target machine and if it isn't to install it, to install and create the DB and install the application.
I suggest a two part strategy.
- Check whether a suitable JRE is installed, and guide the user through upgrading if not. Surprisingly, this is best done using a JavaScript supplied/maintained by Oracle themselves. It is the deployJava.js. If you an accept that the tool to ensure a JRE is present is not part of the installer itself, that opens up the field of potential installers considerably, but I have a favorite.
- Install the rich client app. itself using Java Web Start.
<disclaimer>
JWS is just so great that I have to repeat the blurb I wrote on that info. page</disclaimer>
.
Java Web Start (JWS) is the Oracle Corporation technology used to launch rich client (Swing, AWT, SWT) desktop applications directly from a network or internet link. It offers 'one click' installation for platforms that support Java.
JWS provides many appealing features including, but not limited to, splash screens, desktop integration, file associations, automatic update (including lazy downloads and programmatic control of updates), partitioning of natives & other resource downloads by platform, architecture or Java version, configuration of run-time environment (minimum J2SE version, run-time options, RAM etc.), easy management of common resources using extensions..
Well I have found this guide on how to create an OS X installer
For Windows it seems that JSmooth does what you want.
Also you may want to have a close look at BitRock Installer.