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