Merge branch 'develop' into task/JAL-3796_notarization
[jalview.git] / utils / install4j / install4j8_template.install4j
index 8889ddf..5b3b80d 100644 (file)
@@ -1,34 +1,97 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<install4j version="8.0.2" transformSequenceNumber="8">
-  <directoryPresets config="." />
-  <application name="Jalview" applicationId="6595-2347-1923-0725" mediaDir="../../build/install4j" lzmaCompression="true" shortName="Jalview" publisher="University of Dundee" publisherWeb="https://www.jalview.org/" version="$$VERSION$$" allPathsRelative="true" macVolumeId="5aac4968c304f65" javaMinVersion="0000000000" javaMaxVersion="9999999999" allowBetaVM="true" jdkMode="jdk" jdkName="JDK 11.0">
+<install4j version="8.0.10" transformSequenceNumber="8">
+  <directoryPresets config="../.." />
+  <application name="${compiler:JALVIEW_APPLICATION_NAME}" applicationId="${compiler:WINDOWS_APPLICATION_ID}" mediaDir="${compiler:BUILD_DIR}" lzmaCompression="true" shortName="${compiler:INTERNAL_ID}" publisher="University of Dundee" publisherWeb="https://www.jalview.org/" version="${compiler:JALVIEW_VERSION}" allPathsRelative="true" macVolumeId="5aac4968c304f65" javaMinVersion="${compiler:JAVA_MIN_VERSION}" javaMaxVersion="9999999999${compiler:JAVA_MAX_VERSION}" allowBetaVM="true" jdkMode="jdk" jdkName="JDK 11.0">
     <searchSequence>
       <directory location="${compiler:JRE_DIR}" />
       <registry />
       <envVar name="JAVA_HOME" />
     </searchSequence>
     <variables>
+      <variable name="JALVIEW_NAME" value="Jalview" />
+      <variable name="JALVIEW_APPLICATION_NAME" value="Jalview" />
+      <variable name="JALVIEW_DIR" value="../.." />
+      <variable name="BUILD_DIR" value="${compiler:JALVIEW_DIR}/build/install4j" />
       <variable name="OSX_KEYSTORE" />
-      <variable name="JSIGN_SH" />
+      <variable name="OSX_APPLEID" />
+      <variable name="JSIGN_SH" value="echo" />
       <variable name="JRE_DIR" value="jre" description="The folder under the app folder that the JRE will be either copied or unpacked into" />
-      <variable name="INSTALLER_VERSION" value="2.11.1" />
+      <variable name="INSTALLER_TEMPLATE_VERSION" value="DEVELOPMENT_default" />
+      <variable name="JALVIEW_VERSION" value="DEVELOPMENT" />
+      <variable name="JAVA_MIN_VERSION" value="11" />
+      <variable name="JAVA_MAX_VERSION" value="11" />
+      <variable name="JAVA_VERSION" value="11" />
+      <variable name="JAVA_INTEGER_VERSION" value="11" />
+      <variable name="VERSION" value="DEVELOPMENT" />
+      <variable name="MACOS_JAVA_VM_DIR" value="~/buildtools/jre/jre-${compiler:JAVA_INTEGER_VERSION}-mac-x64/jre" />
+      <variable name="WINDOWS_JAVA_VM_DIR" value="~/buildtools/jre/jre-${compiler:JAVA_INTEGER_VERSION}-windows-x64/jre" />
+      <variable name="LINUX_JAVA_VM_DIR" value="~/buildtools/jre/jre-${compiler:JAVA_INTEGER_VERSION}-linux-x64/jre" />
+      <variable name="MACOS_JAVA_VM_TGZ" value="~/buildtools/jre/tgz/jre-${compiler:JAVA_INTEGER_VERSION}-mac-x64.tar.gz" />
+      <variable name="WINDOWS_JAVA_VM_TGZ" value="~/buildtools/jre/tgz/jre-${compiler:JAVA_INTEGER_VERSION}-windows-x64.tar.gz" />
+      <variable name="LINUX_JAVA_VM_TGZ" value="~/buildtools/jre/tgz/jre-${compiler:JAVA_INTEGER_VERSION}-linux-x64.tar.gz" />
+      <variable name="COPYRIGHT_MESSAGE" value="..." />
+      <variable name="BUNDLE_ID" value="org.jalview.jalview-desktop" />
+      <variable name="INTERNAL_ID" value="Jalview" />
+      <variable name="WINDOWS_APPLICATION_ID" value="6595-2347-1923-0725" />
+      <variable name="MACOS_DMG_DS_STORE" value="jalview_dmg_DS_Store" />
+      <variable name="MACOS_DMG_BG_IMAGE" />
+      <variable name="INSTALLER_NAME" value="Jalview Installer" />
+      <variable name="INSTALL4J_UTILS_DIR" value="utils/install4j" />
+      <variable name="GETDOWN_WEBSITE_DIR" value="getdown/website" />
+      <variable name="GETDOWN_FILES_DIR" value="getdown/files" />
+      <variable name="GETDOWN_RESOURCE_DIR" value="resource" />
+      <variable name="GETDOWN_DIST_DIR" value="dist" />
+      <variable name="GETDOWN_ALT_DIR" value="alt" />
+      <variable name="GETDOWN_INSTALL_DIR" value="install" />
+      <variable name="INFO_PLIST_FILE_ASSOCIATIONS_FILE" value="file_associations_auto-Info_plist.xml" />
+      <variable name="APPLICATION_CATEGORIES" value="Science;Biology;Java;" />
+      <variable name="APPLICATION_FOLDER" value="Jalview" />
+      <variable name="UNIX_APPLICATION_FOLDER" value="jalview" />
+      <variable name="EXECUTABLE_NAME" value="jalview" />
+      <variable name="EXTRA_SCHEME" value="jalviewx" />
+      <variable name="MAC_ICONS_FILE" value="utils/channels/release/images/jalview_logo.icns" />
+      <variable name="WINDOWS_ICONS_FILE" value="utils/channels/release/images/jalview_logo.ico" />
+      <variable name="PNG_ICON_FILE" value="utils/channels/release/images/jalview_logo.png" />
+      <variable name="BACKGROUND" value="utils/channels/release/images/jalview_logo_background_fade-640x480.png" />
     </variables>
-    <codeSigning macEnabled="true" macPkcs12File="${compiler:OSX_KEYSTORE}" />
+    <codeSigning macEnabled="true" macPkcs12File="${compiler:OSX_KEYSTORE}" macNotarize="true" appleId="${compiler:OSX_APPLEID}">
+      <macAdditionalBinaries>
+        <entry>*.dylib</entry>
+        <entry>*.so</entry>
+        <entry>*.jnilib</entry>
+        <entry>unpack200</entry>
+        <entry>tnameserv</entry>
+        <entry>servertool</entry>
+        <entry>rmiregistry</entry>
+        <entry>rmid</entry>
+        <entry>policytool</entry>
+        <entry>pack200</entry>
+        <entry>orbd</entry>
+        <entry>keytool</entry>
+        <entry>jjs</entry>
+        <entry>java</entry>
+        <entry>jspawnhelper</entry>
+        <entry>libfreetype.dylib.6</entry>
+        <entry>applet</entry>
+        <entry>jaotc</entry>
+        <entry>jfr</entry>
+        <entry>jrunscript</entry>
+        <entry>libjli.dylib</entry>
+      </macAdditionalBinaries>
+    </codeSigning>
   </application>
   <files defaultUninstallMode="2">
     <filesets>
-      <fileset name="Full file set" id="734" />
+      <fileset name="Full file set" id="734" customizedId="FULL_FILE_SET" />
       <fileset name="Mac OS X JRE" id="880" />
       <fileset name="Windows JRE" id="882" />
       <fileset name="Jalview application" id="1873" />
-      <fileset name="MacOS Old Jalview Uninstaller" id="2105" />
     </filesets>
     <roots>
       <root id="735" fileset="734" />
       <root id="881" fileset="880" />
       <root id="883" fileset="882" />
       <root id="1874" fileset="1873" />
-      <root id="2106" fileset="2105" />
     </roots>
     <mountPoints>
       <mountPoint id="454" />
       <mountPoint id="884" root="881" />
       <mountPoint id="885" root="883" />
       <mountPoint id="1875" root="1874" />
-      <mountPoint id="2107" root="2106" />
     </mountPoints>
     <entries>
-      <dirEntry mountPoint="454" file="../../getdown/files/$$JAVA_VERSION$$" uninstallMode="2" overrideOverwriteMode="true" overrideUninstallMode="true" subDirectory="files" />
-      <dirEntry mountPoint="736" file="../../getdown/website/$$JAVA_VERSION$$" uninstallMode="2" overrideOverwriteMode="true" overrideUninstallMode="true" subDirectory="files" />
-      <dirEntry mountPoint="884" file="$$MACOS_JAVA_VM_DIR$$" fileMode="755" overrideFileMode="true" overrideUninstallMode="true" entryMode="subdir" subDirectory="${compiler:JRE_DIR}" />
-      <dirEntry mountPoint="885" file="$$WINDOWS_JAVA_VM_DIR$$" fileMode="755" overrideFileMode="true" overrideUninstallMode="true" entryMode="subdir" subDirectory="${compiler:JRE_DIR}" />
-      <dirEntry mountPoint="1875" file="../../getdown/website/$$JAVA_VERSION$$/$$GETDOWN_DIST_DIR$$" overwriteMode="1" uninstallMode="2" overrideFileMode="true" overrideOverwriteMode="true" overrideUninstallMode="true" entryMode="subdir" subDirectory="$$GETDOWN_DIST_DIR$$" overrideDirMode="true" />
-      <dirEntry mountPoint="2107" file="Uninstall Old Jalview.app" fileMode="755" overrideFileMode="true" entryMode="subdir" subDirectory="Uninstall Old Jalview.app" overrideDirMode="true" />
+      <dirEntry mountPoint="454" file="${compiler:JALVIEW_DIR}/${compiler:GETDOWN_FILES_DIR}/${compiler:JAVA_VERSION}" uninstallMode="2" overrideOverwriteMode="true" overrideUninstallMode="true" subDirectory="files" />
+      <dirEntry mountPoint="736" file="${compiler:JALVIEW_DIR}/${compiler:GETDOWN_WEBSITE_DIR}/${compiler:JAVA_VERSION}" uninstallMode="2" overrideOverwriteMode="true" overrideUninstallMode="true" subDirectory="files" />
+      <dirEntry mountPoint="736" file="${compiler:JALVIEW_DIR}/examples" overwriteMode="1" uninstallMode="2" overrideFileMode="true" overrideOverwriteMode="true" overrideUninstallMode="true" entryMode="subdir" subDirectory="examples" />
+      <dirEntry mountPoint="884" file="${compiler:MACOS_JAVA_VM_DIR}" fileMode="755" overrideFileMode="true" overrideUninstallMode="true" entryMode="subdir" subDirectory="${compiler:JRE_DIR}" />
+      <dirEntry mountPoint="885" file="${compiler:WINDOWS_JAVA_VM_DIR}" fileMode="755" overrideFileMode="true" overrideUninstallMode="true" entryMode="subdir" subDirectory="${compiler:JRE_DIR}" />
+      <dirEntry mountPoint="1875" file="${compiler:JALVIEW_DIR}/${compiler:GETDOWN_WEBSITE_DIR}/${compiler:JAVA_VERSION}/${compiler:GETDOWN_DIST_DIR}" overwriteMode="1" uninstallMode="2" overrideFileMode="true" overrideOverwriteMode="true" overrideUninstallMode="true" entryMode="subdir" subDirectory="${compiler:GETDOWN_DIST_DIR}" overrideDirMode="true" />
     </entries>
     <components>
       <component name="jalview_getdown" id="1031">
           <entry filesetId="1873" />
         </include>
       </component>
-      <component name="macos_old_jalview_uninstaller" id="2110">
-        <include>
-          <entry filesetId="2105" />
-        </include>
-      </component>
     </components>
   </files>
   <launchers>
-    <launcher name="Offline Jalview Launcher" id="737" menuName="${compiler:sys.shortName}" icnsFile="../../resources/images/jalview_logos.icns" customMacBundleIdentifier="true" macBundleIdentifier="$$MACOS_BUNDLE_ID$$" fileset="734" useCustomMacosExecutableName="true" customMacosExecutableName="${compiler:sys.shortName}">
-      <executable name="${compiler:sys.shortName}" iconSet="true" iconFile="../../resources/images/jalview_logos.ico" executableDir="." redirectStdout="true" executableMode="gui" singleInstance="true" checkConsoleParameter="true">
-        <versionInfo include="true" fileDescription="${compiler:sys.shortName}" legalCopyright="$$COPYRIGHT_MESSAGE$$" internalName="${compiler:sys.shortName}" productName="${compiler:sys.shortName}" />
+    <launcher name="Jalview Launcher" id="737" menuName="${compiler:JALVIEW_APPLICATION_NAME}" icnsFile="${compiler:JALVIEW_DIR}/${compiler:MAC_ICONS_FILE}" customMacBundleIdentifier="true" macBundleIdentifier="${compiler:BUNDLE_ID}" fileset="734" useCustomMacosExecutableName="true" customMacosExecutableName="${compiler:JALVIEW_APPLICATION_NAME}">
+      <executable name="${compiler:EXECUTABLE_NAME}" iconSet="true" iconFile="${compiler:JALVIEW_DIR}/${compiler:WINDOWS_ICONS_FILE}" redirectStdout="true" executableMode="gui" changeWorkingDirectory="false" singleInstance="true" checkConsoleParameter="true">
+        <versionInfo include="true" fileDescription="${compiler:sys.fullName}" legalCopyright="${compiler:COPYRIGHT_MESSAGE}" internalName="${compiler:INTERNAL_ID}" productName="${compiler:sys.fullName}" />
       </executable>
-      <splashScreen width="640" height="480" bitmapFile="../../resources/images/jalview_logo_background_fade-640x480.png" textOverlay="true">
+      <splashScreen width="640" height="480" bitmapFile="${compiler:JALVIEW_DIR}/${compiler:BACKGROUND}" textOverlay="true">
         <text>
           <statusLine x="85" y="81" text="${compiler:sys.shortName}" fontSize="18" />
           <versionLine x="85" y="109" text="version ${compiler:sys.version}" />
         </text>
       </splashScreen>
-      <java mainClass="com.threerings.getdown.launcher.GetdownApp" arguments=". jalview">
+      <java mainClass="com.threerings.getdown.launcher.GetdownApp" vmParameters="-Dinstaller_template_version=${compiler:INSTALLER_TEMPLATE_VERSION}" arguments="&quot;${launcher:sys.launcherDirectory}&quot; jalview">
         <classPath>
           <archive location="getdown-launcher.jar" />
-          <scanDirectory location="$$GETDOWN_INSTALL_DIR$$" failOnError="false" />
-        </classPath>
-      </java>
-      <iconImageFiles>
-        <file path="../../resources/images/JalviewLogo_Huge.png" />
-      </iconImageFiles>
-    </launcher>
-    <launcher name="Network Jalview Launcher" id="1402" menuName="${compiler:sys.shortName}" icnsFile="../../resources/images/jalview_logos.icns" customMacBundleIdentifier="true" macBundleIdentifier="$$MACOS_BUNDLE_ID$$" useCustomMacosExecutableName="true" customMacosExecutableName="${compiler:sys.shortName}">
-      <executable name="Jalview" iconSet="true" iconFile="../../resources/images/jalview_logos.ico" executableDir="." redirectStdout="true" executableMode="gui" singleInstance="true" checkConsoleParameter="true">
-        <versionInfo include="true" fileDescription="${compiler:sys.shortName}" legalCopyright="$$COPYRIGHT_MESSAGE$$" internalName="${compiler:sys.shortName}" productName="${compiler:sys.shortName}" />
-      </executable>
-      <splashScreen width="640" height="480" bitmapFile="../../resources/images/jalview_logo_background_fade-640x480.png" textOverlay="true">
-        <text>
-          <statusLine x="85" y="81" text="${compiler:sys.shortName}" fontSize="18" />
-          <versionLine x="85" y="109" text="version ${compiler:sys.version}" />
-        </text>
-      </splashScreen>
-      <java mainClass="com.threerings.getdown.launcher.GetdownApp" arguments=". jalview">
-        <classPath>
-          <archive location="getdown-launcher.jar" />
-          <scanDirectory location="$$GETDOWN_INSTALL_DIR$$" failOnError="false" />
-        </classPath>
-      </java>
-      <iconImageFiles>
-        <file path="../../resources/images/JalviewLogo_Huge.png" />
-      </iconImageFiles>
-    </launcher>
-    <launcher name="Jalview package" id="1876" menuName="${compiler:sys.shortName} $$VERSION$$" fileset="1873">
-      <executable name="${compiler:sys.shortName}" iconSet="true" redirectStderr="false" failOnStderrOutput="false" executableMode="gui" changeWorkingDirectory="false" singleInstance="true" />
-      <java mainClass="jalview.bin.Launcher">
-        <classPath>
-          <scanDirectory location="$$GETDOWN_DIST_DIR$$" failOnError="false" />
+          <archive location="${compiler:GETDOWN_INSTALL_DIR}/getdown-launcher.jar" failOnError="false" />
         </classPath>
       </java>
-      <macStaticAssociationActions mode="selected" />
+      <macStaticAssociationActions mode="selected">
+        <id>2350</id>
+        <id>2450</id>
+        <id>2641</id>
+      </macStaticAssociationActions>
+      <infoPlist>${compiler:file("${compiler:INFO_PLIST_FILE_ASSOCIATIONS_FILE}")}</infoPlist>
       <iconImageFiles>
-        <file path="../../resources/images/JalviewLogo_Huge.png" />
+        <file path="${compiler:JALVIEW_DIR}/${compiler:PNG_ICON_FILE}" />
       </iconImageFiles>
     </launcher>
   </launchers>
   <installerGui autoUpdateDescriptorUrl="https://www.jalview.org/install4j/updates.xml">
     <applications>
-      <application id="installer" beanClass="com.install4j.runtime.beans.applications.InstallerApplication" styleId="35" customIcnsFile="../../resources/images/jalview_logos.icns" customIcoFile="../../resources/images/jalview_logos.ico">
+      <application id="installer" beanClass="com.install4j.runtime.beans.applications.InstallerApplication" styleId="35" customIcnsFile="${compiler:JALVIEW_DIR}/${compiler:MAC_ICONS_FILE}" customIcoFile="${compiler:JALVIEW_DIR}/${compiler:WINDOWS_ICONS_FILE}">
         <serializedBean>
           <property name="useCustomIcon" type="boolean" value="true" />
         </serializedBean>
                 <property name="imageEdgeBorder" type="boolean" value="true" />
                 <property name="imageFile">
                   <object class="com.install4j.api.beans.ExternalFile">
-                    <string>../../resources/images/jalview_logo_background_fade-640x480.png</string>
+                    <string>${compiler:JALVIEW_DIR}/${compiler:BACKGROUND}</string>
                   </object>
                 </property>
                 <property name="insets">
                     <property name="imageEdgeBorder" type="boolean" value="true" />
                     <property name="imageFile">
                       <object class="com.install4j.api.beans.ExternalFile">
-                        <string>../../resources/images/jalview_logo_background_fade-640x480.png</string>
+                        <string>${compiler:JALVIEW_DIR}/${compiler:BACKGROUND}</string>
                       </object>
                     </property>
                     <property name="insets">
@@ -377,8 +408,32 @@ return console.askOkCancel(message, true);
           <screen id="15" beanClass="com.install4j.runtime.beans.screens.InstallationScreen" rollbackBarrier="true" rollbackBarrierExitCode="0">
             <actions>
               <action id="17" beanClass="com.install4j.runtime.beans.actions.InstallFilesAction" actionElevationType="elevated" rollbackBarrierExitCode="0" failureStrategy="quit" errorMessage="${i18n:FileCorrupted}" />
-              <action id="18" beanClass="com.install4j.runtime.beans.actions.desktop.CreateProgramGroupAction" actionElevationType="elevated" rollbackBarrierExitCode="0">
+              <action name="Create program group (RELEASE)" id="18" customizedId="PROGRAM_GROUP_RELEASE" beanClass="com.install4j.runtime.beans.actions.desktop.CreateProgramGroupAction" actionElevationType="elevated" rollbackBarrierExitCode="0">
                 <serializedBean>
+                  <property name="allUsers" type="boolean" value="false" />
+                  <property name="categories" type="string">${compiler:APPLICATION_CATEGORIES}</property>
+                  <property name="programGroupEntryConfigs">
+                    <add>
+                      <object class="com.install4j.runtime.beans.screens.components.ProgramGroupFileConfig">
+                        <property name="name" type="string">Examples</property>
+                        <property name="target">
+                          <object class="java.io.File">
+                            <string>examples</string>
+                          </object>
+                        </property>
+                      </object>
+                    </add>
+                  </property>
+                  <property name="programGroupName" type="string">${compiler:JALVIEW_NAME}</property>
+                  <property name="uninstallerMenuName" type="string">${i18n:UninstallerMenuEntry(${compiler:sys.fullName})}</property>
+                </serializedBean>
+                <condition>!context.getBooleanVariable("sys.programGroupDisabled")</condition>
+              </action>
+              <action name="Create program group (NON-RELEASE)" id="2730" customizedId="PROGRAM_GROUP_NON_RELEASE" beanClass="com.install4j.runtime.beans.actions.desktop.CreateProgramGroupAction" actionElevationType="elevated" rollbackBarrierExitCode="0">
+                <serializedBean>
+                  <property name="allUsers" type="boolean" value="false" />
+                  <property name="categories" type="string">${compiler:APPLICATION_CATEGORIES}</property>
+                  <property name="programGroupName" type="string">${compiler:JALVIEW_NAME}</property>
                   <property name="uninstallerMenuName" type="string">${i18n:UninstallerMenuEntry(${compiler:sys.fullName})}</property>
                 </serializedBean>
                 <condition>!context.getBooleanVariable("sys.programGroupDisabled")</condition>
@@ -405,7 +460,7 @@ return console.askOkCancel(message, true);
                   <property name="vmOptions" type="array" elementType="string" length="0" />
                 </serializedBean>
               </action>
-              <group id="2251" beanClass="com.install4j.runtime.beans.groups.ActionGroup">
+              <group name="File Associations" id="2251" beanClass="com.install4j.runtime.beans.groups.ActionGroup">
                 <beans>
                   <action id="2253" beanClass="com.install4j.runtime.beans.actions.control.SetMessageAction" actionElevationType="none" rollbackBarrierExitCode="0">
                     <serializedBean>
@@ -425,8 +480,38 @@ return console.askOkCancel(message, true);
                       <property name="extension" type="string">extensions_to_be_replaced_by_gradle</property>
                     </serializedBean>
                   </action>
+                  <action id="2542" beanClass="com.install4j.runtime.beans.actions.control.SetMessageAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="statusMessage" type="string">Creating file associations</property>
+                      <property name="useDetail" type="boolean" value="true" />
+                      <property name="useStatus" type="boolean" value="true" />
+                    </serializedBean>
+                  </action>
+                  <action id="2541" beanClass="com.install4j.runtime.beans.actions.control.SetProgressAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="percentValue" type="int" value="100" />
+                    </serializedBean>
+                  </action>
                 </beans>
               </group>
+              <action id="2350" beanClass="com.install4j.runtime.beans.actions.desktop.UrlHandlerAction" actionElevationType="elevated" rollbackBarrierExitCode="0">
+                <serializedBean>
+                  <property name="launcherId" type="string">737</property>
+                  <property name="scheme" type="string">jalview</property>
+                </serializedBean>
+              </action>
+              <action id="2450" beanClass="com.install4j.runtime.beans.actions.desktop.UrlHandlerAction" actionElevationType="elevated" rollbackBarrierExitCode="0">
+                <serializedBean>
+                  <property name="launcherId" type="string">737</property>
+                  <property name="scheme" type="string">jalviews</property>
+                </serializedBean>
+              </action>
+              <action id="2641" beanClass="com.install4j.runtime.beans.actions.desktop.UrlHandlerAction" actionElevationType="elevated" rollbackBarrierExitCode="0">
+                <serializedBean>
+                  <property name="launcherId" type="string">737</property>
+                  <property name="scheme" type="string">${compiler:EXTRA_SCHEME}</property>
+                </serializedBean>
+              </action>
             </actions>
             <formComponents>
               <formComponent id="16" beanClass="com.install4j.runtime.beans.formcomponents.ProgressComponent">
@@ -441,20 +526,22 @@ return console.askOkCancel(message, true);
               <action id="2012" beanClass="com.install4j.runtime.beans.actions.desktop.CreateStartMenuEntryAction" actionElevationType="elevated" rollbackBarrierExitCode="0">
                 <serializedBean>
                   <property name="allUsers" type="boolean" value="false" />
-                  <property name="entryName" type="string">${compiler:sys.shortName}</property>
+                  <property name="categories" type="string">${compiler:APPLICATION_CATEGORIES}</property>
+                  <property name="entryName" type="string">${compiler:JALVIEW_APPLICATION_NAME}</property>
                   <property name="file">
                     <object class="java.io.File">
-                      <string>${compiler:sys.shortName}</string>
+                      <string>${installer:sys.contentDir}/${compiler:EXECUTABLE_NAME}</string>
                     </object>
                   </property>
                   <property name="icon">
                     <object class="com.install4j.api.beans.ExternalFile">
-                      <string>../../resources/images/jalview_logos.ico</string>
+                      <string>${compiler:JALVIEW_DIR}/${compiler:WINDOWS_ICONS_FILE}</string>
                     </object>
                   </property>
+                  <property name="programGroupName" type="string">${compiler:JALVIEW_NAME}</property>
                   <property name="unixIconFile">
                     <object class="com.install4j.api.beans.ExternalFile">
-                      <string>../../resources/images/JalviewLogo_Huge.png</string>
+                      <string>${compiler:JALVIEW_DIR}/${compiler:PNG_ICON_FILE}</string>
                     </object>
                   </property>
                 </serializedBean>
@@ -463,21 +550,21 @@ return console.askOkCancel(message, true);
               <action id="573" beanClass="com.install4j.runtime.beans.actions.desktop.CreateDesktopLinkAction" actionElevationType="elevated" rollbackBarrierExitCode="0" errorMessage="Could not make desktop link">
                 <serializedBean>
                   <property name="allUsers" type="boolean" value="false" />
-                  <property name="description" type="string">${compiler:sys.shortName}</property>
+                  <property name="description" type="string">${compiler:JALVIEW_APPLICATION_NAME}</property>
                   <property name="file">
                     <object class="java.io.File">
-                      <string>${compiler:sys.shortName}</string>
+                      <string>${installer:sys.contentDir}/${compiler:EXECUTABLE_NAME}</string>
                     </object>
                   </property>
-                  <property name="name" type="string">${compiler:sys.fullName}</property>
+                  <property name="name" type="string">${compiler:JALVIEW_APPLICATION_NAME}</property>
                   <property name="unixIconFile">
                     <object class="com.install4j.api.beans.ExternalFile">
-                      <string>../../resources/images/JalviewLogo_Huge.png</string>
+                      <string>${compiler:JALVIEW_DIR}/${compiler:PNG_ICON_FILE}</string>
                     </object>
                   </property>
                   <property name="winIconFile">
                     <object class="com.install4j.api.beans.ExternalFile">
-                      <string>../../resources/images/jalview_logos.ico</string>
+                      <string>${compiler:JALVIEW_DIR}/${compiler:WINDOWS_ICONS_FILE}</string>
                     </object>
                   </property>
                 </serializedBean>
@@ -487,7 +574,7 @@ return console.askOkCancel(message, true);
                 <serializedBean>
                   <property name="executable">
                     <object class="java.io.File">
-                      <string>Jalview.app</string>
+                      <string>${compiler:JALVIEW_APPLICATION_NAME}.app</string>
                     </object>
                   </property>
                 </serializedBean>
@@ -552,7 +639,7 @@ return console.askOkCancel(message, true);
                 <property name="imageEdgeBorder" type="boolean" value="true" />
                 <property name="imageFile">
                   <object class="com.install4j.api.beans.ExternalFile">
-                    <string>../../resources/images/jalview_logo_background_fade-640x480.png</string>
+                    <string>${compiler:JALVIEW_DIR}/${compiler:BACKGROUND}</string>
                   </object>
                 </property>
                 <property name="insets">
@@ -617,7 +704,7 @@ return console.askYesNo(message, true);
               </action>
               <action id="1525" beanClass="com.install4j.runtime.beans.actions.files.DeleteFileAction" actionElevationType="elevated" rollbackBarrierExitCode="0">
                 <serializedBean>
-                  <property name="files" type="array" class="java.io.File" length="31">
+                  <property name="files" type="array" class="java.io.File" length="36">
                     <element index="0">
                       <object class="java.io.File">
                         <string>jre</string>
@@ -635,117 +722,117 @@ return console.askYesNo(message, true);
                     </element>
                     <element index="3">
                       <object class="java.io.File">
-                        <string>$$GETDOWN_DIST_DIR$$</string>
+                        <string>getdown-launcher.jar</string>
                       </object>
                     </element>
                     <element index="4">
                       <object class="java.io.File">
-                        <string>$$GETDOWN_ALT_DIR$$</string>
+                        <string>getdown-launcher-old.jar</string>
                       </object>
                     </element>
                     <element index="5">
                       <object class="java.io.File">
-                        <string>$$GETDOWN_RESOURCE_DIR$$</string>
+                        <string>getdown-launcher-new.jar</string>
                       </object>
                     </element>
                     <element index="6">
                       <object class="java.io.File">
-                        <string>getdown-launcher.jar</string>
+                        <string>gettingdown.lock</string>
                       </object>
                     </element>
                     <element index="7">
                       <object class="java.io.File">
-                        <string>getdown-launcher-old.jar</string>
+                        <string>jre.zip</string>
                       </object>
                     </element>
                     <element index="8">
                       <object class="java.io.File">
-                        <string>getdown-launcher-new.jar</string>
+                        <string>digest.txt</string>
                       </object>
                     </element>
                     <element index="9">
                       <object class="java.io.File">
-                        <string>*.jarv</string>
+                        <string>digest2.txt</string>
                       </object>
                     </element>
                     <element index="10">
                       <object class="java.io.File">
-                        <string>gettingdown.lock</string>
+                        <string>getdown-launcher.jarv</string>
                       </object>
                     </element>
                     <element index="11">
                       <object class="java.io.File">
-                        <string>*.log</string>
+                        <string>getdown-launcher-new.jarv</string>
                       </object>
                     </element>
                     <element index="12">
                       <object class="java.io.File">
-                        <string>*.txt</string>
+                        <string>launcher.log</string>
                       </object>
                     </element>
                     <element index="13">
                       <object class="java.io.File">
-                        <string>*_new</string>
+                        <string>proxy.txt</string>
                       </object>
                     </element>
                     <element index="14">
                       <object class="java.io.File">
-                        <string>digest.txt</string>
+                        <string>build_properties</string>
                       </object>
                     </element>
                     <element index="15">
                       <object class="java.io.File">
-                        <string>digest2.txt</string>
+                        <string>channel_launch*.jvl</string>
                       </object>
                     </element>
                     <element index="16">
                       <object class="java.io.File">
-                        <string>getdown-launcher.jarv</string>
+                        <string>jalview*.jvl</string>
                       </object>
                     </element>
                     <element index="17">
                       <object class="java.io.File">
-                        <string>getdown-launcher-new.jarv</string>
+                        <string>*.jarv</string>
                       </object>
                     </element>
                     <element index="18">
                       <object class="java.io.File">
-                        <string>channel_launch.jvl</string>
+                        <string>*.log</string>
                       </object>
                     </element>
                     <element index="19">
                       <object class="java.io.File">
-                        <string>launcher.log</string>
+                        <string>*.txt</string>
                       </object>
                     </element>
                     <element index="20">
                       <object class="java.io.File">
-                        <string>proxy.txt</string>
+                        <string>*_new</string>
                       </object>
                     </element>
                     <element index="21">
                       <object class="java.io.File">
-                        <string>META-INF</string>
+                        <string>hs_err_*.*</string>
                       </object>
                     </element>
                     <element index="22">
                       <object class="java.io.File">
-                        <string>install/getdown-launcher.jar</string>
+                        <string>${compiler:GETDOWN_DIST_DIR}</string>
                       </object>
                     </element>
                     <element index="23">
                       <object class="java.io.File">
-                        <string>install/getdown.txt</string>
+                        <string>${compiler:GETDOWN_ALT_DIR}</string>
                       </object>
                     </element>
                     <element index="24">
                       <object class="java.io.File">
-                        <string>install/build_properties</string>
+                        <string>${compiler:GETDOWN_RESOURCE_DIR}</string>
                       </object>
                     </element>
                     <element index="25">
                       <object class="java.io.File">
-                        <string>build_properties</string>
+                        <string>META-INF</string>
                       </object>
                     </element>
                     <element index="26">
@@ -755,22 +842,47 @@ return console.askYesNo(message, true);
                     </element>
                     <element index="27">
                       <object class="java.io.File">
-                        <string>dist</string>
+                        <string>resource</string>
                       </object>
                     </element>
                     <element index="28">
                       <object class="java.io.File">
-                        <string>release</string>
+                        <string>dist</string>
                       </object>
                     </element>
                     <element index="29">
                       <object class="java.io.File">
-                        <string>alt</string>
+                        <string>release</string>
                       </object>
                     </element>
                     <element index="30">
                       <object class="java.io.File">
-                        <string>resource</string>
+                        <string>alt</string>
+                      </object>
+                    </element>
+                    <element index="31">
+                      <object class="java.io.File">
+                        <string>dev</string>
+                      </object>
+                    </element>
+                    <element index="32">
+                      <object class="java.io.File">
+                        <string>build</string>
+                      </object>
+                    </element>
+                    <element index="33">
+                      <object class="java.io.File">
+                        <string>alt_*</string>
+                      </object>
+                    </element>
+                    <element index="34">
+                      <object class="java.io.File">
+                        <string>dev_*</string>
+                      </object>
+                    </element>
+                    <element index="35">
+                      <object class="java.io.File">
+                        <string>build_*</string>
                       </object>
                     </element>
                   </property>
@@ -815,16 +927,24 @@ return console.askYesNo(message, true);
           <group name="Main" id="37" beanClass="com.install4j.runtime.beans.groups.VerticalFormComponentGroup">
             <serializedBean>
               <property name="imageEdgeAxisType" type="enum" class="com.install4j.runtime.beans.formcomponents.AxisType" value="HORIZONTAL" />
+              <property name="imageEdgeBackgroundColor">
+                <object class="java.awt.Color">
+                  <int>255</int>
+                  <int>255</int>
+                  <int>255</int>
+                  <int>255</int>
+                </object>
+              </property>
               <property name="imageFile">
                 <object class="com.install4j.api.beans.ExternalFile">
-                  <string>../../resources/images/jalview_logo_background_fade-640x480.png</string>
+                  <string>${compiler:JALVIEW_DIR}/${compiler:BACKGROUND}</string>
                 </object>
               </property>
               <property name="imageOverlap" type="boolean" value="true" />
             </serializedBean>
             <beans>
               <formComponent id="38" beanClass="com.install4j.runtime.beans.styles.ContentComponent" insetTop="10" insetLeft="20" insetBottom="10" insetRight="20" />
-              <formComponent name="Watermark" id="39" beanClass="com.install4j.runtime.beans.formcomponents.SeparatorComponent" insetTop="0" insetLeft="5" insetBottom="0" useExternalParametrization="true" externalParametrizationName="Jalview" externalParametrizationMode="include">
+              <formComponent name="Watermark" id="39" beanClass="com.install4j.runtime.beans.formcomponents.SeparatorComponent" insetTop="0" insetLeft="5" insetBottom="0" useExternalParametrization="true" externalParametrizationName="${compiler:JALVIEW_APPLICATION_NAME}" externalParametrizationMode="include">
                 <serializedBean>
                   <property name="enabledTitleText" type="boolean" value="false" />
                 </serializedBean>
@@ -1024,79 +1144,23 @@ return console.askYesNo(message, true);
     </styles>
   </installerGui>
   <mediaSets>
-    <linuxDeb name="Jalview .deb Package" id="153" mediaFileName="jalview-$$VERSION$$" dependencies="openjdk-8-jre" bzip="true" description="Jalview Desktop" maintainerEmail="help@jalview.org">
-      <excludedComponents>
-        <component id="1031" />
-        <component id="1155" />
-        <component id="1156" />
-        <component id="1276" />
-        <component id="2110" />
-      </excludedComponents>
-      <excludedLaunchers>
-        <launcher id="737" />
-        <launcher id="1402" />
-      </excludedLaunchers>
-      <exclude>
-        <entry defaultFileset="true" />
-        <entry filesetId="734" />
-        <entry filesetId="880" />
-        <entry filesetId="882" />
-      </exclude>
-    </linuxDeb>
-    <linuxRPM name="Jalview RPM Package" id="570" mediaFileName="jalview-$$VERSION$$" dependencies="java-1.8.0-openjdk" arch="noarch">
-      <excludedComponents>
-        <component id="1031" />
-        <component id="1155" />
-        <component id="1156" />
-        <component id="1276" />
-        <component id="2110" />
-      </excludedComponents>
-      <excludedLaunchers>
-        <launcher id="737" />
-        <launcher id="1402" />
-      </excludedLaunchers>
-      <exclude>
-        <entry defaultFileset="true" />
-        <entry filesetId="734" />
-        <entry filesetId="880" />
-        <entry filesetId="882" />
-      </exclude>
-    </linuxRPM>
-    <windows name="Offline Windows x64 Installer" id="743" mediaFileName="${compiler:sys.shortName}-OFFLINE_${compiler:sys.platform}_${compiler:sys.version}-j$$JAVA_INTEGER_VERSION$$" runPostProcessor="true" postProcessor="${compiler:JSIGN_SH} $EXECUTABLE" customInstallBaseDir="~/AppData/Local">
+    <windows name="Windows x64 EXE Installer" id="743" mediaFileName="${compiler:APPLICATION_FOLDER}-${compiler:JALVIEW_VERSION}-${compiler:sys.platform}-java_${compiler:JAVA_INTEGER_VERSION}" installDir="${compiler:APPLICATION_FOLDER}" runPostProcessor="true" postProcessor="${compiler:JSIGN_SH} $EXECUTABLE" customInstallBaseDir="~/AppData/Local">
       <excludedComponents>
         <component id="1155" />
         <component id="1156" />
         <component id="1276" />
         <component id="1881" />
-        <component id="2110" />
       </excludedComponents>
-      <excludedLaunchers>
-        <launcher id="1402" />
-      </excludedLaunchers>
       <exclude>
         <entry defaultFileset="true" />
         <entry filesetId="880" />
         <entry filesetId="882" />
         <entry filesetId="1873" />
+        <entry filesetId="2105" />
       </exclude>
-      <jreBundle jreBundleSource="preCreated" includedJre="$$WINDOWS_JAVA_VM_TGZ$$" manualJreEntry="true" />
+      <jreBundle jreBundleSource="preCreated" includedJre="${compiler:WINDOWS_JAVA_VM_TGZ}" manualJreEntry="true" />
     </windows>
-    <windows name="Network Windows x64 Installer" id="1862" mediaFileName="${compiler:sys.shortName}-NETWORK_${compiler:sys.platform}_${compiler:sys.version}-j$$JAVA_INTEGER_VERSION$$" runPostProcessor="true" postProcessor="${compiler:JSIGN_SH} $EXECUTABLE" customInstallBaseDir="~/AppData/Local">
-      <excludedComponents>
-        <component id="1031" />
-        <component id="1155" />
-        <component id="1156" />
-        <component id="1881" />
-        <component id="2110" />
-      </excludedComponents>
-      <exclude>
-        <entry filesetId="734" />
-        <entry filesetId="880" />
-        <entry filesetId="1873" />
-      </exclude>
-      <jreBundle jreBundleSource="preCreated" includedJre="$$WINDOWS_JAVA_VM_TGZ$$" manualJreEntry="true" />
-    </windows>
-    <macosArchive name="Offline macOS Disk Image" id="878" mediaFileName="${compiler:sys.shortName}-OFFLINE_${compiler:sys.platform}-app_${compiler:sys.version}-j$$JAVA_INTEGER_VERSION$$" volumeName="${compiler:sys.shortName} Installer" launcherId="737">
+    <macosArchive name="macOS Disk Image" id="878" customizedId="MACOS_DISK_IMAGE" mediaFileName="${compiler:APPLICATION_FOLDER}-${compiler:JALVIEW_VERSION}-${compiler:sys.platform}-java_${compiler:JAVA_INTEGER_VERSION}" volumeName="${compiler:INSTALLER_NAME}" launcherId="737">
       <excludedComponents>
         <component id="1156" />
         <component id="1276" />
@@ -1109,112 +1173,69 @@ return console.askYesNo(message, true);
       </exclude>
       <topLevelFiles>
         <symlink name="&quot; &quot;" target="/Applications" />
-        <file name=".background/jalview_dmg_background.png" file="./jalview_dmg_background.png" />
-        <file name=".DS_Store" file="./DS_Store" />
-        <symlink name="Jalview.app/Contents/Resources/app/${compiler:JRE_DIR}/Contents/MacOS/libjli.dylib" target="../Home/lib/jli/libjli.dylib" />
-        <file name="Jalview.app/Contents/Resources/Jalview-File.icns" file="./Jalview-File.icns" />
-        <file name="Jalview.app/Contents/Resources/Jalview-Launch.icns" file="Jalview-Launch.icns" />
-        <symlink name="Uninstall Old Jalview (optional).app" target="Jalview.app/Contents/Resources/app/Uninstall Old Jalview.app" />
-      </topLevelFiles>
-    </macosArchive>
-    <macosArchive name="Network macOS Disk Image" id="1274" mediaFileName="${compiler:sys.shortName}-NETWORK_${compiler:sys.platform}-app_${compiler:sys.version}-j$$JAVA_INTEGER_VERSION$$" volumeName="${compiler:sys.shortName} Installer" launcherId="1402">
-      <excludedComponents>
-        <component id="1031" />
-        <component id="1156" />
-        <component id="1881" />
-      </excludedComponents>
-      <exclude>
-        <entry filesetId="734" />
-        <entry filesetId="882" />
-        <entry filesetId="1873" />
-      </exclude>
-      <topLevelFiles>
-        <symlink name="&quot; &quot;" target="/Applications" />
-        <file name=".background/jalview_dmg_background.png" file="./jalview_dmg_background.png" />
-        <file name=".DS_Store" file="./DS_Store" />
-        <symlink name="Jalview.app/Contents/Resources/app/${compiler:JRE_DIR}/Contents/MacOS/libjli.dylib" target="../Home/lib/jli/libjli.dylib" />
-        <file name="Jalview.app/Contents/Resources/Jalview-Launch.icns" file="Jalview-Launch.icns" />
-        <file name="Jalview.app/Contents/Resources/Jalview-File.icns" file="Jalview-File.icns" />
-        <symlink name="Uninstall Old Jalview (optional).app" target="Jalview.app/Contents/Resources/app/Uninstall Old Jalview.app" />
+        <file name=".background/jalview_dmg_background.png" file="${compiler:JALVIEW_DIR}/${compiler:MACOS_DMG_BG_IMAGE}" />
+        <file name=".DS_Store" file="${compiler:JALVIEW_DIR}/${compiler:MACOS_DMG_DS_STORE}" />
+        <file name="${compiler:JALVIEW_APPLICATION_NAME}.app/Contents/Resources/Jalview-File.icns" file="${compiler:JALVIEW_DIR}/${compiler:INSTALL4J_UTILS_DIR}/Jalview-File.icns" />
+        <file name="${compiler:JALVIEW_APPLICATION_NAME}.app/Contents/Resources/Jalview-Launch.icns" file="${compiler:JALVIEW_DIR}/${compiler:INSTALL4J_UTILS_DIR}/Jalview-Launch.icns" />
       </topLevelFiles>
     </macosArchive>
-    <unixInstaller name="Offline Unix Shell Installer" id="1595" mediaFileName="${compiler:sys.shortName}-OFFLINE_${compiler:sys.platform}_installer_${compiler:sys.version}-j$$JAVA_INTEGER_VERSION$$" customInstallBaseDir="~/opt/">
+    <unixInstaller name="Linux x64 Shell Installer" id="1595" mediaFileName="${compiler:UNIX_APPLICATION_FOLDER}-${compiler:JALVIEW_VERSION}-linux_x64-java_${compiler:JAVA_INTEGER_VERSION}" installDir="${compiler:UNIX_APPLICATION_FOLDER}" customInstallBaseDir="~/opt/">
       <excludedComponents>
         <component id="1155" />
         <component id="1156" />
         <component id="1276" />
         <component id="1881" />
-        <component id="2110" />
       </excludedComponents>
-      <excludedLaunchers>
-        <launcher id="1402" />
-      </excludedLaunchers>
       <exclude>
         <entry defaultFileset="true" />
         <entry filesetId="880" />
         <entry filesetId="882" />
         <entry filesetId="1873" />
+        <entry filesetId="2105" />
       </exclude>
+      <jreBundle jreBundleSource="preCreated" includedJre="${compiler:LINUX_JAVA_VM_TGZ}" manualJreEntry="true" />
     </unixInstaller>
-    <unixInstaller name="Network Unix Shell Installer" id="1867" mediaFileName="${compiler:sys.shortName}-NETWORK_${compiler:sys.platform}_installer_${compiler:sys.version}-j$$JAVA_INTEGER_VERSION$$" customInstallBaseDir="~/opt/">
-      <excludedComponents>
-        <component id="1031" />
-        <component id="1155" />
-        <component id="1156" />
-        <component id="1881" />
-        <component id="2110" />
-      </excludedComponents>
-      <exclude>
-        <entry filesetId="734" />
-        <entry filesetId="880" />
-        <entry filesetId="882" />
-        <entry filesetId="1873" />
-      </exclude>
-    </unixInstaller>
-    <unixArchive name="Offline Unix .tar.gz Archive" id="1596" mediaFileName="${compiler:sys.shortName}-OFFLINE_${compiler:sys.platform}_archive_${compiler:sys.version}-j$$JAVA_INTEGER_VERSION$$">
+    <unixArchive name="Unix .tar.gz Archive" id="1596" mediaFileName="${compiler:UNIX_APPLICATION_FOLDER}-${compiler:JALVIEW_VERSION}-${compiler:sys.platform}-java_${compiler:JAVA_INTEGER_VERSION}" installDir="${compiler:UNIX_APPLICATION_FOLDER}">
       <excludedComponents>
         <component id="1155" />
         <component id="1156" />
         <component id="1276" />
         <component id="1881" />
-        <component id="2110" />
       </excludedComponents>
-      <excludedLaunchers>
-        <launcher id="1402" />
-      </excludedLaunchers>
       <exclude>
         <entry defaultFileset="true" />
         <entry filesetId="880" />
         <entry filesetId="882" />
         <entry filesetId="1873" />
+        <entry filesetId="2105" />
       </exclude>
+      <jreBundle includedJre="${compiler:LINUX_JAVA_VM_TGZ}" manualJreEntry="true" />
     </unixArchive>
-    <unixArchive name="Network Unix .tar.gz Archive" id="1871" mediaFileName="${compiler:sys.shortName}-NETWORK_${compiler:sys.platform}_archive_${compiler:sys.version}-j$$JAVA_INTEGER_VERSION$$">
+    <unixInstaller name="Unix Shell Installer" id="2639" mediaFileName="${compiler:UNIX_APPLICATION_FOLDER}-${compiler:JALVIEW_VERSION}-${compiler:sys.platform}-java_${compiler:JAVA_INTEGER_VERSION}" installDir="${compiler:UNIX_APPLICATION_FOLDER}" customInstallBaseDir="~/opt/">
       <excludedComponents>
-        <component id="1031" />
         <component id="1155" />
         <component id="1156" />
+        <component id="1276" />
         <component id="1881" />
-        <component id="2110" />
       </excludedComponents>
       <exclude>
-        <entry filesetId="734" />
+        <entry defaultFileset="true" />
         <entry filesetId="880" />
         <entry filesetId="882" />
         <entry filesetId="1873" />
+        <entry filesetId="2105" />
       </exclude>
-    </unixArchive>
+      <jreBundle includedJre="${compiler:LINUX_JAVA_VM_TGZ}" manualJreEntry="true" />
+    </unixInstaller>
   </mediaSets>
   <buildIds>
     <mediaSet refId="153" />
     <mediaSet refId="570" />
     <mediaSet refId="743" />
+    <mediaSet refId="2446" />
     <mediaSet refId="878" />
-    <mediaSet refId="1274" />
     <mediaSet refId="1595" />
     <mediaSet refId="1596" />
-    <mediaSet refId="1862" />
-    <mediaSet refId="1867" />
-    <mediaSet refId="1871" />
+    <mediaSet refId="2639" />
   </buildIds>
 </install4j>