diff options
author | Brad King <brad.king@kitware.com> | 2022-10-11 13:49:50 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2022-10-11 13:49:50 (GMT) |
commit | eec8a7b68104ce67ed674e319efa78a21bb519e8 (patch) | |
tree | dfeb2857ef051b865322ed11230c17d4b0c50675 | |
parent | db53376b1f0181226e90d8f1b8f2f10ea9faa62a (diff) | |
parent | 8721658959cb0bef39ea9e0f34532ff5dc7c5276 (diff) | |
download | CMake-eec8a7b68104ce67ed674e319efa78a21bb519e8.zip CMake-eec8a7b68104ce67ed674e319efa78a21bb519e8.tar.gz CMake-eec8a7b68104ce67ed674e319efa78a21bb519e8.tar.bz2 |
Merge branch 'cpack-nsis-uninstaller' into release-3.24
Merge-request: !7774
-rw-r--r-- | Modules/Internal/CPack/NSIS.template.in | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/Modules/Internal/CPack/NSIS.template.in b/Modules/Internal/CPack/NSIS.template.in index 42a44d9..21753af 100644 --- a/Modules/Internal/CPack/NSIS.template.in +++ b/Modules/Internal/CPack/NSIS.template.in @@ -931,11 +931,20 @@ Function .onInit ;Run the uninstaller uninst: ClearErrors - StrCpy $2 $0 1 - StrCmp '"' $2 0 +3 ; checks if string is quoted (CPack before v3.20.6 did not quote it) - ExecWait '$0 /S' - Goto +2 - ExecWait '"$0" /S' + # $0 should _always_ be quoted, however older versions of CMake did not + # do this. We'll conditionally remove the begin/end quotes. + # Remove first char if quote + StrCpy $2 $0 1 0 # copy first char + StrCmp $2 "$\"" 0 +2 # if char is quote + StrCpy $0 $0 "" 1 # remove first char + # Remove last char if quote + StrCpy $2 $0 1 -1 # copy last char + StrCmp $2 "$\"" 0 +2 # if char is quote + StrCpy $0 $0 -1 # remove last char + + StrLen $2 "\@CPACK_NSIS_UNINSTALL_NAME@.exe" + StrCpy $3 $0 -$2 # remove "\@CPACK_NSIS_UNINSTALL_NAME@.exe" from UninstallString to get path + ExecWait '"$0" /S _?=$3' ;Do not copy the uninstaller to a temp file IfErrors uninst_failed inst uninst_failed: |