mirror of
https://github.com/HMCL-dev/HMCL.git
synced 2025-09-16 07:16:27 -04:00
Merge pull request #352 from yushijinhun/refactor-update
添加 hmcl.version.override 选项用于调试更新功能
This commit is contained in:
commit
5e37750f00
@ -152,7 +152,7 @@ public final class Launcher extends Application {
|
|||||||
public static final File HMCL_DIRECTORY = OperatingSystem.getWorkingDirectory("hmcl");
|
public static final File HMCL_DIRECTORY = OperatingSystem.getWorkingDirectory("hmcl");
|
||||||
public static final File LOG_DIRECTORY = new File(Launcher.HMCL_DIRECTORY, "logs");
|
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 NAME = "HMCL";
|
||||||
public static final String TITLE = NAME + " " + VERSION;
|
public static final String TITLE = NAME + " " + VERSION;
|
||||||
public static final ResourceBundle RESOURCE_BUNDLE = Settings.INSTANCE.getLocale().getResourceBundle();
|
public static final ResourceBundle RESOURCE_BUNDLE = Settings.INSTANCE.getLocale().getResourceBundle();
|
||||||
|
@ -33,7 +33,6 @@ import java.io.File;
|
|||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.lang.reflect.InvocationTargetException;
|
|
||||||
import java.net.*;
|
import java.net.*;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.atomic.AtomicReference;
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
@ -49,7 +48,7 @@ import java.util.zip.GZIPInputStream;
|
|||||||
*/
|
*/
|
||||||
public class AppDataUpgrader extends IUpgrader {
|
public class AppDataUpgrader extends IUpgrader {
|
||||||
|
|
||||||
private void launchNewerVersion(List<String> args, File jar) throws IOException, ClassNotFoundException, NoSuchMethodException, SecurityException, InvocationTargetException, IllegalAccessException {
|
private void launchNewerVersion(List<String> args, File jar) throws IOException, ReflectiveOperationException {
|
||||||
try (JarFile jarFile = new JarFile(jar)) {
|
try (JarFile jarFile = new JarFile(jar)) {
|
||||||
String mainClass = jarFile.getManifest().getMainAttributes().getValue("Main-Class");
|
String mainClass = jarFile.getManifest().getMainAttributes().getValue("Main-Class");
|
||||||
if (mainClass == null)
|
if (mainClass == null)
|
||||||
@ -91,7 +90,7 @@ public class AppDataUpgrader extends IUpgrader {
|
|||||||
}
|
}
|
||||||
} catch (JsonParseException ex) {
|
} catch (JsonParseException ex) {
|
||||||
f.delete();
|
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);
|
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.
|
AppDataUpgraderPackGzTask.HMCL_VER_FILE.delete(); // delete version json, let HMCL re-download the newer version.
|
||||||
}
|
}
|
||||||
|
@ -27,10 +27,11 @@ import org.jackhuang.hmcl.task.Task;
|
|||||||
import org.jackhuang.hmcl.task.TaskResult;
|
import org.jackhuang.hmcl.task.TaskResult;
|
||||||
import org.jackhuang.hmcl.ui.construct.MessageBox;
|
import org.jackhuang.hmcl.ui.construct.MessageBox;
|
||||||
import org.jackhuang.hmcl.util.Constants;
|
import org.jackhuang.hmcl.util.Constants;
|
||||||
import org.jackhuang.hmcl.util.Logging;
|
|
||||||
import org.jackhuang.hmcl.util.NetworkUtils;
|
import org.jackhuang.hmcl.util.NetworkUtils;
|
||||||
import org.jackhuang.hmcl.util.VersionNumber;
|
import org.jackhuang.hmcl.util.VersionNumber;
|
||||||
|
|
||||||
|
import static org.jackhuang.hmcl.util.Logging.LOG;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
@ -78,8 +79,10 @@ public final class UpdateChecker {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute() throws Exception {
|
public void execute() throws Exception {
|
||||||
if (Launcher.VERSION.contains("@"))
|
if (isDevelopmentVersion(Launcher.VERSION)) {
|
||||||
|
LOG.info("Current version is a development version, skip updating");
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
versionString = http.getResult();
|
versionString = http.getResult();
|
||||||
@ -87,7 +90,7 @@ public final class UpdateChecker {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
Logging.LOG.warning("Unable to check update...");
|
LOG.warning("Unable to check update...");
|
||||||
if (showMessage)
|
if (showMessage)
|
||||||
MessageBox.show(Launcher.i18n("update.failed"));
|
MessageBox.show(Launcher.i18n("update.failed"));
|
||||||
} else if (base.compareTo(value) < 0)
|
} 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 <b>cached</b> newest version number, use "process" method to
|
* Get the <b>cached</b> newest version number, use "process" method to
|
||||||
* download!
|
* download!
|
||||||
@ -124,11 +132,12 @@ public final class UpdateChecker {
|
|||||||
return new TaskResult<Map<String, String>>() {
|
return new TaskResult<Map<String, String>>() {
|
||||||
@Override
|
@Override
|
||||||
public void execute() {
|
public void execute() {
|
||||||
if (download_link == null)
|
if (download_link == null) {
|
||||||
try {
|
try {
|
||||||
download_link = Constants.GSON.<Map<String, String>>fromJson(NetworkUtils.doGet(NetworkUtils.toURL(Launcher.UPDATE_SERVER + "/hmcl/update_link.php")), Map.class);
|
download_link = Constants.GSON.<Map<String, String>>fromJson(NetworkUtils.doGet(NetworkUtils.toURL(Launcher.UPDATE_SERVER + "/hmcl/update_link.php")), Map.class);
|
||||||
} catch (JsonSyntaxException | IOException e) {
|
} 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);
|
setResult(download_link);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user