I spend couple of days writing a windows installer for java application. Writing installer for java application is a bit complex compared to windows applications. All the classes in the project has to be jarred and a manifest has to be written pointing to entry class or main class of the jar.
I tried many freeware and sharewares like wrapper_win32_3.0, JSmooth, launch4j, JavaExe for writing installer.
Though these could generate a installer, but I couldn't find advance feature like folder creation and registry editing to text/binary file modification, modification of environment variables and system reboots etc., Then I found NSIS (Nullsoft Scriptable Install System). This is an excellent open source tool to create installers. It is capable of doing everything that is needed to setup a software. It is script based language allows you to create the logic to handle most complex installation taks. Many scripts and plug-ins are already available.
Within 4 hours I could able to learn the script and write a brand new and fully functional installer for my project. I could able to incorporate complex features like JRE check, read config settings from custom installer page and update those in respective config files, I could able to call Windows API's. I could able to initiate, start and stop of Window Service.
I can simply say this is the best tool for creating installer for DotNet as well as Java applications.