log.info("Not setting proxy");
}
- // add the getdowninstanceappbase property. getdownappdir is added by getdown.txt
+ // add the getdowninstanceappbase property.
args.add("-Dgetdowninstanceappbase=" + getAppbase().toString());
+ args.add("-Dinstaller.appdir=" + System.getProperty("installer.appdir"));
+ args.add("-Dgetdownappdir=" + getAppDir());
// add the marker indicating the app is running in getdown
args.add("-D" + Properties.GETDOWN + "=true");
}
File applicationAppDir = new File(applicationAppDirName);
File userAppDir = new File(userAppDirName);
+ try {
+ if (applicationAppDir.getCanonicalPath().equals(userAppDir.getCanonicalPath())) {
+ // the application appdir is the user appdir, better not touch it, it should just work!
+ log.info("Application appdir is same as user appdir, not doing anything", applicationAppDir);
+ return true;
+ }
+ } catch (IOException e) {
+ log.warning("Problem determining canonical paths of application and user appdirs", applicationAppDir, userAppDir);
+ return false;
+ }
if (!userAppDir.exists()) {
userAppDir.mkdirs();
}
log.warning("Problem opening application digest files", new File(applicationAppDir, Digest.digestFile(Digest.VERSION)));
return false;
}
- // copy getdown.txt, digest.txt and digest2.txt
- for (File from: new File[] {configFile, digest2.getFile(), digest.getFile()}) {
+ // copy getdown.txt, digest.txt and digest2.txt, getdown-launcher.jar
+ File getdownLauncher = new File(applicationAppDir, "getdown-launcher.jar");
+ for (File from: new File[] {configFile, digest2.getFile(), digest.getFile(), getdownLauncher}) {
try {
File to = new File(userAppDir, from.getName());
Files.copy(from.toPath(), to.toPath());
<variable name="WIZARD_HEIGHT" value="480" description="Default/initial width of installer wizard window. Linux media types adapt this.
NOT USED" />
<variable name="MACOSARCHIVE_X64_DMG_FILENAME" value="${compiler:APPLICATION_FOLDER}-${compiler:JALVIEW_VERSION}-${compiler:sys.platform}-x64-java_${compiler:JAVA_INTEGER_VERSION}" />
<variable name="MACOSARCHIVE_AARCH64_DMG_FILENAME" value="${compiler:APPLICATION_FOLDER}-${compiler:JALVIEW_VERSION}-${compiler:sys.platform}-aarch64-java_${compiler:JAVA_INTEGER_VERSION}" />
+ <variable name="INSTALLER_ICON" value="jalview_installer.png" />
+ <variable name="INSTALLER_MAC_ICON" value="jalview_installer.icns" />
+ <variable name="INSTALLER_WINDOWS_ICON" value="jalview_installer.ico" />
</variables>
<codeSigning macEnabled="true" macPkcs12File="${compiler:OSX_KEYSTORE}" macNotarize="true" appleId="${compiler:OSX_APPLEID}">
<macAdditionalBinaries>
<versionLine x="85" y="109" text="version ${compiler:sys.version}" />
</text>
</splashScreen>
- <java mainClass="com.threerings.getdown.launcher.GetdownApp" vmParameters="-Dinstaller_template_version=${compiler:INSTALLER_TEMPLATE_VERSION} -Dchannel.app_name="${compiler:JALVIEW_APPLICATION_NAME}" -Dinstaller_appdir="${launcher:sys.launcherDirectory}" -Dinstaller.application_folder="${compiler:APPLICATION_FOLDER}"" arguments=""${launcher:sys.launcherDirectory}" jalview">
+ <java mainClass="com.threerings.getdown.launcher.GetdownApp" vmParameters="-Dinstaller.template_version=${compiler:INSTALLER_TEMPLATE_VERSION} -Dchannel.app_name="${compiler:JALVIEW_APPLICATION_NAME}" -Dinstaller.appdir="${launcher:sys.launcherDirectory}" -Dinstaller.application_folder="${compiler:APPLICATION_FOLDER}"" arguments=""${launcher:sys.launcherDirectory}" jalview">
<classPath>
<archive location="getdown-launcher.jar" />
<archive location="${compiler:GETDOWN_INSTALL_DIR}/getdown-launcher.jar" failOnError="false" />
<urlHandler scheme="${compiler:EXTRA_SCHEME}" />
</macStaticAssociations>
</launcher>
- <launcher name="Jalview User Launcher" id="2823" 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}">
- <executable name="${compiler:USER_EXECUTABLE_NAME}" iconSet="true" iconFile="${compiler:JALVIEW_DIR}/${compiler:WINDOWS_ICONS_FILE}" redirectStdout="true" executableMode="gui" changeWorkingDirectory="false" singleInstance="true" checkConsoleParameter="true">
+ <launcher name="Jalview User Launcher" id="2823" menuName="${compiler:JALVIEW_APPLICATION_NAME}" icnsFile="${compiler:JALVIEW_DIR}/${compiler:MAC_ICONS_FILE}" customMacBundleIdentifier="true" macBundleIdentifier="${compiler:BUNDLE_ID}" fileset="734" addMacApplicationCategory="true" macApplicationCategory="public.app-category.education" useCustomMacosExecutableName="true" customMacosExecutableName="${compiler:JALVIEW_APPLICATION_NAME}">
+ <executable name="${compiler:USER_EXECUTABLE_NAME}" iconSet="true" iconFile="${compiler:JALVIEW_DIR}/${compiler:WINDOWS_ICONS_FILE}" redirectStdout="true" executableMode="gui" changeWorkingDirectory="false" singleInstance="true" executionLevel="highestAvailable" checkConsoleParameter="true">
<versionInfo include="true" fileDescription="${compiler:sys.fullName}" legalCopyright="${compiler:COPYRIGHT_MESSAGE}" internalName="${compiler:INTERNAL_ID}" productName="${compiler:sys.fullName}" />
</executable>
<splashScreen width="640" height="480" bitmapFile="${compiler:JALVIEW_DIR}/${compiler:BACKGROUND}" textOverlay="true">
<versionLine x="85" y="109" text="version ${compiler:sys.version}" />
</text>
</splashScreen>
- <java mainClass="com.threerings.getdown.launcher.GetdownApp" vmParameters="-Dusedefaultappdir=true -Dpopulatedefaultappdir=true -Dapplicationappdir="${launcher:sys.launcherDirectory}" -Dappid=jalview -Dinstaller_template_version=${compiler:INSTALLER_TEMPLATE_VERSION} -Dchannel.app_name="${compiler:JALVIEW_APPLICATION_NAME}" -Dinstaller_appdir="${launcher:sys.launcherDirectory}" -Dinstaller.application_folder="${compiler:APPLICATION_FOLDER}"">
+ <java mainClass="com.threerings.getdown.launcher.GetdownApp" vmParameters="-Dusedefaultappdir=true -Dpopulatedefaultappdir=true -Dappid=jalview -Dinstaller.template_version=${compiler:INSTALLER_TEMPLATE_VERSION} -Dinstaller.appdir="${launcher:sys.launcherDirectory}" -Dinstaller.application_folder="${compiler:APPLICATION_FOLDER}" -Dchannel.app_name="${compiler:JALVIEW_APPLICATION_NAME}"">
<classPath>
<archive location="getdown-launcher.jar" failOnError="false" />
<archive location="${compiler:GETDOWN_INSTALL_DIR}/getdown-launcher.jar" failOnError="false" />
</launchers>
<installerGui autoUpdateDescriptorUrl="https://www.jalview.org/install4j/updates.xml">
<applications>
- <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}">
+ <application id="installer" beanClass="com.install4j.runtime.beans.applications.InstallerApplication" styleId="35" customIcnsFile="${compiler:JALVIEW_DIR}/${compiler:INSTALLER_MAC_ICON}" customIcoFile="${compiler:JALVIEW_DIR}/${compiler:INSTALLER_WINDOWS_ICON}">
<serializedBean>
- <property name="frameHeight" type="int" value="480" />
- <property name="frameWidth" type="int" value="640" />
+ <property name="frameHeight" type="int" value="600" />
+ <property name="frameWidth" type="int" value="800" />
<property name="useCustomIcon" type="boolean" value="true" />
+ <property name="windowsConsoleExecutable" type="boolean" value="true" />
</serializedBean>
<styleOverrides>
<styleOverride name="Customize banner image" enabled="true">
</externalParametrizationPropertyNames>
</formComponent>
</styleOverride>
+ <styleOverride name="Customize title bar" enabled="true">
+ <group id="2831" beanClass="com.install4j.runtime.beans.groups.VerticalFormComponentGroup" useExternalParametrization="true" externalParametrizationName="Customize title bar" externalParametrizationMode="include">
+ <serializedBean>
+ <property name="backgroundColor">
+ <object class="com.install4j.runtime.beans.LightOrDarkColor">
+ <object class="java.awt.Color">
+ <int>255</int>
+ <int>255</int>
+ <int>255</int>
+ <int>255</int>
+ </object>
+ <object class="java.awt.Color">
+ <int>49</int>
+ <int>52</int>
+ <int>53</int>
+ <int>255</int>
+ </object>
+ </object>
+ </property>
+ <property name="borderSides">
+ <object class="com.install4j.runtime.beans.formcomponents.BorderSides">
+ <property name="bottom" type="boolean" value="true" />
+ </object>
+ </property>
+ <property name="imageAnchor" type="enum" class="com.install4j.api.beans.Anchor" value="NORTHEAST" />
+ <property name="imageEdgeBorderWidth" type="int" value="2" />
+ <property name="imageFile">
+ <object class="com.install4j.api.beans.ExternalFile">
+ <string>icon:${installer:sys.installerApplicationMode}_header.png</string>
+ </object>
+ </property>
+ <property name="imageInsets">
+ <object class="java.awt.Insets">
+ <int>0</int>
+ <int>5</int>
+ <int>1</int>
+ <int>1</int>
+ </object>
+ </property>
+ <property name="insets">
+ <object class="java.awt.Insets">
+ <int>0</int>
+ <int>20</int>
+ <int>0</int>
+ <int>10</int>
+ </object>
+ </property>
+ </serializedBean>
+ <externalParametrizationPropertyNames>
+ <propertyName>backgroundColor</propertyName>
+ <propertyName>foregroundColor</propertyName>
+ <propertyName>imageAnchor</propertyName>
+ <propertyName>imageFile</propertyName>
+ <propertyName>imageOverlap</propertyName>
+ </externalParametrizationPropertyNames>
+ </group>
+ </styleOverride>
</styleOverrides>
+ <infoPlist>${compiler:file("${compiler:INFO_PLIST_FILE_ASSOCIATIONS_FILE}")}</infoPlist>
<startup>
<screen id="1" beanClass="com.install4j.runtime.beans.screens.StartupScreen" rollbackBarrierExitCode="0">
<actions>
<action id="22" beanClass="com.install4j.runtime.beans.actions.misc.RequestPrivilegesAction" actionElevationType="none" rollbackBarrierExitCode="0">
<serializedBean>
+ <property name="failIfNotObtainedMac" type="boolean" value="false" />
+ <property name="failIfNotObtainedWin" type="boolean" value="false" />
+ <property name="linuxPrivilegeRequirement" type="enum" class="com.install4j.runtime.beans.actions.misc.PrivilegeRequirement" value="OBTAIN" />
<property name="obtainIfAdminWin" type="boolean" value="false" />
</serializedBean>
</action>
</serializedBean>
<condition>context.getBooleanVariable("addToDockAction")</condition>
</action>
- <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">
+ <action name="Linux/Unix user symlink" id="2733" beanClass="com.install4j.runtime.beans.actions.files.CreateSymlinkAction" rollbackBarrierExitCode="0" errorMessage="Could not make symlink to wrapper script">
<serializedBean>
<property name="file">
<object class="java.io.File">
</serializedBean>
<condition>context.getBooleanVariable("appendToPathAction")</condition>
</action>
- <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}">
+ <action name="Create Linux/Unix user 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}">
<serializedBean>
<property name="file">
<object class="java.io.File">
</object>
</property>
</serializedBean>
- <condition>context.getBooleanVariable("makeSymbolicLinkAction") && ( Util.isLinux() || Util.isUnixInstaller() ) && ( context.getVariable("unixUserBinDir") != null )</condition>
+ <condition>context.getBooleanVariable("makeUserSymbolicLinkAction") && ( Util.isLinux() || Util.isUnixInstaller() ) && ( context.getVariable("unixUserBinDir") != null )</condition>
</action>
<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}">
<serializedBean>
</object>
</property>
</serializedBean>
- <condition>context.getBooleanVariable("makeSymbolicLinkAction") && Util.isMacOS() && ( context.getVariable("unixUserBinDir") != null ) && ( context.getVariable("macWrapperLinkLocation") != null )</condition>
+ <condition>context.getBooleanVariable("makeUserSymbolicLinkAction") && Util.isMacOS() && ( context.getVariable("unixUserBinDir") != null ) && ( context.getVariable("macWrapperLinkLocation") != null )</condition>
</action>
<action name="Windows copy BAT file" id="2817" beanClass="com.install4j.runtime.beans.actions.files.CopyFileAction" rollbackBarrierExitCode="0">
<serializedBean>
<serializedBean>
<property name="checkboxText" type="string">Make a ${compiler:WRAPPER_LINK} symbolic link in ${installer:unixUserBinDir}</property>
<property name="initiallySelected" type="boolean" value="true" />
- <property name="variableName" type="string">makeSymbolicLinkAction</property>
+ <property name="variableName" type="string">makeUserSymbolicLinkAction</property>
</serializedBean>
<visibilityScript>( Util.isLinux() || Util.isUnixInstaller() || ( Util.isMacOS() && ( context.getVariable("macWrapperLinkLocation") != null ) ) ) && ( context.getVariable("unixUserBinDir") != null )</visibilityScript>
</formComponent>
<serializedBean>
<property name="checkboxText" type="string">Make a ${compiler:WRAPPER_LINK} symbolic link in ${installer:unixUserBinDir}</property>
<property name="initiallySelected" type="boolean" value="true" />
- <property name="variableName" type="string">makeSymbolicLinkAction</property>
+ <property name="variableName" type="string">makeUserSymbolicLinkAction</property>
</serializedBean>
- <visibilityScript>( Util.isLinux() || Util.isUnixInstaller() || ( Util.isMacOS() && ( context.getVariable("macWrapperLinkLocation") != null ) ) ) && ( context.getVariable("unixUserBinDir") != null )</visibilityScript>
+ <visibilityScript>
+
+( Util.isLinux()
+ || Util.isUnixInstaller()
+ || ( Util.isMacOS()
+ && context.getVariable("macWrapperLinkLocation") != null
+ )
+ )
+ && context.getVariable("unixUserBinDir") != null</visibilityScript>
</formComponent>
<formComponent id="2780" beanClass="com.install4j.runtime.beans.formcomponents.MultilineLabelComponent">
<serializedBean>
</styles>
</installerGui>
<mediaSets>
- <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">
+ <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" architecture="64">
<excludedLaunchers>
<launcher id="737" />
</excludedLaunchers>
<jreBundle jreBundleSource="preCreated" includedJre="${compiler:WINDOWS_X64_JAVA_VM_TGZ}" manualJreEntry="true" />
</windows>
<macosArchive name="macOS (Intel) Disk Image" id="878" customizedId="MACOS-X64-DMG" mediaFileName="${compiler:MACOSARCHIVE_X64_DMG_FILENAME}" volumeName="${compiler:MACOSARCHIVE_X64_NAME}" launcherId="2823" setupAppId="2746">
+ <excludedBeans>
+ <bean refId="2746" />
+ </excludedBeans>
<exclude>
<entry defaultFileset="true" />
<entry filesetId="2803" />
</topLevelFiles>
</macosArchive>
<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="2823" setupAppId="2746">
+ <excludedBeans>
+ <bean refId="2746" />
+ </excludedBeans>
<exclude>
<entry defaultFileset="true" />
<entry filesetId="2801" />