diff --git a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateInstaller.kt b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateInstaller.kt index d996d6187f9e..661dfda5c4a3 100644 --- a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateInstaller.kt +++ b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateInstaller.kt @@ -187,7 +187,8 @@ object UpdateInstaller { private fun getTempDir() = File(PathManager.getTempPath(), "patch-update") private fun getJdkSuffix(): String { - val jreHome = File(PathManager.getHomePath(), if (SystemInfo.isMac) "jdk" else "jre64") + var jreHome = File(PathManager.getHomePath(), "jbr") + if (!jreHome.exists()) jreHome = File(PathManager.getHomePath(), if (SystemInfo.isMac) "jdk" else "jre64") if (!jreHome.exists()) return "-no-jbr" val releaseFile = File(jreHome, if (SystemInfo.isMac) "Contents/Home/release" else "release") val version = try { diff --git a/updater/src/com/intellij/updater/Patch.java b/updater/src/com/intellij/updater/Patch.java index 7497c0854228..5efcf8bc63e0 100644 --- a/updater/src/com/intellij/updater/Patch.java +++ b/updater/src/com/intellij/updater/Patch.java @@ -363,11 +363,12 @@ public class Patch { } File jre64 = new File(toDir.getAbsolutePath() + "/jre64"); + File jbr = new File(toDir.getAbsolutePath() + "/jbr"); + if (jbr.exists()) Runner.logger().info("jbr bundled: " + jbr.getAbsolutePath()); + if (jre64.exists()) Runner.logger().info("jre64 bundled: " + jre64.getAbsolutePath()); for (File directory : createdDirectories) { File[] children = directory.listFiles(); - if (children != null && - (!directory.getAbsolutePath().contains("jre64") || - directory.getAbsolutePath().contains("jre64") && !jre64.exists()) && + if (children != null && pruningEmptyDir(toDir, directory, jre64, jbr) && createdOptionalFiles.containsAll(Arrays.asList(children))) { Runner.logger().info("Pruning empty directory: " + directory); try { @@ -390,6 +391,13 @@ public class Patch { return new PatchFileCreator.ApplicationResult(true, appliedActions); } + private boolean pruningEmptyDir(File toDir, File directory, File jre64, File jbr) { + return ((!directory.getAbsolutePath().contains("jre64") || + (directory.getAbsolutePath().contains("jre64") && !jre64.exists())) && + (!directory.getAbsolutePath().contains("jbr") || + (directory.getAbsolutePath().contains("jbr") && !jbr.exists()))); + } + public void revert(List actions, File backupDir, File rootDir, UpdaterUI ui) throws IOException { Runner.logger().info("Reverting... [" + actions.size() + " actions]"); ui.startProcess("Reverting...");