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