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