diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/game/ModpackHelper.java b/HMCL/src/main/java/org/jackhuang/hmcl/game/ModpackHelper.java index 816390e44..97fc5cadf 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/game/ModpackHelper.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/game/ModpackHelper.java @@ -107,9 +107,6 @@ public final class ModpackHelper { if (ex instanceof CurseCompletionException && !(ex.getCause() instanceof FileNotFoundException)) { success.run(); // This is tolerable and we will not delete the game - } else { - HMCLGameRepository repository = profile.getRepository(); - repository.removeVersionFromDisk(name); } }; diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/curse/CurseInstallTask.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/curse/CurseInstallTask.java index 3fbdf53f9..4146cce10 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/curse/CurseInstallTask.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/curse/CurseInstallTask.java @@ -32,6 +32,7 @@ import org.jackhuang.hmcl.util.gson.JsonUtils; import org.jackhuang.hmcl.util.io.FileUtils; import java.io.File; +import java.io.FileNotFoundException; import java.io.IOException; import java.util.Collection; import java.util.LinkedList; @@ -84,7 +85,12 @@ public final class CurseInstallTask extends Task { dependents.add(builder.buildAsync()); onDone().register(event -> { - if (event.isFailed()) repository.removeVersionFromDisk(name); + Exception ex = event.getTask().getException(); + if (event.isFailed()) { + if (!(ex instanceof CurseCompletionException) || ex.getCause() instanceof FileNotFoundException) { + repository.removeVersionFromDisk(name); + } + } }); ModpackConfiguration config = null;