Requirements
- Installer that adds link to start menu and file associations to windows
- Running program appears as an exe and has its’ own file name in windows task manager
- Use the built in JRE where possible or ask user to download if not available (bundling considered too large)
The finished installer can be seen at http://www.timestored.com/qStudio/
Solution
The best solution I found was launch4j and innosetup
launch4j
Launch4j was the only wrapper I found that let me keep a jar and have multiple exe’s that pointed to the same jar. Allowing me to have two programs but not double the size. One config to keep in mind when doing this is to use the chdir option with . to ensure paths work out properly.
InnoSetup
the tricky part with inno setup was getting the file associations to work. Here’s what I used:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[Icons] Name: "{group}\qStudio"; Filename: "{app}\qStudio.exe" Name: "{group}\sqlDashboards"; Filename: "{app}\sqlDashboards.exe" [Tasks] Name: qAssociation; Description: "Associate .q extension"; GroupDescription: File extensions: Name: kAssociation; Description: "Associate .k extension"; GroupDescription: File extensions: [Registry] Root: HKCR; Subkey: ".q"; ValueType: string; ValueName: ""; ValueData: "qKDBsource"; Flags: uninsdeletevalue; Tasks: qAssociation Root: HKCR; Subkey: ".k"; ValueType: string; ValueName: ""; ValueData: "qKDBsource"; Flags: uninsdeletevalue; Tasks: kAssociation Root: HKCR; Subkey: "qKDBsource"; ValueType: string; ValueName: ""; ValueData: "q KDB source"; Flags: uninsdeletekey; Root: HKCR; Subkey: "qKDBsource\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\QFILE.ICO" Root: HKCR; Subkey: "qKDBsource\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\qStudio.exe"" ""%1""" |
Combining into an ANT script
You want to
- Compile your JAR
- Create exes for both programs that point to the jar
- Place the exe’s into an installer
Like so (you need to install inno setup):
1 2 3 4 5 6 7 |
<launch4j configFile="src/main/resources/launch4j-qstudio.xml" /> <launch4j configFile="src/main/resources/launch4j-sqldashboards.xml" /> <exec dir="." executable="${INNO.SETUP.DIR}"> <arg line="/cc '${basedir}\src\main\resources\windowsInstall.iss'" /> </exec > |
Finished Installer
Can be found at http://www.timestored.com/qStudio/