
With the release of Java 7 u6 and now Java 7 u7 and Java FX 2.2, you can create a Windows native installer and application. There are a couple of good guides out there, consider this the Joe Friday version. The steps that follow show how to setup NetBeans 7.2 to create Windows native installers and applications. Yes folks, turn your JavaFX application into an EXE!!!!
Note: The versions listed are required for this to work. However, newer versions should, of course, still work.
Initial Setup
Java 7 JDK
First, you need to install Java 7 u7 or later. This includes JavaFX 2.2 which is now just part of the JDK. No need to go into the installation steps, just a standard install in the default location is fine.
NetBeans 7.2

Next you will need to install NetBeans 7.2. I use the Java EE version, but the SE edition should work too.
Installation Software
To make the exe file, download and install Inno Setup 5. This makes an installer and creates an exe. To create an .msi installer use WiX.
Create a JavaFX Application in NetBeans
Of course, before we can create an installer for an app, we need an actual application. If you are just testing, the default JavaFX application works just fine. To create it, start NetBeans then choose File --> New Project --> JavaFX --> JavaFX Application. Select a Project Name and a directory location and you should be all set.
Note: For my example I used a sample app I created called TextViewer. In my source files you will see a references to that project.
Before proceeding, make sure you can build and run your application. This should ensure that you have a build.xml
file and that everything is working correctly.
Configure NetBeans Ant Build File
Hooray! You have a JavaFX app and you are ready to package it for Windows. So to do that, we are gonna need to make a couple of configuration changes to the build.xml
file.
Aside: Hey Mike. What is this build.xml
file of which you speak? NetBeans uses Ant for all of its Java compiling and packaging tasks. Ant uses XML files for its configuration. So to make native packaging work, we need to make a few edits to some of these files. Typically, build.xml
is the main configuration file for NetBeans' projects.
Adding a Build Target
The next step in the process is to add a build target for JavaFX to the build.xml
file. Here is what the code looks like. We may refer back to this again later.
fxtarget.xml
1 <target name="-post-jfx-deploy">
2 <fx:deploy width="${javafx.run.width}" height="${javafx.run.height}"
3 nativeBundles="all"
4 outdir="${basedir}/${dist.dir}" outfile="${application.title}">
5 <fx:application name="${application.title}" mainClass="${javafx.main.class}"/>
6 <fx:resources>
7 <fx:fileset dir="${basedir}/${dist.dir}" includes="TextViewer.jar"/>
8 </fx:resources>
9 <fx:info title="${application.title}" vendor="${application.vendor}"/>
10 </fx:deploy>
11 </target>
To install the target for FX, follow these steps:
- Get the XML code for the JavaFX target here: fxtarget.xml. Copy the text to the clipboard.
- Open your NetBeans Project.
- Click on the Files tab. This should show all the files in your project. Open the
build.xml
file. - Paste the code you copied on the line after the
import
tag. - Next, add an XML namespace for the
fx
target. Add the following text to theproject
tag of thebuild.xml
file:xmlns:fx="javafx:com.sun.javafx.tools.ant"
- Save the file.
- Click on the Projects tab in the upper left corner of NetBeans.
- Clean and Build the project.
You should now see some additional information about your build, similar to this:
Created dir: C:\Users\student\ora\javaone\java1-pub\packaging\native\TextViewer\dist Detected JavaFX Ant API version 1.2 Launching <fx:jar> task from C:\Program Files\Java\jdk1.7.0_07\lib\ant-javafx.jar Launching <fx:deploy> task from C:\Program Files\Java\jdk1.7.0_07\lib\ant-javafx.jar Using base JDK at: C:\Program Files\Java\jdk1.7.0_07\jre Skip [MSI Bundler (WiX based)] due to [Can not find WiX tools (light.exe, candle.exe).] Detected [iscc.exe] version 0.0 but version 5.0 is required. Skip [Exe Bundler (based on Inno Setup)] due to [Can not find Inno Setup Compiler (iscc.exe).] Creating app bundle: TextViewer in C:\Users\student\ora\javaone \java1-pub\packaging\native\TextViewer\dist\bundles Result application bundle: C:\Users\student\ora\javaone \java1-pub\packaging\native\TextViewer\dist\bundles
The following section endeavors to fix those skip messages shown above.
Final Touches to build.xml
There are a couple of other changes you need to make to the build.xml
file before your exe and installer will be built.
Enter your Application Name
Look at the build.xml
file and in the fx:fileset
tag, replace TextViewer.jar
with the jar file name of your application.
Set the Application Title and Vendor
The final thing you must do is set the application title and vendor for the installer. The vendor name on Windows is used to determine what directory name your application is installed under in the applications folder. The title will of course be used to name the shortcut that launches your application. You have two choices for set these names, do only one of the following.
- Choice one, in
build.xml
edit thefx:info
tag and replace${application.title}
and${application.vendor}
with the strings you wish to use for your application. - Choice two, in the
nbprojects
directory, edit theproject.properties
file and file theapplication.title
andapplication.vendor
key and replace the values defined there with your title and vendor name.
With that, everything for NetBeans should be configured. Now go to the next section and setup your installer applications.
Configuring the Installer Apps
Add Inno Setup 5 to the Path
For Inno Setup 5 to create its installer bundle, it needs to be in the path. To check to see if it is in the path, open a Command Prompt window and type:
iscc.exe
If the file is not found, then Inno Setup 5 is not in the system Path variable.
To set the path on Windows 7 select Start --> Computer --> System Properties --> Advanced System Properties --> Environment Variables then choose System Variables, Path, and then Edit. Enter the following to add Inno Setup 5 to the Path: C:\Program Files (x86)\Inno Setup 5;
Now typing iscc.exe
should produce something like this:

This part of the build process should now be ready to go.
Add Wix to the Path
Just like Inno Setup, Wix needs to be in your system Path
for NetBeans to be able to use it. Add the Wix bin directory C:\Program Files (x86)\WiX Toolset v3.6\bin
to the path like you did for Inno Setup. To test to see if Wix is in the path, open a Command Prompt window and type:
candle.exe
If the file is found and you get help information like you did for iscc.exe
, then you should be ready to go.
Building you Native App and Installer
With everything configured and ready to go, it is time to clean and build your application. Clean and build your project. When you do, you should notice the build process takes quite a few seconds longer as the native application files are created.
NetBeans builds a bundle
directory under the code
directory. All the native files and installer can be found here. The directory contains the compressed installer with a .exe and .msi extension. In addition, a runnable .exe with the JRE required for the Java app is included. For my test application, the bundle took about 217MG. The .msi file was 30MB and the .exe file was 47MB.
Run the installer to have your application installed natively. Your application should be installed in the start menu under the vendor name you set up earlier. You should be able to run your application just like any other Windows app!
In my testing, for Inno Setup 5 (.exe) the application was installed in the C:\Users\username\AppData\Local
directory and takes up about 140MB of disk space. For the WiX installer (.msi) the application was installed in the C:\Program Files (x86)\TextViewer
directory and takes 140MB.
Troubleshooting
NetBeans Build Error: The prefix "fx" for element "fx:deploy" is not bound.
This is caused by not defining an XML namespace for "fx". See the Adding a Build Target section above for details.
NetBeans Build Error: Main application jar is missing.
Problem: Both Inno Setup 5 and Wix are installed and in the path, but no exectuables are being built. Plus, I am getting error messages like the following:
Skip [Windows Application Bundler] due to [Main application jar is missing.] Skip [MSI Bundler (WiX based)] due to [Main application jar is missing.] Skip [Exe Bundler (based on Inno Setup)] due to [Main application jar is missing.]
Solution: The .jar
name of your application has not been added to the build.xml
file. Make sure you have replaced TextViewer.jar
with the name of your application.
Install Problem: The App installed under my user name for my laptop.
Solution: You have not set the application.title
or application.vendor
set in either the build.xml
file or the nbproject/project.properties
file. See the Final Touches section above.
Resources
The following resources were used to created this page: