From e4bd1c758ffd4644988d1c85a18484ddab3a9ad1 Mon Sep 17 00:00:00 2001 From: huangyuhui Date: Fri, 2 Feb 2018 15:38:55 +0800 Subject: [PATCH] Delete version folder when installing canceled --- .../ui/construct/TaskExecutorDialogWizardDisplayer.java | 2 ++ .../org/jackhuang/hmcl/download/DefaultGameBuilder.java | 7 +++++++ 2 files changed, 9 insertions(+) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/TaskExecutorDialogWizardDisplayer.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/TaskExecutorDialogWizardDisplayer.java index 0d6d6d56b..8c59e7891 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/TaskExecutorDialogWizardDisplayer.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/TaskExecutorDialogWizardDisplayer.java @@ -68,6 +68,8 @@ public interface TaskExecutorDialogWizardDisplayer extends AbstractWizardDisplay @Override public void onTerminate() { + if (e.getLastException() == null) + return; String appendix = StringUtils.getStackTrace(e.getLastException()); if (settings.containsKey("failure_message") && settings.get("failure_message") instanceof String) JFXUtilities.runInFX(() -> Controllers.dialog(appendix, (String) settings.get("failure_message"), MessageBox.ERROR_MESSAGE, () -> Controllers.navigate(null))); diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/DefaultGameBuilder.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/DefaultGameBuilder.java index 27b48e1da..1e69d16cb 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/DefaultGameBuilder.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/DefaultGameBuilder.java @@ -25,6 +25,7 @@ import org.jackhuang.hmcl.util.AutoTypingMap; import org.jackhuang.hmcl.util.Constants; import org.jackhuang.hmcl.util.ExceptionalFunction; +import java.io.IOException; import java.util.function.Function; /** @@ -69,6 +70,12 @@ public class DefaultGameBuilder extends GameBuilder { if (toolVersions.containsKey("optifine")) result = result.then(libraryTaskHelper(gameVersion, "optifine")); return result; + }).finalized(new Task() { + @Override + public void execute() { + if (!isDependentsSucceeded()) + dependencyManager.getGameRepository().getVersionRoot(name).delete(); + } }); }