I know you said installer, but I think it is worth mentioning JSmooth. It's a launcher that generates an exe file for Windows. The reason it is worth mentioning is because it performs the job of location a JVM and can also download and install it for the user. This is often left up to the installer to do. Doing it dynamically like this is nicer though since Java gets updated quite often and JSmooth will always use the latest version JVM it can find (within your parameters).