Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to bundle Java application for Mac/Windows?

Tags:

I have a Java .jar application that I want to distribute to my clients who are on Macs or Windows. I want to use a tool that takes my jar file and wraps it in a .dmg and a .exe wrapper for Macs and Windows respectively that does this when run:

  1. Checks if JRE is installed; if not, it installs JRE6 from Oracle. Else, it updates installed JRE to latest 1.6.x version.
  2. Creates a short cut link in Start Menu (in Windows) or the Applications folder (in MacOSX) to my wrapped application and lets my application to run using the above JRE
  3. Supports easy "uninstall application" for Windows. For Mac, simply drag the .app to Trash to delete.

Optional features:

  1. Support for platform independent app icons
  2. Support for auto updates to the jar
  3. Support for arguments to the JRE when running my .jar
  4. Linux support (.deb or .rpm)
like image 310
pathikrit Avatar asked May 23 '12 01:05

pathikrit


People also ask

Can you run Java applications on Mac?

On the other hand, every version of Mac OS X is a system ready to run your Java application. Included in Apple's operating system is both the JRE and JDK for J2SE v1. 3.1.


2 Answers

Check out Package Maker for Mac and Advanced Installer for Windows.

I've used them both for just about every requirement you've listed.

I haven't used them for auto-updates, but you probably have to build that logic into your app.

Don't expect them to do ALL of the work for you, though.

Expect to spend quite a bit of time building an installer for each platform.

I'm sure there are lots of options for Windows and Linux. Advanced Installer just happens to be the only one I've used.

I believe Package Maker is the standard for Mac. It's pretty awesome and easy to use.

Good luck!

like image 70
jahroy Avatar answered Oct 03 '22 07:10

jahroy


For deploying on Windows, I like using Launch4j for wrapping my application jar and creating a native Windows executable that can detect and use an already installed JRE, or allows you to bundle your own. It's fast, lightweight and easily scripted with Ant (or Maven) as part of your build process.

Combined with this, I typically use NSIS for creating an installer that puts in shortcuts, and allows install/uninstall/repair from Control Panel. With a bit of work, this can also be scripted via Ant, and can also be built from a Linux platform.

These solutions obviously won't work for Mac deployment, but I suspect you'll have to use different tools for the different platforms if you want the best experience for the end users.

like image 33
wolfcastle Avatar answered Oct 03 '22 08:10

wolfcastle