diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/util/upgrade/AppDataUpgrader.java b/HMCL/src/main/java/org/jackhuang/hmcl/util/upgrade/AppDataUpgrader.java index b3f6e7ef1..0a5f5eeb7 100755 --- a/HMCL/src/main/java/org/jackhuang/hmcl/util/upgrade/AppDataUpgrader.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/util/upgrade/AppDataUpgrader.java @@ -161,15 +161,19 @@ public class AppDataUpgrader extends IUpgrader { @Override public void executeTask(boolean areDependTasksSucceeded) throws Exception { + if (!areDependTasksSucceeded) { + tempFile.delete(); + return; + } HashMap json = new HashMap<>(); File f = getSelf(newestVersion); if (!FileUtils.makeDirectory(f.getParentFile())) - HMCLog.warn("Failed to make directories: " + f.getParent()); + throw new IOException("Failed to make directories: " + f.getParent()); for (int i = 0; f.exists(); i++) f = new File(BASE_FOLDER, "HMCL-" + newestVersion + (i > 0 ? "-" + i : "") + ".jar"); if (!f.createNewFile()) - HMCLog.warn("Failed to create new file: " + f); + throw new IOException("Failed to create new file: " + f); try (JarOutputStream jos = new JarOutputStream(FileUtils.openOutputStream(f))) { Pack200.newUnpacker().unpack(new GZIPInputStream(FileUtils.openInputStream(tempFile)), jos); diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/net/FileDownloadTask.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/net/FileDownloadTask.java index 4f43752ff..b384d50b2 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/net/FileDownloadTask.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/net/FileDownloadTask.java @@ -212,6 +212,7 @@ public class FileDownloadTask extends Task implements PreviousResult, Prev ppl.onProgressProviderDone(this); return; } catch (IOException | IllegalStateException e) { + filePath.delete(); setFailReason(new IOException(C.i18n("download.failed") + " " + url, e)); } finally { closeFiles();