diff options
| author | Brad King <brad.king@kitware.com> | 2022-10-10 14:43:41 (GMT) |
|---|---|---|
| committer | Brad King <brad.king@kitware.com> | 2022-10-10 14:43:41 (GMT) |
| commit | d82e2d557e7abca744fbfccdb06c2ad18b8f4e7a (patch) | |
| tree | b3d1662b7be51911dfe5b7040fa56ecb44e7ea6b /Modules | |
| parent | 34a6da34b8bb909486cda9298f2d7fbc88ed6e7f (diff) | |
| parent | 8721658959cb0bef39ea9e0f34532ff5dc7c5276 (diff) | |
| download | CMake-d82e2d557e7abca744fbfccdb06c2ad18b8f4e7a.zip CMake-d82e2d557e7abca744fbfccdb06c2ad18b8f4e7a.tar.gz CMake-d82e2d557e7abca744fbfccdb06c2ad18b8f4e7a.tar.bz2 | |
Merge branch 'cpack-nsis-uninstaller' into release-3.23
Merge-request: !7774
Diffstat (limited to 'Modules')
| -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 23c45c7..701366e 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: |
