summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2017-04-04 13:14:36 -0400
committerBrad King <brad.king@kitware.com>2017-04-04 13:41:54 -0400
commit1b1ad2a2f4c1fa1369be7f192d1fc1a790aa5503 (patch)
treea105e7e7ed4dcf3aef38d8ff611397f68f56f6fe
parent1180fdb6565dcc5f94930a399feed803e7871e46 (diff)
downloadcmake-1b1ad2a2f4c1fa1369be7f192d1fc1a790aa5503.tar.gz
Revert "CPack/NSIS: Sign the uninstaller"
This reverts commit 09475c29 (CPack/NSIS: Sign the uninstaller, 2017-03-01) and follow-up commit e1ee7b43 (CPack/NSIS: Avoid a race condition when generating the installer, 2017-03-22). The signing implementation does not work on Linux for a couple reasons: * The script tries to run the temporary uninstaller executable, but of course this cannot be done except on a Windows host. * The `${NSISDIR}\makensis` file does not exist because `makensis` is installed elsewhere. The result is that existing package configurations can break on Linux. For example, the CPackComponents test fails. Revert the feature until an alternative implementation approach can be found.
-rw-r--r--Help/release/dev/cpack-sign-uninstaller.rst5
-rw-r--r--Modules/CPackNSIS.cmake4
-rw-r--r--Modules/NSIS.template.in46
3 files changed, 1 insertions, 54 deletions
diff --git a/Help/release/dev/cpack-sign-uninstaller.rst b/Help/release/dev/cpack-sign-uninstaller.rst
deleted file mode 100644
index ff2b402d81..0000000000
--- a/Help/release/dev/cpack-sign-uninstaller.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-cpack-sign_uninstaller
-----------------------
-
-* The :module:`CPackNSIS` module learned to sign the uninstaller
- when using :variable:`CPACK_NSIS_SIGN_UNINSTALLER` variable.
diff --git a/Modules/CPackNSIS.cmake b/Modules/CPackNSIS.cmake
index 37fedf335c..18d1871571 100644
--- a/Modules/CPackNSIS.cmake
+++ b/Modules/CPackNSIS.cmake
@@ -133,10 +133,6 @@
# "doc/cmake-@CMake_VERSION_MAJOR@.@CMake_VERSION_MINOR@/cmake.html"
# "CMake Help" "https://cmake.org" "CMake Web Site")
#
-# .. variable:: CPACK_NSIS_SIGN_UNINSTALLER
-#
-# Specify a command to use for signing the uninstaller. The command will
-# be invoked a path to the uninstaller as its only argument.
#FIXME we should put NSIS specific code here
#FIXME but I'm not doing it because I'm not able to test it...
diff --git a/Modules/NSIS.template.in b/Modules/NSIS.template.in
index 4f6aa75181..9001888da1 100644
--- a/Modules/NSIS.template.in
+++ b/Modules/NSIS.template.in
@@ -29,34 +29,6 @@
;--------------------------------
;General
-!ifdef INNER
- OutFile "${TEMPINSTALLER}.exe"
- SetCompress off ; for speed
-!else
- ; Call makensis again, defining INNER. This writes an installer for us which, when
- ; it is invoked, will just write the uninstaller to some location, and then exit.
- ; Be sure to substitute the name of this script here.
- !tempfile TEMPINSTALLER
- !tempfile TEMPUNINSTALLER
- !system "$\"${NSISDIR}\makensis$\" /DTEMPINSTALLER=$\"${TEMPINSTALLER}$\" /DTEMPUNINSTALLER=$\"${TEMPUNINSTALLER}$\" /DINNER $\"@CPACK_TEMPORARY_DIRECTORY@/../project.nsi$\"" = 0
-
- ; So now run that installer we just created as %TEMP%\tempinstaller.exe. Since it
- ; calls quit the return value isn't zero.
-
- !system "$\"${TEMPINSTALLER}.exe$\"" = 2
-
- ; That will have written an uninstaller binary for us. Now we sign it with your
- ; favourite code signing tool.
-
- !tempfile INCEXIST
- !system 'if exist "@CPACK_NSIS_SIGN_UNINSTALLER@" echo !define HAVE_SIGN_UNINST > "${INCEXIST}"'
- !include "${INCEXIST}"
- !delfile "${INCEXIST}"
- !ifdef HAVE_SIGN_UNINST
- !system '"@CPACK_NSIS_SIGN_UNINSTALLER@" "${TEMPUNINSTALLER}.exe"' = 0
- !endif
-
- ; Good. Now we can carry on writing the real installer.
;Name and file
Name "@CPACK_NSIS_PACKAGE_NAME@"
@@ -64,7 +36,6 @@
;Set compression
SetCompressor @CPACK_NSIS_COMPRESSOR@
-!endif
;Require administrator access
RequestExecutionLevel admin
@@ -588,10 +559,8 @@ FunctionEnd
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
-!ifdef INNER
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
-!endif
;--------------------------------
;Languages
@@ -673,10 +642,7 @@ Section "-Core installation"
WriteRegStr SHCTX "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "" $INSTDIR
;Create uninstaller
-!ifndef INNER
- ; this packages the signed uninstaller
- File "/oname=Uninstall.exe" "${TEMPUNINSTALLER}.exe"
-!endif
+ WriteUninstaller "$INSTDIR\Uninstall.exe"
Push "DisplayName"
Push "@CPACK_NSIS_DISPLAY_NAME@"
Call ConditionalAddToRegisty
@@ -835,7 +801,6 @@ FunctionEnd
;--------------------------------
;Uninstaller Section
-!ifdef INNER
Section "Uninstall"
ReadRegStr $START_MENU SHCTX \
"Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "StartMenu"
@@ -921,7 +886,6 @@ Section "Uninstall"
Call un.RemoveFromPath
doNotRemoveFromPath:
SectionEnd
-!endif
;--------------------------------
; determine admin versus local install
@@ -934,14 +898,6 @@ SectionEnd
; "Program Files" for AllUsers, "My Documents" for JustMe...
Function .onInit
-!ifdef INNER
- ; If INNER is defined, then we aren't supposed to do anything except write out
- ; the installer. This is better than processing a command line option as it means
- ; this entire code path is not present in the final (real) installer.
-
- WriteUninstaller "${TEMPUNINSTALLER}.exe"
- Quit ; just bail out quickly when running the "inner" installer
-!endif
StrCmp "@CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL@" "ON" 0 inst
ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "UninstallString"