b1181897cc95bb42fb63032543a345c943c16550
[jalview.git] / utils / install4j / install4j10_template.install4j
1 <?xml version="1.0" encoding="UTF-8"?>
2 <install4j version="10.0.7" transformSequenceNumber="10">
3   <directoryPresets config="bin/Jalview" />
4   <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="${compiler:JAVA_MAX_VERSION}" allowBetaVM="true" jdkMode="jdk" jdkName="JDK 11.0">
5     <searchSequence>
6       <directory location="${compiler:JRE_DIR}" />
7       <registry />
8       <envVar name="JAVA_HOME" />
9     </searchSequence>
10     <variables>
11       <variable name="JALVIEW_NAME" value="Jalview" />
12       <variable name="JALVIEW_APPLICATION_NAME" value="Jalview" />
13       <variable name="JALVIEW_DIR" value="../.." />
14       <variable name="BUILD_DIR" value="${compiler:JALVIEW_DIR}/build/install4j" />
15       <variable name="OSX_KEYSTORE" />
16       <variable name="OSX_APPLEID" />
17       <variable name="JSIGN_SH" value="echo" />
18       <variable name="JRE_DIR" value="jre" description="The folder under the app folder that the JRE will be either copied or unpacked into" />
19       <variable name="INSTALLER_TEMPLATE_VERSION" value="DEVELOPMENT_default" />
20       <variable name="JALVIEW_VERSION" value="DEVELOPMENT" />
21       <variable name="JAVA_MIN_VERSION" value="11" />
22       <variable name="JAVA_MAX_VERSION" value="11" />
23       <variable name="JAVA_VERSION" value="11" />
24       <variable name="JAVA_INTEGER_VERSION" value="11" />
25       <variable name="VERSION" value="DEVELOPMENT" />
26       <variable name="MACOS_X64_JAVA_VM_DIR" value="${compiler:env.HOME}/buildtools/jre/jre-${compiler:JAVA_INTEGER_VERSION}-mac-x/jre" />
27       <variable name="MACOS_AARCH64_JAVA_VM_DIR" value="${compiler:env.HOME}/buildtools/jre/jre-${compiler:JAVA_INTEGER_VERSION}-mac-aarch64/jre" />
28       <variable name="WINDOWS_X64_JAVA_VM_DIR" value="${compiler:env.HOME}/buildtools/jre/jre-${compiler:JAVA_INTEGER_VERSION}-windows-x64/jre" />
29       <variable name="LINUX_X64_JAVA_VM_DIR" value="${compiler:env.HOME}/buildtools/jre/jre-${compiler:JAVA_INTEGER_VERSION}-linux-x64/jre" />
30       <variable name="LINUX_AARCH64_JAVA_VM_DIR" value="${compiler:env.HOME}/buildtools/jre/jre-${compiler:JAVA_INTEGER_VERSION}-linux-aarch64/jre" />
31       <variable name="MACOS_X64_JAVA_VM_TGZ" value="${compiler:env.HOME}/buildtools/jre/tgz/jre_${compiler:JAVA_INTEGER_VERSION}_mac_x64.tar.gz" />
32       <variable name="MACOS_AARCH64_JAVA_VM_TGZ" value="${compiler:env.HOME}/buildtools/jre/tgz/jre_${compiler:JAVA_INTEGER_VERSION}_mac_aarch64.tar.gz" />
33       <variable name="WINDOWS_X64_JAVA_VM_TGZ" value="${compiler:env.HOME}/buildtools/jre/tgz/jre_${compiler:JAVA_INTEGER_VERSION}_windows_x64.tar.gz" />
34       <variable name="LINUX_X64_JAVA_VM_TGZ" value="${compiler:env.HOME}/buildtools/jre/tgz/jre_${compiler:JAVA_INTEGER_VERSION}_linux_x64.tar.gz" />
35       <variable name="LINUX_AARCH64_JAVA_VM_TGZ" value="${compiler:env.HOME}/buildtools/jre/tgz/jre_${compiler:JAVA_INTEGER_VERSION}_linux_aarch64.tar.gz" />
36       <variable name="COPYRIGHT_MESSAGE" value="..." />
37       <variable name="BUNDLE_ID" value="org.jalview.jalview-desktop" />
38       <variable name="INTERNAL_ID" value="Jalview" />
39       <variable name="WINDOWS_APPLICATION_ID" value="6595-2347-1923-0725" />
40       <variable name="MACOS_X64_DMG_DS_STORE" value="utils/channels/default/images/jalview_default_dmg_DS_Store" />
41       <variable name="MACOS_AARCH64_DMG_DS_STORE" value="utils/channels/default/images/jalview_default_dmg_DS_Store" />
42       <variable name="MACOS_DMG_DS_STORE" value="utils/channels/default/images/jalview_default_dmg_DS_Store" />
43       <variable name="MACOS_DMG_BG_IMAGE" value="utils/channels/default/images/jalview_default_dmg_background-72dpi.png" />
44       <variable name="MACOS_DMG_BG_FILENAME" value="background.png" />
45       <variable name="WRAPPER_LINK" value="jalview" />
46       <variable name="BASH_WRAPPER_SCRIPT" value="jalview.sh" />
47       <variable name="WRAPPER_SCRIPT_BIN_DIR" value="bin" />
48       <variable name="MACOSARCHIVE_X64_NAME" value="Install Jalview (Intel)" />
49       <variable name="MACOSARCHIVE_AARCH64_NAME" value="Install Jalview (Apple Silicon)" />
50       <variable name="INSTALL4J_UTILS_DIR" value="utils/install4j" />
51       <variable name="GETDOWN_CHANNEL_DIR" value="build/website/docroot/getdown/default" />
52       <variable name="GETDOWN_FILES_DIR" value="getdown/files" />
53       <variable name="GETDOWN_RESOURCE_DIR" value="resource" />
54       <variable name="GETDOWN_DIST_DIR" value="dist" />
55       <variable name="GETDOWN_ALT_DIR" value="alt" />
56       <variable name="GETDOWN_INSTALL_DIR" value="install" />
57       <variable name="INFO_PLIST_FILE_ASSOCIATIONS_FILE" value="file_associations_auto-Info_plist.xml" />
58       <variable name="APPLICATION_CATEGORIES" value="Science;Biology;Java;" />
59       <variable name="APPLICATION_FOLDER" value="Jalview" />
60       <variable name="UNIX_APPLICATION_FOLDER" value="jalview" />
61       <variable name="EXECUTABLE_NAME" value="jalviewg" />
62       <variable name="EXTRA_SCHEME" value="jalviewx" />
63       <variable name="MAC_ICONS_FILE" value="utils/channels/release/images/jalview_logo.icns" />
64       <variable name="WINDOWS_ICONS_FILE" value="utils/channels/release/images/jalview_logo.ico" />
65       <variable name="PNG_ICON_FILE" value="utils/channels/release/images/jalview_logo.png" />
66       <variable name="BACKGROUND" value="utils/channels/release/images/jalview_logo_background_fade-640x480.png" />
67       <variable name="BATCH_WRAPPER_SCRIPT" value="jalview.bat" />
68       <variable name="POWERSHELL_WRAPPER_SCRIPT" value="jalview.ps1" />
69       <variable name="WIZARD_WIDTH" value="640" description="Default/initial width of installer wizard window.  Linux media types adapt this.&#xA;NOT USED" />
70       <variable name="WIZARD_HEIGHT" value="480" description="Default/initial width of installer wizard window.  Linux media types adapt this.&#xA;NOT USED" />
71       <variable name="MACOSARCHIVE_X64_DMG_FILENAME" value="${compiler:APPLICATION_FOLDER}-${compiler:JALVIEW_VERSION}-${compiler:sys.platform}-x64-java_${compiler:JAVA_INTEGER_VERSION}" />
72       <variable name="MACOSARCHIVE_AARCH64_DMG_FILENAME" value="${compiler:APPLICATION_FOLDER}-${compiler:JALVIEW_VERSION}-${compiler:sys.platform}-aarch64-java_${compiler:JAVA_INTEGER_VERSION}" />
73     </variables>
74     <codeSigning macEnabled="true" macPkcs12File="${compiler:OSX_KEYSTORE}" macNotarize="true" appleId="${compiler:OSX_APPLEID}">
75       <macAdditionalBinaries>
76         <entry>*.dylib</entry>
77         <entry>*.so</entry>
78         <entry>*.jnilib</entry>
79         <entry>unpack200</entry>
80         <entry>tnameserv</entry>
81         <entry>servertool</entry>
82         <entry>rmiregistry</entry>
83         <entry>rmid</entry>
84         <entry>policytool</entry>
85         <entry>pack200</entry>
86         <entry>orbd</entry>
87         <entry>keytool</entry>
88         <entry>jjs</entry>
89         <entry>java</entry>
90         <entry>jspawnhelper</entry>
91         <entry>libfreetype.dylib.6</entry>
92         <entry>applet</entry>
93         <entry>jaotc</entry>
94         <entry>jfr</entry>
95         <entry>jrunscript</entry>
96         <entry>libjli.dylib</entry>
97       </macAdditionalBinaries>
98     </codeSigning>
99   </application>
100   <files defaultUninstallMode="2">
101     <filesets>
102       <fileset name="Full file set" id="734" customizedId="FULL_FILE_SET" />
103       <fileset name="macOS x64 JVM" id="2801" customizedId="MACOS_X64_JVM" />
104       <fileset name="macOS aarch64 JVM" id="2803" customizedId="MACOS_AARCH64_JVM" />
105     </filesets>
106     <roots>
107       <root id="735" fileset="734" />
108       <root id="2802" fileset="2801" />
109       <root id="2804" fileset="2803" />
110     </roots>
111     <mountPoints>
112       <mountPoint id="736" root="735" />
113       <mountPoint id="2805" root="2802" />
114       <mountPoint id="2806" root="2804" />
115     </mountPoints>
116     <entries>
117       <dirEntry mountPoint="736" file="${compiler:JALVIEW_DIR}/${compiler:GETDOWN_CHANNEL_DIR}/${compiler:JAVA_VERSION}" uninstallMode="2" overrideOverwriteMode="true" overrideUninstallMode="true" subDirectory="files">
118         <exclude>
119           <entry location="${compiler:WRAPPER_SCRIPT_BIN_DIR}" />
120         </exclude>
121       </dirEntry>
122       <dirEntry mountPoint="736" file="${compiler:JALVIEW_DIR}/examples" overwriteMode="1" uninstallMode="2" overrideFileMode="true" overrideOverwriteMode="true" overrideUninstallMode="true" entryMode="subdir" subDirectory="examples" />
123       <dirEntry mountPoint="736" file="${compiler:JALVIEW_DIR}/${compiler:GETDOWN_CHANNEL_DIR}/${compiler:JAVA_VERSION}/${compiler:WRAPPER_SCRIPT_BIN_DIR}" fileMode="755" overrideFileMode="true" overrideUninstallMode="true" entryMode="subdir" subDirectory="${compiler:WRAPPER_SCRIPT_BIN_DIR}" overrideDirMode="true" />
124       <dirEntry mountPoint="2805" file="${compiler:MACOS_X64_JAVA_VM_DIR}" overwriteMode="1" fileMode="755" uninstallMode="2" overrideFileMode="true" overrideOverwriteMode="true" overrideUninstallMode="true" entryMode="subdir" subDirectory="${compiler:JRE_DIR}" />
125       <dirEntry mountPoint="2806" file="${compiler:MACOS_AARCH64_JAVA_VM_DIR}" overwriteMode="1" fileMode="755" uninstallMode="2" overrideFileMode="true" overrideOverwriteMode="true" overrideUninstallMode="true" entryMode="subdir" subDirectory="${compiler:JRE_DIR}" />
126     </entries>
127     <components>
128       <component name="jalview_getdown" id="1031">
129         <include>
130           <entry filesetId="734" />
131         </include>
132       </component>
133     </components>
134   </files>
135   <launchers>
136     <launcher name="Jalview Launcher" id="737" customizedId="JALVIEW" 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}">
137       <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">
138         <versionInfo include="true" fileDescription="${compiler:sys.fullName}" legalCopyright="${compiler:COPYRIGHT_MESSAGE}" internalName="${compiler:INTERNAL_ID}" productName="${compiler:sys.fullName}" />
139       </executable>
140       <splashScreen width="640" height="480" bitmapFile="${compiler:JALVIEW_DIR}/${compiler:BACKGROUND}" textOverlay="true">
141         <text>
142           <statusLine x="85" y="81" text="${compiler:sys.shortName}" fontSize="18" />
143           <versionLine x="85" y="109" text="version ${compiler:sys.version}" />
144         </text>
145       </splashScreen>
146       <java mainClass="com.threerings.getdown.launcher.GetdownApp" vmParameters="-Dinstaller_template_version=${compiler:INSTALLER_TEMPLATE_VERSION} -Dchannel.app_name=&quot;${compiler:JALVIEW_APPLICATION_NAME}&quot;" arguments="&quot;${launcher:sys.launcherDirectory}&quot; jalview">
147         <classPath>
148           <archive location="getdown-launcher.jar" />
149           <archive location="${compiler:GETDOWN_INSTALL_DIR}/getdown-launcher.jar" failOnError="false" />
150         </classPath>
151         <nativeLibraryDirectories>
152           <directory name="${compiler:JRE_DIR}/bin" />
153           <directory name="${compiler:GETDOWN_DIST_DIR}" />
154         </nativeLibraryDirectories>
155       </java>
156       <infoPlist>${compiler:file("${compiler:INFO_PLIST_FILE_ASSOCIATIONS_FILE}")}</infoPlist>
157       <iconImageFiles>
158         <file path="${compiler:JALVIEW_DIR}/${compiler:PNG_ICON_FILE}" />
159       </iconImageFiles>
160       <macStaticAssociations>
161         <urlHandler scheme="jalview" />
162         <urlHandler scheme="jalviews" />
163         <urlHandler scheme="jalviewhttp" />
164         <urlHandler scheme="jalviewhttps" />
165         <urlHandler scheme="${compiler:EXTRA_SCHEME}" />
166       </macStaticAssociations>
167     </launcher>
168   </launchers>
169   <installerGui autoUpdateDescriptorUrl="https://www.jalview.org/install4j/updates.xml">
170     <applications>
171       <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}">
172         <serializedBean>
173           <property name="frameHeight" type="int" value="480" />
174           <property name="frameWidth" type="int" value="640" />
175           <property name="useCustomIcon" type="boolean" value="true" />
176         </serializedBean>
177         <styleOverrides>
178           <styleOverride name="Customize banner image" enabled="true">
179             <group id="146" beanClass="com.install4j.runtime.beans.groups.VerticalFormComponentGroup" useExternalParametrization="true" externalParametrizationName="Customize banner image" externalParametrizationMode="include">
180               <serializedBean>
181                 <property name="backgroundColor">
182                   <object class="com.install4j.runtime.beans.LightOrDarkColor">
183                     <object class="java.awt.Color">
184                       <int>255</int>
185                       <int>255</int>
186                       <int>255</int>
187                       <int>255</int>
188                     </object>
189                     <object class="java.awt.Color">
190                       <int>49</int>
191                       <int>52</int>
192                       <int>53</int>
193                       <int>255</int>
194                     </object>
195                   </object>
196                 </property>
197                 <property name="borderSides">
198                   <object class="com.install4j.runtime.beans.formcomponents.BorderSides">
199                     <property name="bottom" type="boolean" value="true" />
200                   </object>
201                 </property>
202                 <property name="imageEdgeBackgroundColor">
203                   <object class="java.awt.Color">
204                     <int>255</int>
205                     <int>255</int>
206                     <int>255</int>
207                     <int>255</int>
208                   </object>
209                 </property>
210                 <property name="imageEdgeBorder" type="boolean" value="true" />
211                 <property name="imageFile">
212                   <object class="com.install4j.api.beans.ExternalFile">
213                     <string>${compiler:JALVIEW_DIR}/${compiler:BACKGROUND}</string>
214                   </object>
215                 </property>
216                 <property name="insets">
217                   <object class="java.awt.Insets">
218                     <int>5</int>
219                     <int>10</int>
220                     <int>10</int>
221                     <int>10</int>
222                   </object>
223                 </property>
224               </serializedBean>
225               <externalParametrizationPropertyNames>
226                 <propertyName>imageAnchor</propertyName>
227                 <propertyName>imageEdgeBackgroundColor</propertyName>
228                 <propertyName>imageFile</propertyName>
229               </externalParametrizationPropertyNames>
230             </group>
231           </styleOverride>
232           <styleOverride name="Jalview" enabled="true">
233             <formComponent name="Watermark" id="352" beanClass="com.install4j.runtime.beans.formcomponents.SeparatorComponent" insetTop="0" insetLeft="5" insetBottom="0" useExternalParametrization="true" externalParametrizationName="Jalview" externalParametrizationMode="include">
234               <serializedBean>
235                 <property name="enabledTitleText" type="boolean" value="false" />
236               </serializedBean>
237               <externalParametrizationPropertyNames>
238                 <propertyName>labelText</propertyName>
239               </externalParametrizationPropertyNames>
240             </formComponent>
241           </styleOverride>
242         </styleOverrides>
243         <startup>
244           <screen id="1" beanClass="com.install4j.runtime.beans.screens.StartupScreen" rollbackBarrierExitCode="0">
245             <actions>
246               <action id="22" beanClass="com.install4j.runtime.beans.actions.misc.RequestPrivilegesAction" actionElevationType="none" rollbackBarrierExitCode="0">
247                 <serializedBean>
248                   <property name="obtainIfAdminWin" type="boolean" value="false" />
249                 </serializedBean>
250               </action>
251               <action name="Set unixUserBinDir (Linux or Unix)" id="2738" beanClass="com.install4j.runtime.beans.actions.control.SetVariableAction" rollbackBarrierExitCode="0">
252                 <serializedBean>
253                   <property name="script">
254                     <object class="com.install4j.api.beans.ScriptProperty">
255                       <property name="value" type="string">String userHome = (String)context.getVariable("sys.userHome");
256
257 ArrayList&lt;String&gt; tryPaths = new ArrayList&lt;&gt; ();
258 tryPaths.add(userHome + File.separator + "bin");
259 tryPaths.add(userHome + File.separator + ".local" + File.separator + "bin");
260 tryPaths.add(userHome + File.separator + "local" + File.separator + "bin");
261 tryPaths.add(userHome + File.separator + "opt" + File.separator + "bin");
262
263 if (Util.isMacOS()) { // &amp;&amp; root permission?
264     tryPaths.add(File.separator + "usr" + File.separator + "local" + File.separator + "bin"); 
265 }
266
267 for (int i = 0; i &lt; tryPaths.size(); i++) {
268     String tryPath = tryPaths.get(i);
269     File unixUserBinDir = new File(tryPath);
270     if (unixUserBinDir.exists()) {
271         return tryPath;
272     }
273 }
274
275 return null;
276 </property>
277                     </object>
278                   </property>
279                   <property name="variableName" type="string">unixUserBinDir</property>
280                 </serializedBean>
281                 <condition>Util.isLinux() || Util.isUnixInstaller() || Util.isMacOS()</condition>
282               </action>
283               <action name="Set macWrapperLinkLocation (macOS)" id="2745" beanClass="com.install4j.runtime.beans.actions.control.SetVariableAction" rollbackBarrierExitCode="0">
284                 <serializedBean>
285                   <property name="script">
286                     <object class="com.install4j.api.beans.ScriptProperty">
287                       <property name="value" type="string">String javaHome = System.getProperty("java.home");
288 String appName = ((String)context.getCompilerVariable("JALVIEW_APPLICATION_NAME")) + ".app";
289 int i = javaHome.indexOf(appName);
290 String wrapperLink = null;
291 if (i &gt; -1) {
292     wrapperLink = javaHome.substring(0, i) + appName + File.separator + "Contents" + File.separator + "MacOS" + File.separator + ((String)context.getCompilerVariable("WRAPPER_LINK"));
293 }
294 return wrapperLink;
295 </property>
296                     </object>
297                   </property>
298                   <property name="variableName" type="string">macWrapperLinkLocation</property>
299                 </serializedBean>
300                 <condition>Util.isMacOS()</condition>
301               </action>
302             </actions>
303           </screen>
304         </startup>
305         <screens>
306           <screen id="2" beanClass="com.install4j.runtime.beans.screens.WelcomeScreen" rollbackBarrierExitCode="0">
307             <styleOverrides>
308               <styleOverride name="Customize banner image" enabled="true">
309                 <group id="145" beanClass="com.install4j.runtime.beans.groups.VerticalFormComponentGroup" useExternalParametrization="true" externalParametrizationName="Customize banner image" externalParametrizationMode="include">
310                   <serializedBean>
311                     <property name="backgroundColor">
312                       <object class="com.install4j.runtime.beans.LightOrDarkColor">
313                         <object class="java.awt.Color">
314                           <int>255</int>
315                           <int>255</int>
316                           <int>255</int>
317                           <int>255</int>
318                         </object>
319                         <object class="java.awt.Color">
320                           <int>49</int>
321                           <int>52</int>
322                           <int>53</int>
323                           <int>255</int>
324                         </object>
325                       </object>
326                     </property>
327                     <property name="borderSides">
328                       <object class="com.install4j.runtime.beans.formcomponents.BorderSides">
329                         <property name="bottom" type="boolean" value="true" />
330                       </object>
331                     </property>
332                     <property name="imageEdgeBackgroundColor">
333                       <object class="com.install4j.runtime.beans.LightOrDarkColor">
334                         <object class="java.awt.Color">
335                           <int>25</int>
336                           <int>143</int>
337                           <int>220</int>
338                           <int>255</int>
339                         </object>
340                         <object class="java.awt.Color">
341                           <int>0</int>
342                           <int>74</int>
343                           <int>151</int>
344                           <int>255</int>
345                         </object>
346                       </object>
347                     </property>
348                     <property name="imageEdgeBorder" type="boolean" value="true" />
349                     <property name="imageFile">
350                       <object class="com.install4j.api.beans.ExternalFile">
351                         <string>${compiler:JALVIEW_DIR}/${compiler:BACKGROUND}</string>
352                       </object>
353                     </property>
354                     <property name="insets">
355                       <object class="java.awt.Insets">
356                         <int>5</int>
357                         <int>10</int>
358                         <int>10</int>
359                         <int>10</int>
360                       </object>
361                     </property>
362                   </serializedBean>
363                   <externalParametrizationPropertyNames>
364                     <propertyName>imageAnchor</propertyName>
365                     <propertyName>imageEdgeBackgroundColor</propertyName>
366                     <propertyName>imageFile</propertyName>
367                   </externalParametrizationPropertyNames>
368                 </group>
369               </styleOverride>
370             </styleOverrides>
371             <actions>
372               <action id="7" beanClass="com.install4j.runtime.beans.actions.misc.LoadResponseFileAction" rollbackBarrierExitCode="0" multiExec="true">
373                 <serializedBean>
374                   <property name="excludedVariables" type="array" elementType="string" length="1">
375                     <element index="0">sys.installationDir</element>
376                   </property>
377                 </serializedBean>
378                 <condition>context.getBooleanVariable("sys.confirmedUpdateInstallation")</condition>
379               </action>
380             </actions>
381             <formComponents>
382               <formComponent id="3" beanClass="com.install4j.runtime.beans.formcomponents.MultilineLabelComponent">
383                 <serializedBean>
384                   <property name="labelText" type="string">${form:welcomeMessage}</property>
385                 </serializedBean>
386                 <visibilityScript>!context.isConsole()</visibilityScript>
387               </formComponent>
388               <formComponent id="4" beanClass="com.install4j.runtime.beans.formcomponents.ConsoleHandlerFormComponent">
389                 <serializedBean>
390                   <property name="consoleScript">
391                     <object class="com.install4j.api.beans.ScriptProperty">
392                       <property name="value" type="string">String message = context.getMessage("ConsoleWelcomeLabel", context.getApplicationName());
393 return console.askOkCancel(message, true);
394 </property>
395                     </object>
396                   </property>
397                 </serializedBean>
398               </formComponent>
399               <formComponent id="5" beanClass="com.install4j.runtime.beans.formcomponents.UpdateAlertComponent" useExternalParametrization="true" externalParametrizationName="Update Alert" externalParametrizationMode="include">
400                 <externalParametrizationPropertyNames>
401                   <propertyName>updateCheck</propertyName>
402                 </externalParametrizationPropertyNames>
403               </formComponent>
404               <formComponent id="6" beanClass="com.install4j.runtime.beans.formcomponents.MultilineLabelComponent" insetTop="20">
405                 <serializedBean>
406                   <property name="labelText" type="string">${i18n:ClickNext}</property>
407                 </serializedBean>
408               </formComponent>
409             </formComponents>
410           </screen>
411           <screen id="8" beanClass="com.install4j.runtime.beans.screens.InstallationDirectoryScreen" rollbackBarrierExitCode="0">
412             <condition>!context.getBooleanVariable("sys.confirmedUpdateInstallation")</condition>
413             <actions>
414               <action id="11" beanClass="com.install4j.runtime.beans.actions.misc.LoadResponseFileAction" rollbackBarrierExitCode="0" multiExec="true">
415                 <serializedBean>
416                   <property name="excludedVariables" type="array" elementType="string" length="1">
417                     <element index="0">sys.installationDir</element>
418                   </property>
419                 </serializedBean>
420                 <condition>context.getVariable("sys.responseFile") == null</condition>
421               </action>
422             </actions>
423             <formComponents>
424               <formComponent id="9" beanClass="com.install4j.runtime.beans.formcomponents.MultilineLabelComponent" insetBottom="25">
425                 <serializedBean>
426                   <property name="labelText" type="string">${i18n:SelectDirLabel(${compiler:sys.fullName})}</property>
427                 </serializedBean>
428               </formComponent>
429               <formComponent id="10" beanClass="com.install4j.runtime.beans.formcomponents.InstallationDirectoryChooserComponent" useExternalParametrization="true" externalParametrizationName="Installation Directory Chooser" externalParametrizationMode="include">
430                 <serializedBean>
431                   <property name="requestFocus" type="boolean" value="true" />
432                 </serializedBean>
433                 <externalParametrizationPropertyNames>
434                   <propertyName>allowSpacesOnUnix</propertyName>
435                   <propertyName>checkFreeSpace</propertyName>
436                   <propertyName>checkWritable</propertyName>
437                   <propertyName>existingDirWarning</propertyName>
438                   <propertyName>manualEntryAllowed</propertyName>
439                   <propertyName>showFreeDiskSpace</propertyName>
440                   <propertyName>showRequiredDiskSpace</propertyName>
441                   <propertyName>standardValidation</propertyName>
442                   <propertyName>suggestAppDir</propertyName>
443                   <propertyName>validateApplicationId</propertyName>
444                   <propertyName>validationScript</propertyName>
445                 </externalParametrizationPropertyNames>
446               </formComponent>
447             </formComponents>
448           </screen>
449           <screen id="12" beanClass="com.install4j.runtime.beans.screens.ComponentsScreen" enabled="false" rollbackBarrierExitCode="0">
450             <formComponents>
451               <formComponent id="13" beanClass="com.install4j.runtime.beans.formcomponents.MultilineLabelComponent">
452                 <serializedBean>
453                   <property name="labelText" type="string">${i18n:SelectComponentsLabel2}</property>
454                 </serializedBean>
455                 <visibilityScript>!context.isConsole()</visibilityScript>
456               </formComponent>
457               <formComponent id="14" beanClass="com.install4j.runtime.beans.formcomponents.ComponentSelectorComponent" useExternalParametrization="true" externalParametrizationName="Installation Components" externalParametrizationMode="include">
458                 <serializedBean>
459                   <property name="fillVertical" type="boolean" value="true" />
460                 </serializedBean>
461                 <externalParametrizationPropertyNames>
462                   <propertyName>selectionChangedScript</propertyName>
463                 </externalParametrizationPropertyNames>
464               </formComponent>
465             </formComponents>
466           </screen>
467           <screen id="1692" beanClass="com.install4j.runtime.beans.screens.FileAssociationsScreen" rollbackBarrierExitCode="0">
468             <formComponents>
469               <formComponent id="1693" beanClass="com.install4j.runtime.beans.formcomponents.MultilineLabelComponent">
470                 <serializedBean>
471                   <property name="labelText" type="string">${i18n:SelectAssociationsLabel}</property>
472                 </serializedBean>
473               </formComponent>
474               <formComponent id="1694" beanClass="com.install4j.runtime.beans.formcomponents.FileAssociationsComponent" useExternalParametrization="true" externalParametrizationName="File Associations" externalParametrizationMode="include">
475                 <serializedBean>
476                   <property name="fillVertical" type="boolean" value="true" />
477                   <property name="selectionButtonPosition" type="enum" class="com.install4j.runtime.beans.formcomponents.VerticalDockingPosition" value="TOP" />
478                   <property name="showSelectionButtons" type="boolean" value="true" />
479                 </serializedBean>
480                 <externalParametrizationPropertyNames>
481                   <propertyName>showSelectionButtons</propertyName>
482                   <propertyName>selectionButtonPosition</propertyName>
483                 </externalParametrizationPropertyNames>
484               </formComponent>
485             </formComponents>
486           </screen>
487           <screen id="15" beanClass="com.install4j.runtime.beans.screens.InstallationScreen" rollbackBarrier="true" rollbackBarrierExitCode="0">
488             <actions>
489               <action id="17" beanClass="com.install4j.runtime.beans.actions.InstallFilesAction" rollbackBarrierExitCode="0" failureStrategy="quit" errorMessage="${i18n:FileCorrupted}" />
490               <action name="Create program group (RELEASE)" id="18" customizedId="PROGRAM_GROUP_RELEASE" beanClass="com.install4j.runtime.beans.actions.desktop.CreateProgramGroupAction" actionElevationType="elevated" rollbackBarrierExitCode="0">
491                 <serializedBean>
492                   <property name="allUsers" type="boolean" value="false" />
493                   <property name="categories" type="string">${compiler:APPLICATION_CATEGORIES}</property>
494                   <property name="programGroupEntryConfigs">
495                     <add>
496                       <object class="com.install4j.runtime.beans.screens.components.ProgramGroupFileConfig">
497                         <property name="name" type="string">Examples</property>
498                         <property name="target">
499                           <object class="java.io.File">
500                             <string>examples</string>
501                           </object>
502                         </property>
503                       </object>
504                     </add>
505                   </property>
506                   <property name="programGroupName" type="string">${compiler:JALVIEW_NAME}</property>
507                   <property name="uninstallerMenuName" type="string">${i18n:UninstallerMenuEntry(${compiler:sys.fullName})}</property>
508                 </serializedBean>
509                 <condition>!context.getBooleanVariable("sys.programGroupDisabled")</condition>
510               </action>
511               <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">
512                 <serializedBean>
513                   <property name="allUsers" type="boolean" value="false" />
514                   <property name="categories" type="string">${compiler:APPLICATION_CATEGORIES}</property>
515                   <property name="programGroupName" type="string">${compiler:JALVIEW_NAME}</property>
516                   <property name="uninstallerMenuName" type="string">${i18n:UninstallerMenuEntry(${compiler:sys.fullName})}</property>
517                 </serializedBean>
518                 <condition>!context.getBooleanVariable("sys.programGroupDisabled")</condition>
519               </action>
520               <action id="19" beanClass="com.install4j.runtime.beans.actions.desktop.RegisterAddRemoveAction" actionElevationType="elevated" rollbackBarrierExitCode="0">
521                 <serializedBean>
522                   <property name="itemName" type="string">${compiler:sys.fullName} ${compiler:sys.version}</property>
523                 </serializedBean>
524               </action>
525               <action id="124" beanClass="com.install4j.runtime.beans.actions.control.SetVariableAction" enabled="false" rollbackBarrierExitCode="0">
526                 <serializedBean>
527                   <property name="script">
528                     <object class="com.install4j.api.beans.ScriptProperty">
529                       <property name="value" type="string" />
530                     </object>
531                   </property>
532                   <property name="variableName" type="string" />
533                 </serializedBean>
534                 <condition>true</condition>
535               </action>
536               <action id="134" beanClass="com.install4j.runtime.beans.actions.misc.AddVmOptionsAction" enabled="false" actionElevationType="elevated" rollbackBarrierExitCode="0">
537                 <serializedBean>
538                   <property name="launcherId" type="string">121</property>
539                   <property name="vmOptions" type="array" elementType="string" length="0" />
540                 </serializedBean>
541               </action>
542               <group name="File Associations" id="2251" beanClass="com.install4j.runtime.beans.groups.ActionGroup">
543                 <beans>
544                   <action id="2253" beanClass="com.install4j.runtime.beans.actions.control.SetMessageAction" actionElevationType="none" rollbackBarrierExitCode="0">
545                     <serializedBean>
546                       <property name="statusMessage" type="string">Creating file associations...</property>
547                       <property name="useDetail" type="boolean" value="true" />
548                       <property name="useStatus" type="boolean" value="true" />
549                     </serializedBean>
550                   </action>
551                   <action id="2254" beanClass="com.install4j.runtime.beans.actions.control.SetProgressAction" actionElevationType="none" rollbackBarrierExitCode="0">
552                     <serializedBean>
553                       <property name="progressChangeType" type="enum" class="com.install4j.runtime.beans.actions.control.ProgressChangeType" value="SET_INDETERMINATE" />
554                     </serializedBean>
555                   </action>
556                   <group name="File Associations Replacement Group" id="2753" customizedId="EXTENSIONS_REPLACED_BY_GRADLE_PARENT_GROUP" beanClass="com.install4j.runtime.beans.groups.ActionGroup">
557                     <beans>
558                       <action name="EXTENSIONS_REPLACED_BY_GRADLE" id="1691" customizedId="EXTENSIONS" beanClass="com.install4j.runtime.beans.actions.desktop.CreateFileAssociationAction" actionElevationType="elevated" rollbackBarrierExitCode="0">
559                         <serializedBean>
560                           <property name="description" type="string">This action, identified by its name "EXTENSIONS_REPLACED_BY_GRADLE", will be replaced by gradle with the contents of file 'file_associations_auto_install4j.xml'.</property>
561                           <property name="extension" type="string">extensions_to_be_replaced_by_gradle</property>
562                           <property name="launcherId" type="string">JALVIEW</property>
563                         </serializedBean>
564                       </action>
565                     </beans>
566                   </group>
567                   <action id="2542" beanClass="com.install4j.runtime.beans.actions.control.SetMessageAction" actionElevationType="none" rollbackBarrierExitCode="0">
568                     <serializedBean>
569                       <property name="statusMessage" type="string">Finished creating file associations</property>
570                       <property name="useDetail" type="boolean" value="true" />
571                       <property name="useStatus" type="boolean" value="true" />
572                     </serializedBean>
573                   </action>
574                   <action id="2541" beanClass="com.install4j.runtime.beans.actions.control.SetProgressAction" actionElevationType="none" rollbackBarrierExitCode="0">
575                     <serializedBean>
576                       <property name="percentValue" type="int" value="100" />
577                     </serializedBean>
578                   </action>
579                 </beans>
580               </group>
581               <action id="2350" beanClass="com.install4j.runtime.beans.actions.desktop.UrlHandlerAction" actionElevationType="elevated" rollbackBarrierExitCode="0">
582                 <serializedBean>
583                   <property name="launcherId" type="string">737</property>
584                   <property name="scheme" type="string">jalview</property>
585                 </serializedBean>
586               </action>
587               <action id="2822" beanClass="com.install4j.runtime.beans.actions.desktop.UrlHandlerAction" actionElevationType="elevated" rollbackBarrierExitCode="0">
588                 <serializedBean>
589                   <property name="launcherId" type="string">737</property>
590                   <property name="scheme" type="string">jalviews</property>
591                 </serializedBean>
592               </action>
593               <action id="2819" beanClass="com.install4j.runtime.beans.actions.desktop.UrlHandlerAction" actionElevationType="elevated" rollbackBarrierExitCode="0">
594                 <serializedBean>
595                   <property name="launcherId" type="string">737</property>
596                   <property name="scheme" type="string">jalviewhttp</property>
597                 </serializedBean>
598               </action>
599               <action id="2820" beanClass="com.install4j.runtime.beans.actions.desktop.UrlHandlerAction" actionElevationType="elevated" rollbackBarrierExitCode="0">
600                 <serializedBean>
601                   <property name="launcherId" type="string">737</property>
602                   <property name="scheme" type="string">jalviewhttps</property>
603                 </serializedBean>
604               </action>
605               <action id="2641" beanClass="com.install4j.runtime.beans.actions.desktop.UrlHandlerAction" actionElevationType="elevated" rollbackBarrierExitCode="0">
606                 <serializedBean>
607                   <property name="launcherId" type="string">JALVIEW</property>
608                   <property name="scheme" type="string">${compiler:EXTRA_SCHEME}</property>
609                 </serializedBean>
610               </action>
611             </actions>
612             <formComponents>
613               <formComponent id="16" beanClass="com.install4j.runtime.beans.formcomponents.ProgressComponent">
614                 <serializedBean>
615                   <property name="initialStatusMessage" type="string">${i18n:WizardPreparing}</property>
616                 </serializedBean>
617               </formComponent>
618             </formComponents>
619           </screen>
620           <screen id="20" beanClass="com.install4j.runtime.beans.screens.FinishedScreen" rollbackBarrierExitCode="0" finishScreen="true">
621             <actions>
622               <action name="Linux Jalview Appname-&gt;java symlink" id="2813" beanClass="com.install4j.runtime.beans.actions.files.CreateSymlinkAction" rollbackBarrierExitCode="0" errorMessage="Could not make symlink to wrapper script">
623                 <serializedBean>
624                   <property name="file">
625                     <object class="java.io.File">
626                       <string>${compiler:JRE_DIR}/bin/java</string>
627                     </object>
628                   </property>
629                   <property name="linkFile">
630                     <object class="java.io.File">
631                       <string>${compiler:JRE_DIR}/bin/${compiler:JALVIEW_APPLICATION_NAME}</string>
632                     </object>
633                   </property>
634                   <property name="removeOnUninstall" type="boolean" value="false" />
635                 </serializedBean>
636                 <condition>Util.isLinux()</condition>
637               </action>
638               <action name="Linux Jalview-&gt;java symlink" id="2814" beanClass="com.install4j.runtime.beans.actions.files.CreateSymlinkAction" rollbackBarrierExitCode="0" errorMessage="Could not make symlink to wrapper script">
639                 <serializedBean>
640                   <property name="file">
641                     <object class="java.io.File">
642                       <string>${compiler:JRE_DIR}/bin/java</string>
643                     </object>
644                   </property>
645                   <property name="linkFile">
646                     <object class="java.io.File">
647                       <string>${compiler:JRE_DIR}/bin/${compiler:JALVIEW_NAME}</string>
648                     </object>
649                   </property>
650                   <property name="removeOnUninstall" type="boolean" value="false" />
651                 </serializedBean>
652                 <condition>Util.isLinux()</condition>
653               </action>
654               <action id="2012" beanClass="com.install4j.runtime.beans.actions.desktop.CreateStartMenuEntryAction" actionElevationType="elevated" rollbackBarrierExitCode="0">
655                 <serializedBean>
656                   <property name="allUsers" type="boolean" value="false" />
657                   <property name="categories" type="string">${compiler:APPLICATION_CATEGORIES}</property>
658                   <property name="entryName" type="string">${compiler:JALVIEW_APPLICATION_NAME}</property>
659                   <property name="file">
660                     <object class="java.io.File">
661                       <string>${installer:sys.contentDir}/${compiler:EXECUTABLE_NAME}</string>
662                     </object>
663                   </property>
664                   <property name="icon">
665                     <object class="com.install4j.api.beans.ExternalFile">
666                       <string>${compiler:JALVIEW_DIR}/${compiler:WINDOWS_ICONS_FILE}</string>
667                     </object>
668                   </property>
669                   <property name="programGroupName" type="string">${compiler:JALVIEW_NAME}</property>
670                   <property name="unixIconFile">
671                     <object class="com.install4j.api.beans.ExternalFile">
672                       <string>${compiler:JALVIEW_DIR}/${compiler:PNG_ICON_FILE}</string>
673                     </object>
674                   </property>
675                 </serializedBean>
676                 <condition>!context.getBooleanVariable("sys.programGroupDisabled")</condition>
677               </action>
678               <action id="573" beanClass="com.install4j.runtime.beans.actions.desktop.CreateDesktopLinkAction" actionElevationType="elevated" rollbackBarrierExitCode="0" errorMessage="Could not make desktop link">
679                 <serializedBean>
680                   <property name="allUsers" type="boolean" value="false" />
681                   <property name="description" type="string">${compiler:JALVIEW_APPLICATION_NAME}</property>
682                   <property name="file">
683                     <object class="java.io.File">
684                       <string>${installer:sys.contentDir}/${compiler:EXECUTABLE_NAME}</string>
685                     </object>
686                   </property>
687                   <property name="name" type="string">${compiler:JALVIEW_APPLICATION_NAME}</property>
688                   <property name="unixIconFile">
689                     <object class="com.install4j.api.beans.ExternalFile">
690                       <string>${compiler:JALVIEW_DIR}/${compiler:PNG_ICON_FILE}</string>
691                     </object>
692                   </property>
693                   <property name="winIconFile">
694                     <object class="com.install4j.api.beans.ExternalFile">
695                       <string>${compiler:JALVIEW_DIR}/${compiler:WINDOWS_ICONS_FILE}</string>
696                     </object>
697                   </property>
698                 </serializedBean>
699                 <condition>context.getBooleanVariable("createDesktopLinkAction")</condition>
700               </action>
701               <action id="576" beanClass="com.install4j.runtime.beans.actions.desktop.AddToDockAction" actionElevationType="none" rollbackBarrierExitCode="0">
702                 <serializedBean>
703                   <property name="executable">
704                     <object class="java.io.File">
705                       <string>${compiler:JALVIEW_APPLICATION_NAME}.app</string>
706                     </object>
707                   </property>
708                 </serializedBean>
709                 <condition>context.getBooleanVariable("addToDockAction")</condition>
710               </action>
711               <action name="Linux/Unix symlink" id="2733" beanClass="com.install4j.runtime.beans.actions.files.CreateSymlinkAction" rollbackBarrierExitCode="0" errorMessage="Could not make symlink to wrapper script">
712                 <serializedBean>
713                   <property name="file">
714                     <object class="java.io.File">
715                       <string>${compiler:WRAPPER_SCRIPT_BIN_DIR}/${compiler:BASH_WRAPPER_SCRIPT}</string>
716                     </object>
717                   </property>
718                   <property name="linkFile">
719                     <object class="java.io.File">
720                       <string>${compiler:WRAPPER_SCRIPT_BIN_DIR}/${compiler:WRAPPER_LINK}</string>
721                     </object>
722                   </property>
723                 </serializedBean>
724                 <condition>Util.isLinux() || Util.isUnixInstaller() || Util.isMacOS()</condition>
725               </action>
726               <action name="Add Jalview bin to the user's path (Windows)" id="2740" beanClass="com.install4j.runtime.beans.actions.misc.ModifyEnvironmentVariableAction" actionElevationType="elevated" rollbackBarrierExitCode="0" errorMessage="Could not add &quot;${installer:sys.contentDir}\${compiler:WRAPPER_SCRIPT_BIN_DIR}&quot; to the Path environment variable">
727                 <serializedBean>
728                   <property name="type" type="enum" class="com.install4j.runtime.beans.actions.misc.ModifyStringType" value="APPEND" />
729                   <property name="value" type="string">${installer:sys.contentDir}\${compiler:WRAPPER_SCRIPT_BIN_DIR}</property>
730                   <property name="variableName" type="string">Path</property>
731                 </serializedBean>
732                 <condition>context.getBooleanVariable("appendToPathAction")</condition>
733               </action>
734               <action name="Create Linux/Unix symbolic link to jalview.sh in user's local bin" id="2739" beanClass="com.install4j.runtime.beans.actions.files.CreateSymlinkAction" rollbackBarrierExitCode="0" errorMessage="Could not make a ${compiler:WRAPPER_LINK} symbolic link in ~/${installer:unixUserBinDir}">
735                 <serializedBean>
736                   <property name="file">
737                     <object class="java.io.File">
738                       <string>${installer:sys.contentDir}/${compiler:WRAPPER_SCRIPT_BIN_DIR}/${compiler:BASH_WRAPPER_SCRIPT}</string>
739                     </object>
740                   </property>
741                   <property name="linkFile">
742                     <object class="java.io.File">
743                       <string>${installer:unixUserBinDir}/${compiler:WRAPPER_LINK}</string>
744                     </object>
745                   </property>
746                 </serializedBean>
747                 <condition>context.getBooleanVariable("makeSymbolicLinkAction") &amp;&amp; ( Util.isLinux() || Util.isUnixInstaller() ) &amp;&amp; ( context.getVariable("unixUserBinDir") != null )</condition>
748               </action>
749               <action name="Create macOS symbolic link to jalview in user's local bin" id="2743" beanClass="com.install4j.runtime.beans.actions.files.CreateSymlinkAction" rollbackBarrierExitCode="0" errorMessage="Could not make a ${compiler:WRAPPER_LINK} symbolic link in ~/${installer:unixUserBinDir}">
750                 <serializedBean>
751                   <property name="file">
752                     <object class="java.io.File">
753                       <string>${installer:macWrapperLinkLocation}</string>
754                     </object>
755                   </property>
756                   <property name="linkFile">
757                     <object class="java.io.File">
758                       <string>${installer:unixUserBinDir}/${compiler:WRAPPER_LINK}</string>
759                     </object>
760                   </property>
761                 </serializedBean>
762                 <condition>context.getBooleanVariable("makeSymbolicLinkAction") &amp;&amp; Util.isMacOS() &amp;&amp; ( context.getVariable("unixUserBinDir") != null ) &amp;&amp; ( context.getVariable("macWrapperLinkLocation") != null )</condition>
763               </action>
764               <action name="Windows copy BAT file" id="2817" beanClass="com.install4j.runtime.beans.actions.files.CopyFileAction" rollbackBarrierExitCode="0">
765                 <serializedBean>
766                   <property name="destinationFile">
767                     <object class="java.io.File">
768                       <string>${compiler:WRAPPER_SCRIPT_BIN_DIR}/${compiler:WRAPPER_LINK}.bat</string>
769                     </object>
770                   </property>
771                   <property name="files" type="array" class="java.io.File" length="1">
772                     <element index="0">
773                       <object class="java.io.File">
774                         <string>${compiler:WRAPPER_SCRIPT_BIN_DIR}/${compiler:BATCH_WRAPPER_SCRIPT}</string>
775                       </object>
776                     </element>
777                   </property>
778                 </serializedBean>
779                 <condition>Util.isWindows() &amp;&amp; !(((String)context.getCompilerVariable("WRAPPER_LINK")+".bat").equals((String)context.getCompilerVariable("BATCH_WRAPPER_SCRIPT")))</condition>
780               </action>
781               <action name="Windows copy PS1 file" id="2818" beanClass="com.install4j.runtime.beans.actions.files.CopyFileAction" rollbackBarrierExitCode="0">
782                 <serializedBean>
783                   <property name="destinationFile">
784                     <object class="java.io.File">
785                       <string>${compiler:WRAPPER_SCRIPT_BIN_DIR}/${compiler:WRAPPER_LINK}.ps1</string>
786                     </object>
787                   </property>
788                   <property name="files" type="array" class="java.io.File" length="1">
789                     <element index="0">
790                       <object class="java.io.File">
791                         <string>${compiler:WRAPPER_SCRIPT_BIN_DIR}/${compiler:POWERSHELL_WRAPPER_SCRIPT}</string>
792                       </object>
793                     </element>
794                   </property>
795                 </serializedBean>
796                 <condition>Util.isWindows() &amp;&amp; !(((String)context.getCompilerVariable("WRAPPER_LINK")+".ps1").equals((String)context.getCompilerVariable("POWERSHELL_WRAPPER_SCRIPT")))</condition>
797               </action>
798             </actions>
799             <formComponents>
800               <formComponent id="21" beanClass="com.install4j.runtime.beans.formcomponents.MultilineLabelComponent" insetBottom="10">
801                 <serializedBean>
802                   <property name="labelText" type="string">${form:finishedMessage}</property>
803                 </serializedBean>
804               </formComponent>
805               <formComponent name="Add a desktop link" id="574" beanClass="com.install4j.runtime.beans.formcomponents.CheckboxComponent">
806                 <serializedBean>
807                   <property name="checkboxText" type="string">${i18n:CreateDesktopIcon}</property>
808                   <property name="initiallySelected" type="boolean" value="true" />
809                   <property name="variableName" type="string">createDesktopLinkAction</property>
810                 </serializedBean>
811                 <visibilityScript>!Util.isMacOS()</visibilityScript>
812               </formComponent>
813               <formComponent name="Add an executable to the dock" id="577" beanClass="com.install4j.runtime.beans.formcomponents.CheckboxComponent">
814                 <serializedBean>
815                   <property name="checkboxText" type="string">${i18n:AddToDock}</property>
816                   <property name="initiallySelected" type="boolean" value="true" />
817                   <property name="variableName" type="string">addToDockAction</property>
818                 </serializedBean>
819                 <visibilityScript>Util.isMacOS()</visibilityScript>
820               </formComponent>
821               <formComponent name="Add jalview bin to the user's Path environment variable (Windows)" id="2734" beanClass="com.install4j.runtime.beans.formcomponents.CheckboxComponent">
822                 <serializedBean>
823                   <property name="checkboxText" type="string">Add ${compiler:JALVIEW_APPLICATION_NAME}'s bin folder to the Path environment variable</property>
824                   <property name="initiallySelected" type="boolean" value="true" />
825                   <property name="variableName" type="string">appendToPathAction</property>
826                 </serializedBean>
827                 <visibilityScript>Util.isWindows()</visibilityScript>
828               </formComponent>
829               <formComponent name="Make a symbolic link to jalview.sh bash script in the user's local bin (Linux or Unix)" id="2736" beanClass="com.install4j.runtime.beans.formcomponents.CheckboxComponent">
830                 <serializedBean>
831                   <property name="checkboxText" type="string">Make a ${compiler:WRAPPER_LINK} symbolic link in ${installer:unixUserBinDir}</property>
832                   <property name="initiallySelected" type="boolean" value="true" />
833                   <property name="variableName" type="string">makeSymbolicLinkAction</property>
834                 </serializedBean>
835                 <visibilityScript>( Util.isLinux() || Util.isUnixInstaller() || ( Util.isMacOS() &amp;&amp; ( context.getVariable("macWrapperLinkLocation") != null ) ) ) &amp;&amp; ( context.getVariable("unixUserBinDir") != null )</visibilityScript>
836               </formComponent>
837             </formComponents>
838           </screen>
839         </screens>
840       </application>
841       <application id="uninstaller" beanClass="com.install4j.runtime.beans.applications.UninstallerApplication" styleId="35">
842         <serializedBean>
843           <property name="customMacosExecutableName" type="string">${i18n:UninstallerMenuEntry(${compiler:sys.fullName})}</property>
844           <property name="useCustomMacosExecutableName" type="boolean" value="true" />
845         </serializedBean>
846         <styleOverrides>
847           <styleOverride name="Customize banner image" enabled="true">
848             <group id="147" beanClass="com.install4j.runtime.beans.groups.VerticalFormComponentGroup" useExternalParametrization="true" externalParametrizationName="Customize banner image" externalParametrizationMode="include">
849               <serializedBean>
850                 <property name="backgroundColor">
851                   <object class="com.install4j.runtime.beans.LightOrDarkColor">
852                     <object class="java.awt.Color">
853                       <int>255</int>
854                       <int>255</int>
855                       <int>255</int>
856                       <int>255</int>
857                     </object>
858                     <object class="java.awt.Color">
859                       <int>49</int>
860                       <int>52</int>
861                       <int>53</int>
862                       <int>255</int>
863                     </object>
864                   </object>
865                 </property>
866                 <property name="borderSides">
867                   <object class="com.install4j.runtime.beans.formcomponents.BorderSides">
868                     <property name="bottom" type="boolean" value="true" />
869                   </object>
870                 </property>
871                 <property name="imageEdgeBackgroundColor">
872                   <object class="java.awt.Color">
873                     <int>192</int>
874                     <int>192</int>
875                     <int>192</int>
876                     <int>255</int>
877                   </object>
878                 </property>
879                 <property name="imageEdgeBorder" type="boolean" value="true" />
880                 <property name="imageFile">
881                   <object class="com.install4j.api.beans.ExternalFile">
882                     <string>${compiler:JALVIEW_DIR}/${compiler:BACKGROUND}</string>
883                   </object>
884                 </property>
885                 <property name="insets">
886                   <object class="java.awt.Insets">
887                     <int>5</int>
888                     <int>10</int>
889                     <int>10</int>
890                     <int>10</int>
891                   </object>
892                 </property>
893               </serializedBean>
894               <externalParametrizationPropertyNames>
895                 <propertyName>imageAnchor</propertyName>
896                 <propertyName>imageEdgeBackgroundColor</propertyName>
897                 <propertyName>imageFile</propertyName>
898               </externalParametrizationPropertyNames>
899             </group>
900           </styleOverride>
901         </styleOverrides>
902         <startup>
903           <screen id="23" beanClass="com.install4j.runtime.beans.screens.StartupScreen" rollbackBarrierExitCode="0">
904             <actions>
905               <action id="33" beanClass="com.install4j.runtime.beans.actions.misc.LoadResponseFileAction" rollbackBarrierExitCode="0" />
906               <action id="34" beanClass="com.install4j.runtime.beans.actions.misc.RequireInstallerPrivilegesAction" actionElevationType="none" rollbackBarrierExitCode="0" />
907             </actions>
908           </screen>
909         </startup>
910         <screens>
911           <screen id="24" beanClass="com.install4j.runtime.beans.screens.UninstallWelcomeScreen" rollbackBarrierExitCode="0">
912             <formComponents>
913               <formComponent id="25" beanClass="com.install4j.runtime.beans.formcomponents.MultilineLabelComponent" insetBottom="10">
914                 <serializedBean>
915                   <property name="labelText" type="string">${form:welcomeMessage}</property>
916                 </serializedBean>
917                 <visibilityScript>!context.isConsole()</visibilityScript>
918               </formComponent>
919               <formComponent id="26" beanClass="com.install4j.runtime.beans.formcomponents.ConsoleHandlerFormComponent">
920                 <serializedBean>
921                   <property name="consoleScript">
922                     <object class="com.install4j.api.beans.ScriptProperty">
923                       <property name="value" type="string">String message = context.getMessage("ConfirmUninstall", context.getApplicationName());
924 return console.askYesNo(message, true);
925 </property>
926                     </object>
927                   </property>
928                 </serializedBean>
929               </formComponent>
930             </formComponents>
931           </screen>
932           <screen id="27" beanClass="com.install4j.runtime.beans.screens.UninstallationScreen" rollbackBarrierExitCode="0">
933             <actions>
934               <action id="659" beanClass="com.install4j.runtime.beans.actions.control.SetProgressAction" actionElevationType="none" rollbackBarrierExitCode="0">
935                 <serializedBean>
936                   <property name="progressChangeType" type="enum" class="com.install4j.runtime.beans.actions.control.ProgressChangeType" value="SET_INDETERMINATE" />
937                 </serializedBean>
938               </action>
939               <action id="29" beanClass="com.install4j.runtime.beans.actions.UninstallFilesAction" rollbackBarrierExitCode="0" />
940               <action id="660" beanClass="com.install4j.runtime.beans.actions.control.SetProgressAction" enabled="false" actionElevationType="none" rollbackBarrierExitCode="0">
941                 <serializedBean>
942                   <property name="percentValue" type="int" value="95" />
943                 </serializedBean>
944               </action>
945               <action id="1525" beanClass="com.install4j.runtime.beans.actions.files.DeleteFileAction" rollbackBarrierExitCode="0">
946                 <serializedBean>
947                   <property name="files" type="array" class="java.io.File" length="40">
948                     <element index="0">
949                       <object class="java.io.File">
950                         <string>jre</string>
951                       </object>
952                     </element>
953                     <element index="1">
954                       <object class="java.io.File">
955                         <string>jre.jar</string>
956                       </object>
957                     </element>
958                     <element index="2">
959                       <object class="java.io.File">
960                         <string>.install4j</string>
961                       </object>
962                     </element>
963                     <element index="3">
964                       <object class="java.io.File">
965                         <string>getdown-launcher.jar</string>
966                       </object>
967                     </element>
968                     <element index="4">
969                       <object class="java.io.File">
970                         <string>getdown-launcher-old.jar</string>
971                       </object>
972                     </element>
973                     <element index="5">
974                       <object class="java.io.File">
975                         <string>getdown-launcher-new.jar</string>
976                       </object>
977                     </element>
978                     <element index="6">
979                       <object class="java.io.File">
980                         <string>gettingdown.lock</string>
981                       </object>
982                     </element>
983                     <element index="7">
984                       <object class="java.io.File">
985                         <string>jre.zip</string>
986                       </object>
987                     </element>
988                     <element index="8">
989                       <object class="java.io.File">
990                         <string>digest.txt</string>
991                       </object>
992                     </element>
993                     <element index="9">
994                       <object class="java.io.File">
995                         <string>digest2.txt</string>
996                       </object>
997                     </element>
998                     <element index="10">
999                       <object class="java.io.File">
1000                         <string>getdown-launcher.jarv</string>
1001                       </object>
1002                     </element>
1003                     <element index="11">
1004                       <object class="java.io.File">
1005                         <string>getdown-launcher-new.jarv</string>
1006                       </object>
1007                     </element>
1008                     <element index="12">
1009                       <object class="java.io.File">
1010                         <string>launcher.log</string>
1011                       </object>
1012                     </element>
1013                     <element index="13">
1014                       <object class="java.io.File">
1015                         <string>proxy.txt</string>
1016                       </object>
1017                     </element>
1018                     <element index="14">
1019                       <object class="java.io.File">
1020                         <string>build_properties</string>
1021                       </object>
1022                     </element>
1023                     <element index="15">
1024                       <object class="java.io.File">
1025                         <string>channel_launch*.jvl</string>
1026                       </object>
1027                     </element>
1028                     <element index="16">
1029                       <object class="java.io.File">
1030                         <string>jalview*.jvl</string>
1031                       </object>
1032                     </element>
1033                     <element index="17">
1034                       <object class="java.io.File">
1035                         <string>*.jarv</string>
1036                       </object>
1037                     </element>
1038                     <element index="18">
1039                       <object class="java.io.File">
1040                         <string>*.log</string>
1041                       </object>
1042                     </element>
1043                     <element index="19">
1044                       <object class="java.io.File">
1045                         <string>*.txt</string>
1046                       </object>
1047                     </element>
1048                     <element index="20">
1049                       <object class="java.io.File">
1050                         <string>*_new</string>
1051                       </object>
1052                     </element>
1053                     <element index="21">
1054                       <object class="java.io.File">
1055                         <string>hs_err_*.*</string>
1056                       </object>
1057                     </element>
1058                     <element index="22">
1059                       <object class="java.io.File">
1060                         <string>${compiler:GETDOWN_DIST_DIR}</string>
1061                       </object>
1062                     </element>
1063                     <element index="23">
1064                       <object class="java.io.File">
1065                         <string>${compiler:GETDOWN_ALT_DIR}</string>
1066                       </object>
1067                     </element>
1068                     <element index="24">
1069                       <object class="java.io.File">
1070                         <string>${compiler:GETDOWN_RESOURCE_DIR}</string>
1071                       </object>
1072                     </element>
1073                     <element index="25">
1074                       <object class="java.io.File">
1075                         <string>META-INF</string>
1076                       </object>
1077                     </element>
1078                     <element index="26">
1079                       <object class="java.io.File">
1080                         <string>install</string>
1081                       </object>
1082                     </element>
1083                     <element index="27">
1084                       <object class="java.io.File">
1085                         <string>resource</string>
1086                       </object>
1087                     </element>
1088                     <element index="28">
1089                       <object class="java.io.File">
1090                         <string>dist</string>
1091                       </object>
1092                     </element>
1093                     <element index="29">
1094                       <object class="java.io.File">
1095                         <string>release</string>
1096                       </object>
1097                     </element>
1098                     <element index="30">
1099                       <object class="java.io.File">
1100                         <string>alt</string>
1101                       </object>
1102                     </element>
1103                     <element index="31">
1104                       <object class="java.io.File">
1105                         <string>dev</string>
1106                       </object>
1107                     </element>
1108                     <element index="32">
1109                       <object class="java.io.File">
1110                         <string>build</string>
1111                       </object>
1112                     </element>
1113                     <element index="33">
1114                       <object class="java.io.File">
1115                         <string>alt_*</string>
1116                       </object>
1117                     </element>
1118                     <element index="34">
1119                       <object class="java.io.File">
1120                         <string>dev_*</string>
1121                       </object>
1122                     </element>
1123                     <element index="35">
1124                       <object class="java.io.File">
1125                         <string>build_*</string>
1126                       </object>
1127                     </element>
1128                     <element index="36">
1129                       <object class="java.io.File">
1130                         <string>${compiler:WRAPPER_SCRIPT_BIN_DIR}</string>
1131                       </object>
1132                     </element>
1133                     <element index="37">
1134                       <object class="java.io.File">
1135                         <string>bin</string>
1136                       </object>
1137                     </element>
1138                     <element index="38">
1139                       <object class="java.io.File">
1140                         <string>channel.props</string>
1141                       </object>
1142                     </element>
1143                     <element index="39">
1144                       <object class="java.io.File">
1145                         <string>channel.propsv</string>
1146                       </object>
1147                     </element>
1148                   </property>
1149                   <property name="recursive" type="boolean" value="true" />
1150                 </serializedBean>
1151               </action>
1152               <action id="1791" beanClass="com.install4j.runtime.beans.actions.control.SetProgressAction" actionElevationType="none" rollbackBarrierExitCode="0">
1153                 <serializedBean>
1154                   <property name="percentValue" type="int" value="100" />
1155                 </serializedBean>
1156               </action>
1157             </actions>
1158             <formComponents>
1159               <formComponent id="28" beanClass="com.install4j.runtime.beans.formcomponents.ProgressComponent">
1160                 <serializedBean>
1161                   <property name="initialStatusMessage" type="string">${i18n:UninstallerPreparing}</property>
1162                 </serializedBean>
1163               </formComponent>
1164             </formComponents>
1165           </screen>
1166           <screen id="32" beanClass="com.install4j.runtime.beans.screens.UninstallFailureScreen" rollbackBarrierExitCode="0" finishScreen="true" />
1167           <screen id="30" beanClass="com.install4j.runtime.beans.screens.UninstallSuccessScreen" styleId="41" rollbackBarrierExitCode="0" finishScreen="true">
1168             <formComponents>
1169               <formComponent id="31" beanClass="com.install4j.runtime.beans.formcomponents.MultilineLabelComponent" insetBottom="10">
1170                 <serializedBean>
1171                   <property name="labelText" type="string">${form:successMessage}</property>
1172                 </serializedBean>
1173               </formComponent>
1174             </formComponents>
1175           </screen>
1176         </screens>
1177       </application>
1178       <application name="MacOS Setup" id="2746" beanClass="com.install4j.runtime.beans.applications.CustomApplication" fileset="734" macEntitlementsFile="${compiler:JALVIEW_DIR}/utils/osx_signing/entitlements.txt">
1179         <serializedBean>
1180           <property name="executableDirectory">
1181             <object class="java.io.File">
1182               <string>.</string>
1183             </object>
1184           </property>
1185           <property name="executableName" type="string">${compiler:WRAPPER_LINK}_setup</property>
1186           <property name="windowTitle" type="string">${compiler:sys.fullName}</property>
1187         </serializedBean>
1188         <startup>
1189           <screen id="2747" beanClass="com.install4j.runtime.beans.screens.StartupScreen" rollbackBarrierExitCode="0">
1190             <actions>
1191               <link id="2749" targetId="22" />
1192               <link id="2750" targetId="2738" />
1193               <link id="2751" targetId="2745" />
1194             </actions>
1195           </screen>
1196         </startup>
1197         <screens>
1198           <screen id="2772" beanClass="com.install4j.runtime.beans.screens.FormScreen" rollbackBarrierExitCode="0" backButton="hidden" finishScreen="true">
1199             <serializedBean>
1200               <property name="title" type="string">Running ${i18n:SetupAppTitle}</property>
1201             </serializedBean>
1202             <actions>
1203               <link id="2778" targetId="576" />
1204               <link id="2779" targetId="2743" />
1205             </actions>
1206             <formComponents>
1207               <formComponent id="2773" beanClass="com.install4j.runtime.beans.formcomponents.MultilineLabelComponent" insetBottom="10">
1208                 <serializedBean>
1209                   <property name="labelText" type="string">${i18n:FinishedLabel(${compiler:JALVIEW_APPLICATION_NAME})}</property>
1210                 </serializedBean>
1211               </formComponent>
1212               <formComponent name="Add an executable to the dock" id="2775" beanClass="com.install4j.runtime.beans.formcomponents.CheckboxComponent">
1213                 <serializedBean>
1214                   <property name="checkboxText" type="string">${i18n:AddToDock}</property>
1215                   <property name="initiallySelected" type="boolean" value="true" />
1216                   <property name="variableName" type="string">addToDockAction</property>
1217                 </serializedBean>
1218                 <visibilityScript>Util.isMacOS()</visibilityScript>
1219               </formComponent>
1220               <formComponent name="Make a symbolic link to jalview.sh bash script in the user's local bin (Linux or Unix)" id="2777" beanClass="com.install4j.runtime.beans.formcomponents.CheckboxComponent">
1221                 <serializedBean>
1222                   <property name="checkboxText" type="string">Make a ${compiler:WRAPPER_LINK} symbolic link in ${installer:unixUserBinDir}</property>
1223                   <property name="initiallySelected" type="boolean" value="true" />
1224                   <property name="variableName" type="string">makeSymbolicLinkAction</property>
1225                 </serializedBean>
1226                 <visibilityScript>( Util.isLinux() || Util.isUnixInstaller() || ( Util.isMacOS() &amp;&amp; ( context.getVariable("macWrapperLinkLocation") != null ) ) ) &amp;&amp; ( context.getVariable("unixUserBinDir") != null )</visibilityScript>
1227               </formComponent>
1228               <formComponent id="2780" beanClass="com.install4j.runtime.beans.formcomponents.MultilineLabelComponent">
1229                 <serializedBean>
1230                   <property name="labelText" type="string">
1231 ${i18n:ClickFinish}
1232
1233 ${compiler:JALVIEW_APPLICATION_NAME} will now launch.</property>
1234                 </serializedBean>
1235               </formComponent>
1236             </formComponents>
1237           </screen>
1238         </screens>
1239       </application>
1240     </applications>
1241     <styles defaultStyleId="35">
1242       <style name="Standard" id="35" beanClass="com.install4j.runtime.beans.styles.FormStyle">
1243         <formComponents>
1244           <formComponent name="Header" id="36" beanClass="com.install4j.runtime.beans.styles.NestedStyleComponent" insetTop="0" insetBottom="0">
1245             <serializedBean>
1246               <property name="styleId" type="string">48</property>
1247             </serializedBean>
1248           </formComponent>
1249           <group name="Main" id="37" beanClass="com.install4j.runtime.beans.groups.VerticalFormComponentGroup">
1250             <serializedBean>
1251               <property name="imageEdgeAxisType" type="enum" class="com.install4j.runtime.beans.formcomponents.AxisType" value="HORIZONTAL" />
1252               <property name="imageEdgeBackgroundColor">
1253                 <object class="java.awt.Color">
1254                   <int>255</int>
1255                   <int>255</int>
1256                   <int>255</int>
1257                   <int>255</int>
1258                 </object>
1259               </property>
1260               <property name="imageFile">
1261                 <object class="com.install4j.api.beans.ExternalFile">
1262                   <string>${compiler:JALVIEW_DIR}/${compiler:BACKGROUND}</string>
1263                 </object>
1264               </property>
1265               <property name="imageOverlap" type="boolean" value="true" />
1266             </serializedBean>
1267             <beans>
1268               <formComponent id="38" beanClass="com.install4j.runtime.beans.styles.ContentComponent" insetTop="10" insetLeft="20" insetBottom="10" insetRight="20" />
1269               <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">
1270                 <serializedBean>
1271                   <property name="enabledTitleText" type="boolean" value="false" />
1272                 </serializedBean>
1273                 <externalParametrizationPropertyNames>
1274                   <propertyName>labelText</propertyName>
1275                 </externalParametrizationPropertyNames>
1276               </formComponent>
1277               <formComponent name="Footer" id="40" beanClass="com.install4j.runtime.beans.styles.NestedStyleComponent" insetTop="0" insetBottom="0">
1278                 <serializedBean>
1279                   <property name="styleId" type="string">52</property>
1280                 </serializedBean>
1281               </formComponent>
1282             </beans>
1283           </group>
1284         </formComponents>
1285       </style>
1286       <style name="Banner" id="41" beanClass="com.install4j.runtime.beans.styles.FormStyle">
1287         <formComponents>
1288           <group id="42" beanClass="com.install4j.runtime.beans.groups.VerticalFormComponentGroup" useExternalParametrization="true" externalParametrizationName="Customize banner image" externalParametrizationMode="include">
1289             <serializedBean>
1290               <property name="backgroundColor">
1291                 <object class="com.install4j.runtime.beans.LightOrDarkColor">
1292                   <object class="java.awt.Color">
1293                     <int>255</int>
1294                     <int>255</int>
1295                     <int>255</int>
1296                     <int>255</int>
1297                   </object>
1298                   <object class="java.awt.Color">
1299                     <int>49</int>
1300                     <int>52</int>
1301                     <int>53</int>
1302                     <int>255</int>
1303                   </object>
1304                 </object>
1305               </property>
1306               <property name="borderSides">
1307                 <object class="com.install4j.runtime.beans.formcomponents.BorderSides">
1308                   <property name="bottom" type="boolean" value="true" />
1309                 </object>
1310               </property>
1311               <property name="imageEdgeBackgroundColor">
1312                 <object class="com.install4j.runtime.beans.LightOrDarkColor">
1313                   <object class="java.awt.Color">
1314                     <int>25</int>
1315                     <int>143</int>
1316                     <int>220</int>
1317                     <int>255</int>
1318                   </object>
1319                   <object class="java.awt.Color">
1320                     <int>0</int>
1321                     <int>74</int>
1322                     <int>151</int>
1323                     <int>255</int>
1324                   </object>
1325                 </object>
1326               </property>
1327               <property name="imageEdgeBorder" type="boolean" value="true" />
1328               <property name="imageFile">
1329                 <object class="com.install4j.api.beans.ExternalFile">
1330                   <string>${compiler:sys.install4jHome}/resource/styles/wizard.png</string>
1331                 </object>
1332               </property>
1333               <property name="insets">
1334                 <object class="java.awt.Insets">
1335                   <int>5</int>
1336                   <int>10</int>
1337                   <int>10</int>
1338                   <int>10</int>
1339                 </object>
1340               </property>
1341             </serializedBean>
1342             <beans>
1343               <formComponent id="43" beanClass="com.install4j.runtime.beans.styles.ScreenTitleComponent" insetTop="0">
1344                 <serializedBean>
1345                   <property name="labelFontSizePercent" type="int" value="130" />
1346                   <property name="labelFontStyle" type="enum" class="com.install4j.runtime.beans.formcomponents.FontStyle" value="BOLD" />
1347                   <property name="labelFontType" type="enum" class="com.install4j.runtime.beans.formcomponents.FontType" value="DERIVED" />
1348                 </serializedBean>
1349               </formComponent>
1350               <formComponent id="44" beanClass="com.install4j.runtime.beans.formcomponents.SeparatorComponent" />
1351               <formComponent id="45" beanClass="com.install4j.runtime.beans.styles.ContentComponent" insetTop="10" insetBottom="0" />
1352             </beans>
1353             <externalParametrizationPropertyNames>
1354               <propertyName>imageAnchor</propertyName>
1355               <propertyName>imageEdgeBackgroundColor</propertyName>
1356               <propertyName>imageFile</propertyName>
1357             </externalParametrizationPropertyNames>
1358           </group>
1359           <formComponent id="46" beanClass="com.install4j.runtime.beans.styles.NestedStyleComponent" insetBottom="0">
1360             <serializedBean>
1361               <property name="styleId" type="string">52</property>
1362             </serializedBean>
1363           </formComponent>
1364         </formComponents>
1365       </style>
1366       <group name="Style components" id="47" beanClass="com.install4j.runtime.beans.groups.StyleGroup">
1367         <beans>
1368           <style name="Standard header" id="48" beanClass="com.install4j.runtime.beans.styles.FormStyle">
1369             <serializedBean>
1370               <property name="fillVertical" type="boolean" value="false" />
1371               <property name="standalone" type="boolean" value="false" />
1372               <property name="verticalAnchor" type="enum" class="com.install4j.api.beans.Anchor" value="NORTH" />
1373             </serializedBean>
1374             <formComponents>
1375               <group id="49" beanClass="com.install4j.runtime.beans.groups.VerticalFormComponentGroup" useExternalParametrization="true" externalParametrizationName="Customize title bar" externalParametrizationMode="include">
1376                 <serializedBean>
1377                   <property name="backgroundColor">
1378                     <object class="com.install4j.runtime.beans.LightOrDarkColor">
1379                       <object class="java.awt.Color">
1380                         <int>255</int>
1381                         <int>255</int>
1382                         <int>255</int>
1383                         <int>255</int>
1384                       </object>
1385                       <object class="java.awt.Color">
1386                         <int>49</int>
1387                         <int>52</int>
1388                         <int>53</int>
1389                         <int>255</int>
1390                       </object>
1391                     </object>
1392                   </property>
1393                   <property name="borderSides">
1394                     <object class="com.install4j.runtime.beans.formcomponents.BorderSides">
1395                       <property name="bottom" type="boolean" value="true" />
1396                     </object>
1397                   </property>
1398                   <property name="imageAnchor" type="enum" class="com.install4j.api.beans.Anchor" value="NORTHEAST" />
1399                   <property name="imageEdgeBorderWidth" type="int" value="2" />
1400                   <property name="imageFile">
1401                     <object class="com.install4j.api.beans.ExternalFile">
1402                       <string>icon:${installer:sys.installerApplicationMode}_header.png</string>
1403                     </object>
1404                   </property>
1405                   <property name="imageInsets">
1406                     <object class="java.awt.Insets">
1407                       <int>0</int>
1408                       <int>5</int>
1409                       <int>1</int>
1410                       <int>1</int>
1411                     </object>
1412                   </property>
1413                   <property name="insets">
1414                     <object class="java.awt.Insets">
1415                       <int>0</int>
1416                       <int>20</int>
1417                       <int>0</int>
1418                       <int>10</int>
1419                     </object>
1420                   </property>
1421                 </serializedBean>
1422                 <beans>
1423                   <formComponent name="Title" id="50" beanClass="com.install4j.runtime.beans.styles.ScreenTitleComponent">
1424                     <serializedBean>
1425                       <property name="labelFontStyle" type="enum" class="com.install4j.runtime.beans.formcomponents.FontStyle" value="BOLD" />
1426                       <property name="labelFontType" type="enum" class="com.install4j.runtime.beans.formcomponents.FontType" value="DERIVED" />
1427                     </serializedBean>
1428                   </formComponent>
1429                   <formComponent name="Subtitle" id="51" beanClass="com.install4j.runtime.beans.styles.ScreenTitleComponent" insetLeft="8">
1430                     <serializedBean>
1431                       <property name="titleType" type="enum" class="com.install4j.runtime.beans.styles.TitleType" value="SUB_TITLE" />
1432                     </serializedBean>
1433                   </formComponent>
1434                 </beans>
1435                 <externalParametrizationPropertyNames>
1436                   <propertyName>backgroundColor</propertyName>
1437                   <propertyName>foregroundColor</propertyName>
1438                   <propertyName>imageAnchor</propertyName>
1439                   <propertyName>imageFile</propertyName>
1440                   <propertyName>imageOverlap</propertyName>
1441                 </externalParametrizationPropertyNames>
1442               </group>
1443             </formComponents>
1444           </style>
1445           <style name="Standard footer" id="52" beanClass="com.install4j.runtime.beans.styles.FormStyle">
1446             <serializedBean>
1447               <property name="fillVertical" type="boolean" value="false" />
1448               <property name="standalone" type="boolean" value="false" />
1449               <property name="verticalAnchor" type="enum" class="com.install4j.api.beans.Anchor" value="SOUTH" />
1450             </serializedBean>
1451             <formComponents>
1452               <group id="53" beanClass="com.install4j.runtime.beans.groups.HorizontalFormComponentGroup">
1453                 <serializedBean>
1454                   <property name="alignFirstLabel" type="boolean" value="false" />
1455                   <property name="insets">
1456                     <object class="java.awt.Insets">
1457                       <int>3</int>
1458                       <int>5</int>
1459                       <int>8</int>
1460                       <int>5</int>
1461                     </object>
1462                   </property>
1463                 </serializedBean>
1464                 <beans>
1465                   <formComponent id="54" beanClass="com.install4j.runtime.beans.formcomponents.SpringComponent" />
1466                   <formComponent name="Back button" id="55" beanClass="com.install4j.runtime.beans.styles.StandardControlButtonComponent">
1467                     <serializedBean>
1468                       <property name="buttonText" type="string">&lt; ${i18n:ButtonBack}</property>
1469                       <property name="controlButtonType" type="enum" class="com.install4j.api.context.ControlButtonType" value="PREVIOUS" />
1470                     </serializedBean>
1471                   </formComponent>
1472                   <formComponent name="Next button" id="56" beanClass="com.install4j.runtime.beans.styles.StandardControlButtonComponent">
1473                     <serializedBean>
1474                       <property name="buttonText" type="string">${i18n:ButtonNext} &gt;</property>
1475                       <property name="controlButtonType" type="enum" class="com.install4j.api.context.ControlButtonType" value="NEXT" />
1476                     </serializedBean>
1477                   </formComponent>
1478                   <formComponent name="Cancel button" id="57" beanClass="com.install4j.runtime.beans.styles.StandardControlButtonComponent" insetLeft="5">
1479                     <serializedBean>
1480                       <property name="buttonText" type="string">${i18n:ButtonCancel}</property>
1481                       <property name="controlButtonType" type="enum" class="com.install4j.api.context.ControlButtonType" value="CANCEL" />
1482                     </serializedBean>
1483                   </formComponent>
1484                 </beans>
1485               </group>
1486             </formComponents>
1487           </style>
1488         </beans>
1489       </group>
1490     </styles>
1491   </installerGui>
1492   <mediaSets>
1493     <windows name="Windows x64 EXE Installer" id="743" customizedId="WINDOWS-X64-EXE" 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" architecture="64">
1494       <excludedBeans>
1495         <bean refId="2746" />
1496       </excludedBeans>
1497       <exclude>
1498         <entry defaultFileset="true" />
1499         <entry filesetId="2801" />
1500         <entry filesetId="2803" />
1501       </exclude>
1502       <jreBundle jreBundleSource="preCreated" includedJre="${compiler:WINDOWS_X64_JAVA_VM_TGZ}" manualJreEntry="true" />
1503     </windows>
1504     <macosArchive name="macOS (Intel) Disk Image" id="878" customizedId="MACOS-X64-DMG" mediaFileName="${compiler:MACOSARCHIVE_X64_DMG_FILENAME}" volumeName="${compiler:MACOSARCHIVE_X64_NAME}" launcherId="737" setupAppId="2746">
1505       <exclude>
1506         <entry defaultFileset="true" />
1507         <entry filesetId="2803" />
1508       </exclude>
1509       <jreBundle jreBundleSource="none" includedJre="${compiler:MACOS_X64_JAVA_VM_TGZ}" manualJreEntry="true" />
1510       <topLevelFiles>
1511         <symlink name="&quot; &quot;" target="/Applications" />
1512         <file name=".background/${compiler:MACOS_DMG_BG_FILENAME}" file="${compiler:JALVIEW_DIR}/${compiler:MACOS_DMG_BG_IMAGE}" />
1513         <file name=".DS_Store" file="${compiler:JALVIEW_DIR}/${compiler:MACOS_X64_DMG_DS_STORE}" />
1514         <file name="${compiler:JALVIEW_APPLICATION_NAME}.app/Contents/Resources/Jalview-File.icns" file="${compiler:JALVIEW_DIR}/${compiler:INSTALL4J_UTILS_DIR}/Jalview-File.icns" />
1515         <file name="${compiler:JALVIEW_APPLICATION_NAME}.app/Contents/Resources/jvl_file.icns" file="${compiler:JALVIEW_DIR}/${compiler:INSTALL4J_UTILS_DIR}/jvl_file.icns" />
1516         <symlink name="${compiler:JALVIEW_APPLICATION_NAME}.app/Contents/MacOS/${compiler:WRAPPER_LINK}" target="../Resources/app/${compiler:WRAPPER_SCRIPT_BIN_DIR}/${compiler:BASH_WRAPPER_SCRIPT}" />
1517         <symlink name="${compiler:JALVIEW_APPLICATION_NAME}.app/Contents/Resources/app/jre/Contents/Home/bin/${compiler:JALVIEW_APPLICATION_NAME}" target="java" />
1518         <symlink name="${compiler:JALVIEW_APPLICATION_NAME}.app/Contents/Resources/app/jre/Contents/Home/bin/${compiler:JALVIEW_NAME}" target="java" />
1519       </topLevelFiles>
1520     </macosArchive>
1521     <macosArchive name="macOS (Apple Silicon) Disk Image" id="2796" customizedId="MACOS-AARCH64-DMG" mediaFileName="${compiler:MACOSARCHIVE_AARCH64_DMG_FILENAME}" volumeName="${compiler:MACOSARCHIVE_AARCH64_NAME}" architecture="aarch64" launcherId="737" setupAppId="2746">
1522       <exclude>
1523         <entry defaultFileset="true" />
1524         <entry filesetId="2801" />
1525       </exclude>
1526       <jreBundle jreBundleSource="none" />
1527       <topLevelFiles>
1528         <symlink name="&quot; &quot;" target="/Applications" />
1529         <file name=".background/${compiler:MACOS_DMG_BG_FILENAME}" file="${compiler:JALVIEW_DIR}/${compiler:MACOS_DMG_BG_IMAGE}" />
1530         <file name=".DS_Store" file="${compiler:JALVIEW_DIR}/${compiler:MACOS_AARCH64_DMG_DS_STORE}" />
1531         <file name="${compiler:JALVIEW_APPLICATION_NAME}.app/Contents/Resources/Jalview-File.icns" file="${compiler:JALVIEW_DIR}/${compiler:INSTALL4J_UTILS_DIR}/Jalview-File.icns" />
1532         <file name="${compiler:JALVIEW_APPLICATION_NAME}.app/Contents/Resources/jvl_file.icns" file="${compiler:JALVIEW_DIR}/${compiler:INSTALL4J_UTILS_DIR}/jvl_file.icns" />
1533         <symlink name="${compiler:JALVIEW_APPLICATION_NAME}.app/Contents/MacOS/${compiler:WRAPPER_LINK}" target="../Resources/app/${compiler:WRAPPER_SCRIPT_BIN_DIR}/${compiler:BASH_WRAPPER_SCRIPT}" />
1534         <symlink name="${compiler:JALVIEW_APPLICATION_NAME}.app/Contents/Resources/app/jre/Contents/Home/bin/${compiler:JALVIEW_APPLICATION_NAME}" target="java" />
1535         <symlink name="${compiler:JALVIEW_APPLICATION_NAME}.app/Contents/Resources/app/jre/Contents/Home/bin/${compiler:JALVIEW_NAME}" target="java" />
1536       </topLevelFiles>
1537     </macosArchive>
1538     <unixInstaller name="Linux x64 Shell Installer" id="1595" customizedId="LINUX-X64-SH" mediaFileName="${compiler:UNIX_APPLICATION_FOLDER}-${compiler:JALVIEW_VERSION}-linux-x64-java_${compiler:JAVA_INTEGER_VERSION}" installDir="${compiler:UNIX_APPLICATION_FOLDER}" customInstallBaseDir="~/opt/">
1539       <excludedBeans>
1540         <bean refId="2746" />
1541       </excludedBeans>
1542       <exclude>
1543         <entry defaultFileset="true" />
1544         <entry filesetId="2801" />
1545         <entry filesetId="2803" />
1546       </exclude>
1547       <variables>
1548         <variable name="variable" value="720" />
1549         <variable name="WIZARD_HEIGHT" value="540" />
1550       </variables>
1551       <jreBundle jreBundleSource="preCreated" includedJre="${compiler:LINUX_X64_JAVA_VM_TGZ}" manualJreEntry="true" />
1552     </unixInstaller>
1553     <unixInstaller name="Linux aarch64 Shell Installer" id="2782" customizedId="LINUX-AARCH64-SH" mediaFileName="${compiler:UNIX_APPLICATION_FOLDER}-${compiler:JALVIEW_VERSION}-linux-aarch64-java_${compiler:JAVA_INTEGER_VERSION}" installDir="${compiler:UNIX_APPLICATION_FOLDER}" customInstallBaseDir="~/opt/">
1554       <excludedBeans>
1555         <bean refId="2746" />
1556       </excludedBeans>
1557       <exclude>
1558         <entry defaultFileset="true" />
1559         <entry filesetId="2801" />
1560         <entry filesetId="2803" />
1561       </exclude>
1562       <variables>
1563         <variable name="variable" value="720" />
1564         <variable name="WIZARD_HEIGHT" value="540" />
1565       </variables>
1566       <jreBundle jreBundleSource="preCreated" includedJre="${compiler:LINUX_AARCH64_JAVA_VM_TGZ}" manualJreEntry="true" />
1567     </unixInstaller>
1568     <unixArchive name="Unix .tar.gz Archive" id="1596" customizedId="UNIX--TGZ" mediaFileName="${compiler:UNIX_APPLICATION_FOLDER}-${compiler:JALVIEW_VERSION}-${compiler:sys.platform}-java_${compiler:JAVA_INTEGER_VERSION}" installDir="${compiler:UNIX_APPLICATION_FOLDER}">
1569       <excludedBeans>
1570         <bean refId="2746" />
1571       </excludedBeans>
1572       <exclude>
1573         <entry defaultFileset="true" />
1574         <entry filesetId="2801" />
1575         <entry filesetId="2803" />
1576       </exclude>
1577       <jreBundle jreBundleSource="none" includedJre="${compiler:LINUX_X64_JAVA_VM_TGZ}" manualJreEntry="true" />
1578     </unixArchive>
1579     <unixInstaller name="Unix Shell Installer" id="2639" customizedId="UNIX--SH" mediaFileName="${compiler:UNIX_APPLICATION_FOLDER}-${compiler:JALVIEW_VERSION}-${compiler:sys.platform}-java_${compiler:JAVA_INTEGER_VERSION}" installDir="${compiler:UNIX_APPLICATION_FOLDER}" customInstallBaseDir="~/opt/">
1580       <excludedBeans>
1581         <bean refId="2746" />
1582       </excludedBeans>
1583       <exclude>
1584         <entry defaultFileset="true" />
1585         <entry filesetId="2801" />
1586         <entry filesetId="2803" />
1587       </exclude>
1588       <jreBundle jreBundleSource="none" includedJre="${compiler:LINUX_X64_JAVA_VM_TGZ}" manualJreEntry="true" />
1589     </unixInstaller>
1590   </mediaSets>
1591   <buildIds>
1592     <mediaSet refId="743" />
1593     <mediaSet refId="878" />
1594     <mediaSet refId="2796" />
1595     <mediaSet refId="1595" />
1596     <mediaSet refId="2782" />
1597     <mediaSet refId="1596" />
1598     <mediaSet refId="2639" />
1599   </buildIds>
1600 </install4j>