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