-1.8.3-1.2.13_FJVL
+1.8.3-1.2.14_FJVL
-1.8.3-1.2.13_JVL
+1.8.3-1.2.14_JVL
<parent>
<groupId>com.threerings.getdown</groupId>
<artifactId>getdown</artifactId>
- <version>1.8.3-1.2.13_FJVL</version>
+ <version>1.8.3-1.2.14_FJVL</version>
</parent>
<artifactId>getdown-ant</artifactId>
<parent>
<groupId>com.threerings.getdown</groupId>
<artifactId>getdown</artifactId>
- <version>1.8.3-1.2.13_FJVL</version>
+ <version>1.8.3-1.2.14_FJVL</version>
</parent>
<artifactId>getdown-core</artifactId>
public static final boolean isLinux () { return _isLinux; }
/**
+ * Check if a symlink (or file) points to a JVM
+ */
+ private static boolean checkJVMSymlink(String testBin)
+ {
+ File testBinFile = new File(testBin);
+ if (!testBinFile.exists())
+ {
+ return false;
+ }
+ File targetFile = null;
+ try
+ {
+ targetFile = testBinFile.getCanonicalFile();
+ } catch (IOException e)
+ {
+ return false;
+ }
+ if (targetFile != null && ("java".equals(targetFile.getName())
+ || "java.exe".equals(targetFile.getName())))
+ {
+ return true;
+ }
+ return false;
+ }
+
+ /**
* Checks whether a Java Virtual Machine can be located in the supplied path.
*/
protected static String checkJVMPath (String vmhome, boolean windebug)
{
String vmbase = vmhome + File.separator + "bin" + File.separator;
- String vmpath = vmbase + "java";
+ String appName = System.getProperty("channel.app_name", "Jalview");
+ String vmpath = vmbase + appName;
+ if (checkJVMSymlink(vmpath)) {
+ return vmpath;
+ }
+ vmpath = vmbase + "Jalview";
+ if (checkJVMSymlink(vmpath)) {
+ return vmpath;
+ }
+ vmpath = vmbase + "java";
if (new File(vmpath).exists()) {
return vmpath;
}
<parent>
<groupId>com.threerings.getdown</groupId>
<artifactId>getdown</artifactId>
- <version>1.8.3-1.2.13_FJVL</version>
+ <version>1.8.3-1.2.14_FJVL</version>
</parent>
<artifactId>getdown-launcher</artifactId>
if [ x$JVLVERSION != x ]; then
export VERSION=$JVLVERSION
else
- export VERSION=1.8.3-1.2.13_JVL
+ export VERSION=1.8.3-1.2.14_JVL
fi
if [ x${VERSION%_JVL} = x$VERSION ]; then
<groupId>com.threerings.getdown</groupId>
<artifactId>getdown</artifactId>
<packaging>pom</packaging>
- <version>1.8.3-1.2.13_FJVL</version>
+ <version>1.8.3-1.2.14_FJVL</version>
<name>getdown</name>
<description>An application installer and updater.</description>
private final static String dockIconPath = ChannelProperties
.getProperty("logo.512");
+ private static boolean checkJVMSymlink(String testBin)
+ {
+ File testBinFile = new File(testBin);
+ if (!testBinFile.exists())
+ {
+ return false;
+ }
+ File targetFile = null;
+ try
+ {
+ targetFile = testBinFile.getCanonicalFile();
+ } catch (IOException e)
+ {
+ return false;
+ }
+ if (targetFile != null && ("java".equals(targetFile.getName())
+ || "java.exe".equals(targetFile.getName())))
+ {
+ return true;
+ }
+ return false;
+ }
+
/**
* main method for jalview.bin.Launcher. This restarts the same JRE's JVM with
* the same arguments but with memory adjusted based on extracted -jvmmempc
+ ") may lead to problems. This installation of Jalview should be used with Java "
+ LaunchUtils.getJavaCompileVersion() + ".");
}
-
- final String javaBin = System.getProperty("java.home") + File.separator
- + "bin" + File.separator + "java";
+ final String appName = ChannelProperties.getProperty("app_name");
+ final String javaBinDir = System.getProperty("java.home")
+ + File.separator + "bin" + File.separator;
+ String javaBin = null;
+ if (javaBin == null && checkJVMSymlink(javaBinDir + appName))
+ {
+ javaBin = javaBinDir + appName;
+ }
+ if (javaBin == null && checkJVMSymlink(javaBinDir + "Jalview"))
+ {
+ javaBin = javaBinDir + "Jalview";
+ }
+ if (javaBin == null)
+ {
+ javaBin = "java";
+ }
List<String> command = new ArrayList<>();
command.add(javaBin);
{
// -Xdock:name=... doesn't actually work :(
// Leaving it in in case it gets fixed
- command.add(
- "-Xdock:name=" + ChannelProperties.getProperty("app_name"));
+ command.add("-Xdock:name=" + appName);
// this launches WITHOUT an icon in the macOS dock. Could be useful for
// getdown?
// command.add("-Dapple.awt.UIElement=false");
// This also does not work for the dock
command.add("-Dcom.apple.mrj.application.apple.menu.about.name="
- + ChannelProperties.getProperty("app_name"));
+ + appName);
}
}
System.err.println(
"Linux platform only! You may have the following warning next: \"WARNING: An illegal reflective access operation has occurred\"\nThis is expected and cannot be avoided, sorry about that.");
}
+ final String awtAppClassName = "awtAppClassName";
try
{
Toolkit xToolkit = Toolkit.getDefaultToolkit();
Field awtAppClassNameField = null;
if (Arrays.stream(declaredFields)
- .anyMatch(f -> f.getName().equals("awtAppClassName")))
+ .anyMatch(f -> f.getName().equals(awtAppClassName)))
{
awtAppClassNameField = xToolkit.getClass()
- .getDeclaredField("awtAppClassName");
+ .getDeclaredField(awtAppClassName);
}
String title = ChannelProperties.getProperty("app_name");
}
else
{
- jalview.bin.Console.debug("XToolkit: awtAppClassName not found");
+ jalview.bin.Console
+ .debug("XToolkit: " + awtAppClassName + " not found");
}
} catch (Exception e)
{
- jalview.bin.Console.debug("Error setting awtAppClassName");
+ jalview.bin.Console.debug("Error setting " + awtAppClassName);
jalview.bin.Console.trace(Cache.getStackTraceString(e));
}
}
<?xml version="1.0" encoding="UTF-8"?>
-<install4j version="10.0.4" transformSequenceNumber="10">
- <directoryPresets config="bin/jalview" />
+<install4j version="10.0.5" transformSequenceNumber="10">
+ <directoryPresets config="bin/Jalview" />
<application name="${compiler:JALVIEW_APPLICATION_NAME}" applicationId="${compiler:WINDOWS_APPLICATION_ID}" mediaDir="${compiler:BUILD_DIR}" lzmaCompression="true" shortName="${compiler:INTERNAL_ID}" publisher="University of Dundee" publisherWeb="https://www.jalview.org/" version="${compiler:JALVIEW_VERSION}" allPathsRelative="true" macVolumeId="5aac4968c304f65" javaMinVersion="${compiler:JAVA_MIN_VERSION}" javaMaxVersion="${compiler:JAVA_MAX_VERSION}" allowBetaVM="true" jdkMode="jdk" jdkName="JDK 11.0">
<searchSequence>
<directory location="${compiler:JRE_DIR}" />
<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}" 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}"" arguments=""${launcher:sys.launcherDirectory}" jalview">
<classPath>
<archive location="getdown-launcher.jar" />
<archive location="${compiler:GETDOWN_INSTALL_DIR}/getdown-launcher.jar" failOnError="false" />
</screen>
<screen id="15" beanClass="com.install4j.runtime.beans.screens.InstallationScreen" rollbackBarrier="true" rollbackBarrierExitCode="0">
<actions>
- <action id="17" beanClass="com.install4j.runtime.beans.actions.InstallFilesAction" actionElevationType="elevated" rollbackBarrierExitCode="0" failureStrategy="quit" errorMessage="${i18n:FileCorrupted}" />
+ <action id="17" beanClass="com.install4j.runtime.beans.actions.InstallFilesAction" rollbackBarrierExitCode="0" failureStrategy="quit" errorMessage="${i18n:FileCorrupted}" />
<action name="Create program group (RELEASE)" id="18" customizedId="PROGRAM_GROUP_RELEASE" beanClass="com.install4j.runtime.beans.actions.desktop.CreateProgramGroupAction" actionElevationType="elevated" rollbackBarrierExitCode="0">
<serializedBean>
<property name="allUsers" type="boolean" value="false" />
</screen>
<screen id="20" beanClass="com.install4j.runtime.beans.screens.FinishedScreen" rollbackBarrierExitCode="0" finishScreen="true">
<actions>
+ <action name="Linux Jalview Appname->java symlink" id="2813" 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">
+ <string>${compiler:JRE_DIR}/bin/java</string>
+ </object>
+ </property>
+ <property name="linkFile">
+ <object class="java.io.File">
+ <string>${compiler:JRE_DIR}/bin/${compiler:JALVIEW_APPLICATION_NAME}</string>
+ </object>
+ </property>
+ <property name="removeOnUninstall" type="boolean" value="false" />
+ </serializedBean>
+ <condition>Util.isLinux()</condition>
+ </action>
+ <action name="Linux Jalview->java symlink" id="2814" 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">
+ <string>${compiler:JRE_DIR}/bin/java</string>
+ </object>
+ </property>
+ <property name="linkFile">
+ <object class="java.io.File">
+ <string>${compiler:JRE_DIR}/bin/${compiler:JALVIEW_NAME}</string>
+ </object>
+ </property>
+ <property name="removeOnUninstall" type="boolean" value="false" />
+ </serializedBean>
+ <condition>Util.isLinux()</condition>
+ </action>
<action id="2012" beanClass="com.install4j.runtime.beans.actions.desktop.CreateStartMenuEntryAction" actionElevationType="elevated" rollbackBarrierExitCode="0">
<serializedBean>
<property name="allUsers" type="boolean" value="false" />
</serializedBean>
<condition>context.getBooleanVariable("addToDockAction")</condition>
</action>
- <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">
+ <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">
<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" actionElevationType="elevated" rollbackBarrierExitCode="0" errorMessage="Could not make a ${compiler:WRAPPER_LINK} symbolic link in ~/${installer:unixUserBinDir}">
+ <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}">
<serializedBean>
<property name="file">
<object class="java.io.File">
</serializedBean>
<condition>context.getBooleanVariable("makeSymbolicLinkAction") && ( 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" actionElevationType="elevated" rollbackBarrierExitCode="0" errorMessage="Could not make a ${compiler:WRAPPER_LINK} symbolic link in ~/${installer:unixUserBinDir}">
+ <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>
<property name="file">
<object class="java.io.File">
<property name="progressChangeType" type="enum" class="com.install4j.runtime.beans.actions.control.ProgressChangeType" value="SET_INDETERMINATE" />
</serializedBean>
</action>
- <action id="29" beanClass="com.install4j.runtime.beans.actions.UninstallFilesAction" actionElevationType="elevated" rollbackBarrierExitCode="0" />
+ <action id="29" beanClass="com.install4j.runtime.beans.actions.UninstallFilesAction" rollbackBarrierExitCode="0" />
<action id="660" beanClass="com.install4j.runtime.beans.actions.control.SetProgressAction" enabled="false" actionElevationType="none" rollbackBarrierExitCode="0">
<serializedBean>
<property name="percentValue" type="int" value="95" />
</serializedBean>
</action>
- <action id="1525" beanClass="com.install4j.runtime.beans.actions.files.DeleteFileAction" actionElevationType="elevated" rollbackBarrierExitCode="0">
+ <action id="1525" beanClass="com.install4j.runtime.beans.actions.files.DeleteFileAction" rollbackBarrierExitCode="0">
<serializedBean>
<property name="files" type="array" class="java.io.File" length="40">
<element index="0">