diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/Launcher.java b/HMCL/src/main/java/org/jackhuang/hmcl/Launcher.java index d13c47bb2..3dbc21934 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/Launcher.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/Launcher.java @@ -152,7 +152,7 @@ public final class Launcher extends Application { public static final File HMCL_DIRECTORY = OperatingSystem.getWorkingDirectory("hmcl"); public static final File LOG_DIRECTORY = new File(Launcher.HMCL_DIRECTORY, "logs"); - public static final String VERSION = "@HELLO_MINECRAFT_LAUNCHER_VERSION_FOR_GRADLE_REPLACING@"; + public static final String VERSION = System.getProperty("hmcl.version.override", "@HELLO_MINECRAFT_LAUNCHER_VERSION_FOR_GRADLE_REPLACING@"); public static final String NAME = "HMCL"; public static final String TITLE = NAME + " " + VERSION; public static final ResourceBundle RESOURCE_BUNDLE = Settings.INSTANCE.getLocale().getResourceBundle(); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/AppDataUpgrader.java b/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/AppDataUpgrader.java index 1bb60a961..3c0955d33 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/AppDataUpgrader.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/AppDataUpgrader.java @@ -33,7 +33,6 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; -import java.lang.reflect.InvocationTargetException; import java.net.*; import java.util.*; import java.util.concurrent.atomic.AtomicReference; @@ -49,7 +48,7 @@ import java.util.zip.GZIPInputStream; */ public class AppDataUpgrader extends IUpgrader { - private void launchNewerVersion(List args, File jar) throws IOException, ClassNotFoundException, NoSuchMethodException, SecurityException, InvocationTargetException, IllegalAccessException { + private void launchNewerVersion(List args, File jar) throws IOException, ReflectiveOperationException { try (JarFile jarFile = new JarFile(jar)) { String mainClass = jarFile.getManifest().getMainAttributes().getValue("Main-Class"); if (mainClass == null) @@ -91,7 +90,7 @@ public class AppDataUpgrader extends IUpgrader { } } catch (JsonParseException ex) { f.delete(); - } catch (IOException | NoSuchMethodException | SecurityException | InvocationTargetException | IllegalAccessException | ClassNotFoundException t) { + } catch (IOException | ReflectiveOperationException t) { Logging.LOG.log(Level.SEVERE, "Unable to execute newer version application", t); AppDataUpgraderPackGzTask.HMCL_VER_FILE.delete(); // delete version json, let HMCL re-download the newer version. } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateChecker.java b/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateChecker.java index 658b1b8ac..8230d01f1 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateChecker.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateChecker.java @@ -27,10 +27,11 @@ import org.jackhuang.hmcl.task.Task; import org.jackhuang.hmcl.task.TaskResult; import org.jackhuang.hmcl.ui.construct.MessageBox; import org.jackhuang.hmcl.util.Constants; -import org.jackhuang.hmcl.util.Logging; import org.jackhuang.hmcl.util.NetworkUtils; import org.jackhuang.hmcl.util.VersionNumber; +import static org.jackhuang.hmcl.util.Logging.LOG; + import java.io.IOException; import java.util.Collection; import java.util.Collections; @@ -78,8 +79,10 @@ public final class UpdateChecker { @Override public void execute() throws Exception { - if (Launcher.VERSION.contains("@")) + if (isDevelopmentVersion(Launcher.VERSION)) { + LOG.info("Current version is a development version, skip updating"); return; + } if (value == null) { versionString = http.getResult(); @@ -87,7 +90,7 @@ public final class UpdateChecker { } if (value == null) { - Logging.LOG.warning("Unable to check update..."); + LOG.warning("Unable to check update..."); if (showMessage) MessageBox.show(Launcher.i18n("update.failed")); } else if (base.compareTo(value) < 0) @@ -103,6 +106,11 @@ public final class UpdateChecker { }; } + private boolean isDevelopmentVersion(String version) { + return version.contains("@") || // eg. @HELLO_MINECRAFT_LAUNCHER_VERSION_FOR_GRADLE_REPLACING@ + version.contains("SNAPSHOT"); // eg. 3.1.SNAPSHOT + } + /** * Get the cached newest version number, use "process" method to * download! @@ -124,12 +132,13 @@ public final class UpdateChecker { return new TaskResult>() { @Override public void execute() { - if (download_link == null) + if (download_link == null) { try { download_link = Constants.GSON.>fromJson(NetworkUtils.doGet(NetworkUtils.toURL(Launcher.UPDATE_SERVER + "/hmcl/update_link.php")), Map.class); } catch (JsonSyntaxException | IOException e) { - Logging.LOG.log(Level.SEVERE, "Failed to get update link.", e); + LOG.log(Level.SEVERE, "Failed to get update link.", e); } + } setResult(download_link); }