From 0b2bbea0b1e5b4bc1a4509e99b0273955fa867e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BE=9E=E5=BA=90?= <109708109+Ciilu@users.noreply.github.com> Date: Sat, 21 Mar 2026 19:26:48 +0800 Subject: [PATCH 1/3] update --- .../org/jackhuang/hmcl/upgrade/UpdateHandler.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateHandler.java b/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateHandler.java index d1132b06f6..d43041d97f 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateHandler.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateHandler.java @@ -20,20 +20,20 @@ import com.google.gson.Gson; import com.google.gson.JsonParseException; import javafx.application.Platform; - import org.jackhuang.hmcl.EntryPoint; import org.jackhuang.hmcl.Main; import org.jackhuang.hmcl.Metadata; +import org.jackhuang.hmcl.java.JavaRuntime; import org.jackhuang.hmcl.task.Task; import org.jackhuang.hmcl.task.TaskExecutor; import org.jackhuang.hmcl.ui.Controllers; import org.jackhuang.hmcl.ui.UpgradeDialog; import org.jackhuang.hmcl.ui.construct.MessageDialogPane.MessageType; +import org.jackhuang.hmcl.util.FileSaver; import org.jackhuang.hmcl.util.StringUtils; import org.jackhuang.hmcl.util.SwingUtils; import org.jackhuang.hmcl.util.TaskCancellationAction; import org.jackhuang.hmcl.util.io.JarUtils; -import org.jackhuang.hmcl.java.JavaRuntime; import org.jackhuang.hmcl.util.platform.OperatingSystem; import java.io.IOException; @@ -48,8 +48,8 @@ import static org.jackhuang.hmcl.ui.FXUtils.checkFxUserThread; import static org.jackhuang.hmcl.util.Lang.thread; -import static org.jackhuang.hmcl.util.logging.Logger.LOG; import static org.jackhuang.hmcl.util.i18n.I18n.i18n; +import static org.jackhuang.hmcl.util.logging.Logger.LOG; public final class UpdateHandler { private UpdateHandler() { @@ -125,6 +125,14 @@ public static void updateFrom(RemoteVersion version) { throw new IOException("Current JAR is not verified"); } + Controllers.onApplicationStop(); + + try { + FileSaver.waitForAllSaves(); + } catch (InterruptedException ignored) { + // Ignore + } + requestUpdate(downloaded, getCurrentLocation()); EntryPoint.exit(0); } catch (IOException e) { From f56b633af96194275cd87af81a71796dee747ebd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BE=9E=E5=BA=90?= <109708109+Ciilu@users.noreply.github.com> Date: Sat, 21 Mar 2026 21:16:12 +0800 Subject: [PATCH 2/3] update --- .../src/main/java/org/jackhuang/hmcl/upgrade/UpdateHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateHandler.java b/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateHandler.java index d43041d97f..3557e76e7c 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateHandler.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateHandler.java @@ -125,7 +125,7 @@ public static void updateFrom(RemoteVersion version) { throw new IOException("Current JAR is not verified"); } - Controllers.onApplicationStop(); + Platform.runLater(Controllers::onApplicationStop); try { FileSaver.waitForAllSaves(); From 12b272c10e4463d64deee25a7081cde0d336f324 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BE=9E=E5=BA=90?= <109708109+Ciilu@users.noreply.github.com> Date: Mon, 23 Mar 2026 21:56:41 +0800 Subject: [PATCH 3/3] update --- .../jackhuang/hmcl/upgrade/UpdateHandler.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateHandler.java b/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateHandler.java index 3557e76e7c..617f745bb7 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateHandler.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateHandler.java @@ -43,6 +43,8 @@ import java.nio.file.Paths; import java.util.*; import java.util.concurrent.CancellationException; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -125,7 +127,19 @@ public static void updateFrom(RemoteVersion version) { throw new IOException("Current JAR is not verified"); } - Platform.runLater(Controllers::onApplicationStop); + CompletableFuture future = new CompletableFuture<>(); + + Platform.runLater(() -> { + Controllers.onApplicationStop(); + future.complete(null); + }); + + try { + future.get(); + } catch (ExecutionException | InterruptedException ignored) { + // Ignore + } + try { FileSaver.waitForAllSaves();