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