加入强制升级和升级提示
This commit is contained in:
@@ -161,7 +161,10 @@ public final class Main implements Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Settings.UPDATE_CHECKER.outdated.register(IUpgrader.NOW_UPGRADER);
|
Settings.UPDATE_CHECKER.outdated.register(IUpgrader.NOW_UPGRADER);
|
||||||
Settings.UPDATE_CHECKER.process(false).reg(t -> Main.invokeUpdate()).execute();
|
Settings.UPDATE_CHECKER.process(false)
|
||||||
|
.reg(t -> Main.invokeUpdate())
|
||||||
|
.regDone(() -> { Settings.UPDATE_CHECKER.checkOutdate(); })
|
||||||
|
.execute();
|
||||||
|
|
||||||
if (StrUtils.isNotBlank(Settings.getInstance().getProxyHost()) && StrUtils.isNotBlank(Settings.getInstance().getProxyPort()) && MathUtils.canParseInt(Settings.getInstance().getProxyPort())) {
|
if (StrUtils.isNotBlank(Settings.getInstance().getProxyHost()) && StrUtils.isNotBlank(Settings.getInstance().getProxyPort()) && MathUtils.canParseInt(Settings.getInstance().getProxyPort())) {
|
||||||
HMCLog.log("Initializing customized proxy");
|
HMCLog.log("Initializing customized proxy");
|
||||||
|
|||||||
@@ -389,8 +389,9 @@ public class LauncherSettingsPanel extends AnimatedPanel {
|
|||||||
}//GEN-LAST:event_txtBackgroundPathFocusLost
|
}//GEN-LAST:event_txtBackgroundPathFocusLost
|
||||||
|
|
||||||
private void btnCheckUpdateActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCheckUpdateActionPerformed
|
private void btnCheckUpdateActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCheckUpdateActionPerformed
|
||||||
Settings.UPDATE_CHECKER.process(true);
|
Settings.UPDATE_CHECKER.process(true)
|
||||||
Settings.UPDATE_CHECKER.checkOutdate();
|
.regDone(() -> { Settings.UPDATE_CHECKER.checkOutdate(); })
|
||||||
|
.execute();
|
||||||
}//GEN-LAST:event_btnCheckUpdateActionPerformed
|
}//GEN-LAST:event_btnCheckUpdateActionPerformed
|
||||||
|
|
||||||
private void cboThemeItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cboThemeItemStateChanged
|
private void cboThemeItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cboThemeItemStateChanged
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ import java.util.zip.GZIPInputStream;
|
|||||||
import org.jackhuang.hellominecraft.util.C;
|
import org.jackhuang.hellominecraft.util.C;
|
||||||
import org.jackhuang.hellominecraft.util.logging.HMCLog;
|
import org.jackhuang.hellominecraft.util.logging.HMCLog;
|
||||||
import org.jackhuang.hellominecraft.launcher.core.MCUtils;
|
import org.jackhuang.hellominecraft.launcher.core.MCUtils;
|
||||||
|
import org.jackhuang.hellominecraft.launcher.setting.Settings;
|
||||||
import org.jackhuang.hellominecraft.util.tasks.Task;
|
import org.jackhuang.hellominecraft.util.tasks.Task;
|
||||||
import org.jackhuang.hellominecraft.util.tasks.TaskWindow;
|
import org.jackhuang.hellominecraft.util.tasks.TaskWindow;
|
||||||
import org.jackhuang.hellominecraft.util.tasks.download.FileDownloadTask;
|
import org.jackhuang.hellominecraft.util.tasks.download.FileDownloadTask;
|
||||||
@@ -47,9 +48,11 @@ import org.jackhuang.hellominecraft.util.MessageBox;
|
|||||||
import org.jackhuang.hellominecraft.util.UpdateChecker;
|
import org.jackhuang.hellominecraft.util.UpdateChecker;
|
||||||
import org.jackhuang.hellominecraft.util.Utils;
|
import org.jackhuang.hellominecraft.util.Utils;
|
||||||
import org.jackhuang.hellominecraft.util.VersionNumber;
|
import org.jackhuang.hellominecraft.util.VersionNumber;
|
||||||
|
import org.jackhuang.hellominecraft.util.func.Consumer;
|
||||||
import org.jackhuang.hellominecraft.util.system.FileUtils;
|
import org.jackhuang.hellominecraft.util.system.FileUtils;
|
||||||
import org.jackhuang.hellominecraft.util.system.IOUtils;
|
import org.jackhuang.hellominecraft.util.system.IOUtils;
|
||||||
import org.jackhuang.hellominecraft.util.system.OS;
|
import org.jackhuang.hellominecraft.util.system.OS;
|
||||||
|
import org.jackhuang.hellominecraft.util.tasks.TaskList;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@@ -100,40 +103,54 @@ public class AppDataUpgrader extends IUpgrader {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean call(Object sender, final VersionNumber number) {
|
public boolean call(Object sender, final VersionNumber number) {
|
||||||
((UpdateChecker) sender).requestDownloadLink().reg(map -> {
|
((UpdateChecker) sender).requestDownloadLink().reg(new Consumer<Map<String, String>>() {
|
||||||
if (MessageBox.Show(C.i18n("update.newest_version") + number.firstVer + "." + number.secondVer + "." + number.thirdVer + "\n"
|
@Override
|
||||||
+ C.i18n("update.should_open_link"),
|
public void accept(Map<String, String> map) {
|
||||||
MessageBox.YES_NO_OPTION) == MessageBox.YES_OPTION)
|
boolean isForceUpdate = Settings.UPDATE_CHECKER.isForceUpdate();
|
||||||
if (map != null && map.containsKey("pack"))
|
if (isForceUpdate || MessageBox.Show(C.i18n("update.newest_version") +
|
||||||
try {
|
number.firstVer + "." +
|
||||||
String hash = null;
|
number.secondVer + "." +
|
||||||
if (map.containsKey("packsha1"))
|
number.thirdVer + "\n" +
|
||||||
hash = map.get("packsha1");
|
C.i18n("update.should_open_link"), MessageBox.YES_NO_OPTION) == MessageBox.YES_OPTION)
|
||||||
if (TaskWindow.factory().append(new AppDataUpgraderTask(map.get("pack"), number.version, hash)).create()) {
|
if (map != null && map.containsKey("pack"))
|
||||||
new ProcessBuilder(new String[] { IOUtils.getJavaDir(), "-jar", AppDataUpgraderTask.getSelf(number.version).getAbsolutePath() }).directory(new File(".")).start();
|
try {
|
||||||
System.exit(0);
|
String hash = null;
|
||||||
}
|
if (map.containsKey("packsha1")) {
|
||||||
} catch (IOException ex) {
|
hash = map.get("packsha1");
|
||||||
HMCLog.err("Failed to create upgrader", ex);
|
}
|
||||||
}
|
AppDataUpgraderTask upgraderTask = new AppDataUpgraderTask(map.get("pack"), number.version, hash);
|
||||||
else {
|
if (isForceUpdate) {
|
||||||
String url = C.URL_PUBLISH;
|
TaskList tasks = new TaskList();
|
||||||
if (map != null)
|
tasks.addTask(upgraderTask);
|
||||||
if (map.containsKey(OS.os().checked_name))
|
tasks.start();
|
||||||
url = map.get(OS.os().checked_name);
|
} else {
|
||||||
else if (map.containsKey(OS.UNKOWN.checked_name))
|
if (TaskWindow.factory().append(upgraderTask).create()) {
|
||||||
url = map.get(OS.UNKOWN.checked_name);
|
new ProcessBuilder(new String[] { IOUtils.getJavaDir(), "-jar", AppDataUpgraderTask.getSelf(number.version).getAbsolutePath() }).directory(new File(".")).start();
|
||||||
if (url == null)
|
System.exit(0);
|
||||||
url = C.URL_PUBLISH;
|
}
|
||||||
try {
|
}
|
||||||
java.awt.Desktop.getDesktop().browse(new URI(url));
|
} catch (IOException ex) {
|
||||||
} catch (URISyntaxException | IOException e) {
|
HMCLog.err("Failed to create upgrader", ex);
|
||||||
HMCLog.warn("Failed to browse uri: " + url, e);
|
}
|
||||||
Utils.setClipborad(url);
|
else {
|
||||||
MessageBox.Show(C.i18n("update.no_browser"));
|
String url = C.URL_PUBLISH;
|
||||||
}
|
if (map != null)
|
||||||
}
|
if (map.containsKey(OS.os().checked_name))
|
||||||
}).execute();
|
url = map.get(OS.os().checked_name);
|
||||||
|
else if (map.containsKey(OS.UNKOWN.checked_name))
|
||||||
|
url = map.get(OS.UNKOWN.checked_name);
|
||||||
|
if (url == null)
|
||||||
|
url = C.URL_PUBLISH;
|
||||||
|
try {
|
||||||
|
java.awt.Desktop.getDesktop().browse(new URI(url));
|
||||||
|
} catch (URISyntaxException | IOException e) {
|
||||||
|
HMCLog.warn("Failed to browse uri: " + url, e);
|
||||||
|
Utils.setClipborad(url);
|
||||||
|
MessageBox.Show(C.i18n("update.no_browser"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).execute();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,6 +29,8 @@ public interface IUpdateChecker {
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
void checkOutdate();
|
void checkOutdate();
|
||||||
|
|
||||||
|
boolean isForceUpdate();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the <b>cached</b> newest version number, use "process" method to
|
* Get the <b>cached</b> newest version number, use "process" method to
|
||||||
|
|||||||
@@ -27,8 +27,12 @@ import java.util.Map;
|
|||||||
public final class UpdateChecker implements IUpdateChecker {
|
public final class UpdateChecker implements IUpdateChecker {
|
||||||
|
|
||||||
public boolean OUT_DATED = false;
|
public boolean OUT_DATED = false;
|
||||||
|
|
||||||
|
public String versionString;
|
||||||
public VersionNumber base;
|
public VersionNumber base;
|
||||||
public String versionString;
|
private VersionNumber value;
|
||||||
|
private boolean isforceUpdate = false;
|
||||||
|
|
||||||
public String type;
|
public String type;
|
||||||
private Map<String, String> download_link = null;
|
private Map<String, String> download_link = null;
|
||||||
|
|
||||||
@@ -37,16 +41,18 @@ public final class UpdateChecker implements IUpdateChecker {
|
|||||||
this.type = type;
|
this.type = type;
|
||||||
}
|
}
|
||||||
|
|
||||||
VersionNumber value;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public OverridableSwingWorker<VersionNumber> process(final boolean showMessage) {
|
public OverridableSwingWorker<VersionNumber> process(final boolean showMessage) {
|
||||||
return new OverridableSwingWorker() {
|
return new OverridableSwingWorker() {
|
||||||
@Override
|
@Override
|
||||||
protected void work() throws Exception {
|
protected void work() throws Exception {
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
versionString = NetUtils.get("http://huangyuhui.duapp.com/info.php?type=" + type);
|
versionString = NetUtils.get("http://localhost:8080/version.php?type=" + type);
|
||||||
value = VersionNumber.check(versionString);
|
Map<String, Object> versionInfo = C.GSON.fromJson(versionString, Map.class);
|
||||||
|
if (versionInfo.containsKey("version"))
|
||||||
|
value = VersionNumber.check((String)versionInfo.get("version"));
|
||||||
|
if (versionInfo.containsKey("force"))
|
||||||
|
isforceUpdate = (boolean)versionInfo.get("force");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
@@ -66,6 +72,11 @@ public final class UpdateChecker implements IUpdateChecker {
|
|||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isForceUpdate() {
|
||||||
|
return isforceUpdate;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public synchronized OverridableSwingWorker<Map<String, String>> requestDownloadLink() {
|
public synchronized OverridableSwingWorker<Map<String, String>> requestDownloadLink() {
|
||||||
return new OverridableSwingWorker() {
|
return new OverridableSwingWorker() {
|
||||||
|
|||||||
Reference in New Issue
Block a user