From d496c4df36b40d98c57c3c849c8a3fd3ec413fcf Mon Sep 17 00:00:00 2001 From: "Vladimir.Orlov" Date: Tue, 2 Oct 2018 13:11:24 +0300 Subject: [PATCH] IDEA-199519 Uninstall: The IDE installation folder is not deleted after uninstallation IDEA-CR-37456 --- build/conf/nsis/idea.nsi | 7 ++++++- .../intellij/build/impl/NsisFileListGenerator.groovy | 12 ++++++------ .../build/impl/WinExeInstallerBuilder.groovy | 8 ++++++++ 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/build/conf/nsis/idea.nsi b/build/conf/nsis/idea.nsi index 820b8da1cb17..ef102db58e06 100644 --- a/build/conf/nsis/idea.nsi +++ b/build/conf/nsis/idea.nsi @@ -1576,7 +1576,6 @@ skip_delete_settings: ; Delete uninstaller itself Delete "$INSTDIR\bin\Uninstall.exe" - Delete "$INSTDIR\jre32\bin\client\classes.jsa" Delete "$INSTDIR\jre64\bin\server\classes.jsa" Push "Complete" @@ -1590,6 +1589,12 @@ skip_delete_settings: Delete "$INSTDIR\bin\${PRODUCT_EXE_FILE}.vmoptions" Delete "$INSTDIR\bin\${PRODUCT_EXE_FILE_64}.vmoptions" ${EndIf} + IfFileExists "$INSTDIR\jre32\*.*" 0 no_jre32 + Delete "$INSTDIR\jre32\bin\server\classes.jsa" + StrCpy $0 "$INSTDIR\jre32\lib\applet" + Call un.DeleteDirIfEmpty + !include "un_jre32_win.nsh" +no_jre32: !include "unidea_win.nsh" StrCpy $0 "$INSTDIR" Call un.DeleteDirIfEmpty diff --git a/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/NsisFileListGenerator.groovy b/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/NsisFileListGenerator.groovy index 858c0a6d747f..2e76ad07a97b 100644 --- a/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/NsisFileListGenerator.groovy +++ b/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/NsisFileListGenerator.groovy @@ -47,12 +47,12 @@ class NsisFileListGenerator { } } - void generateUninstallerFile(File outputFile) { + void generateUninstallerFile(String installDir = "\$INSTDIR", File outputFile) { outputFile.withWriter { BufferedWriter out -> filesRelativePaths.toSorted().each { - out.writeLine("Delete \"\$INSTDIR\\${toWinPath(it)}\"") + out.writeLine("Delete \"${installDir}\\${toWinPath(it)}\"") if (it.endsWith(".py")) { - out.writeLine("Delete \"\$INSTDIR\\${toWinPath(it)}c\"") //.pyc + out.writeLine("Delete \"${installDir}\\${toWinPath(it)}c\"") //.pyc } } @@ -60,11 +60,11 @@ class NsisFileListGenerator { directoryToFiles.keySet().toSorted().reverseEach { if (!it.empty) { - out.writeLine("RmDir /r \"\$INSTDIR\\${toWinPath(it)}\\__pycache__\""); - out.writeLine("RmDir \"\$INSTDIR\\${toWinPath(it)}\""); + out.writeLine("RmDir /r \"${installDir}\\${toWinPath(it)}\\__pycache__\""); + out.writeLine("RmDir \"${installDir}\\${toWinPath(it)}\""); } } - out.writeLine("RmDir \"\$INSTDIR\"") + out.writeLine("RmDir \"${installDir}\"") } } diff --git a/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/WinExeInstallerBuilder.groovy b/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/WinExeInstallerBuilder.groovy index 888835521df8..cffb3a505026 100644 --- a/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/WinExeInstallerBuilder.groovy +++ b/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/WinExeInstallerBuilder.groovy @@ -17,6 +17,7 @@ package org.jetbrains.intellij.build.impl import com.intellij.openapi.util.SystemInfoRt import org.jetbrains.intellij.build.BuildContext +import org.jetbrains.intellij.build.JvmArchitecture import org.jetbrains.intellij.build.WindowsDistributionCustomizer import static com.intellij.openapi.util.io.FileUtil.toSystemDependentName @@ -118,6 +119,13 @@ class WinExeInstallerBuilder { } generator.generateInstallerFile(new File(box, "nsiconf/idea_win.nsh")) generator.generateUninstallerFile(new File(box, "nsiconf/unidea_win.nsh")) + + String jre32Dir = buildContext.bundledJreManager.extractWinJre(JvmArchitecture.x32) + if (jre32Dir != null) { + def generatorForJre32Dir = new NsisFileListGenerator() + generatorForJre32Dir.addDirectory(jre32Dir + "/jre32") + generatorForJre32Dir.generateUninstallerFile("\$INSTDIR\\jre32", new File(box, "nsiconf/un_jre32_win.nsh")) + } } catch (IOException e) { buildContext.messages.error("Failed to generated list of files for NSIS installer: $e")