[Cmake-commits] CMake branch, next, updated. v2.8.5-1343-gff049a3

Clinton Stimpson clinton at elemtech.com
Fri Jul 29 14:24:08 EDT 2011


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, next has been updated
       via  ff049a3e8ed0ad4dbc79bc647b9a35f7fa914eea (commit)
       via  e6d2bcfde2c0cd254ce1461e368ff79eb0010473 (commit)
      from  cbd8aca5c680925359fb953287fbace472a4e3cb (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ff049a3e8ed0ad4dbc79bc647b9a35f7fa914eea
commit ff049a3e8ed0ad4dbc79bc647b9a35f7fa914eea
Merge: cbd8aca e6d2bcf
Author:     Clinton Stimpson <clinton at elemtech.com>
AuthorDate: Fri Jul 29 14:24:02 2011 -0400
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Fri Jul 29 14:24:02 2011 -0400

    Merge topic 'cpack-nsis-multi-installs' into next
    
    e6d2bcf CPack/NSIS: Fix reinstall and multiple install issues when using components.


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e6d2bcfde2c0cd254ce1461e368ff79eb0010473
commit e6d2bcfde2c0cd254ce1461e368ff79eb0010473
Author:     Clinton Stimpson <clinton at elemtech.com>
AuthorDate: Fri Jul 29 12:23:22 2011 -0600
Commit:     Clinton Stimpson <clinton at elemtech.com>
CommitDate: Fri Jul 29 12:23:22 2011 -0600

    CPack/NSIS: Fix reinstall and multiple install issues when using components.
    
    Fix NSIS template to more thoroughly use CPACK_PACKAGE_INSTALL_REGISTRY_KEY.
    This allows different versions of software to have a separate sections in the
    registry to keep track of things (installed components, and uninstall stuff).
    
    Change default of CPACK_PACKAGE_INSTALL_REGISTRY_KEY to follow the value of
    CPACK_PACKAGE_INSTALL_DIRECTORY so if an installation overwrites another installation,
    the proper registry entries are more likely to be overwritten.
    
    Fix CPack/NSIS generator to not insert code in the NSIS template to skip installation
    of already installed components.  This enables a repair like behavior and also enables
    installing patch releases on top of an older installation.

diff --git a/Modules/CPack.cmake b/Modules/CPack.cmake
index bf52b25..d82de93 100644
--- a/Modules/CPack.cmake
+++ b/Modules/CPack.cmake
@@ -322,7 +322,7 @@ cpack_set_if_not_set(CPACK_PACKAGE_FILE_NAME
 cpack_set_if_not_set(CPACK_PACKAGE_INSTALL_DIRECTORY
   "${CPACK_PACKAGE_NAME} ${CPACK_PACKAGE_VERSION}")
 cpack_set_if_not_set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY
-  "${CPACK_PACKAGE_NAME} ${CPACK_PACKAGE_VERSION}")
+  "${CPACK_PACKAGE_INSTALL_DIRECTORY}")
 cpack_set_if_not_set(CPACK_PACKAGE_DEFAULT_LOCATION "/")
 cpack_set_if_not_set(CPACK_PACKAGE_RELOCATABLE "true")
 
diff --git a/Modules/NSIS.template.in b/Modules/NSIS.template.in
index df9d2d3..6259a5b 100644
--- a/Modules/NSIS.template.in
+++ b/Modules/NSIS.template.in
@@ -74,7 +74,7 @@ Var AR_RegFlags
    
   ClearErrors
   ;Reading component status from registry
-  ReadRegDWORD $AR_RegFlags HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@\Components\${SecName}" "Installed"
+  ReadRegDWORD $AR_RegFlags HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@\Components\${SecName}" "Installed"
   IfErrors "default_${SecName}"
     ;Status will stay default if registry value not found
     ;(component was never installed)
@@ -107,13 +107,13 @@ Var AR_RegFlags
     ;Section is not selected:
     ;Calling Section uninstall macro and writing zero installed flag
     !insertmacro "Remove_${${SecName}}"
-    WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@\Components\${SecName}" \
+    WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@\Components\${SecName}" \
   "Installed" 0
     Goto "exit_${SecName}"
  
  "leave_${SecName}:"
     ;Section is selected:
-    WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@\Components\${SecName}" \
+    WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@\Components\${SecName}" \
   "Installed" 1
  
  "exit_${SecName}:"
@@ -493,7 +493,7 @@ Function ConditionalAddToRegisty
   Pop $0
   Pop $1
   StrCmp "$0" "" ConditionalAddToRegisty_EmptyString
-    WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" \
+    WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" \
     "$1" "$0"
     ;MessageBox MB_OK "Set Registry: '$1' to '$0'"
     DetailPrint "Set install registry entry: '$1' to '$0'"
@@ -804,17 +804,17 @@ FunctionEnd
 
 Section "Uninstall"
   ReadRegStr $START_MENU SHCTX \
-   "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" "StartMenu"
+   "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "StartMenu"
   ;MessageBox MB_OK "Start menu is in: $START_MENU"
   ReadRegStr $DO_NOT_ADD_TO_PATH SHCTX \
-    "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" "DoNotAddToPath"
+    "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "DoNotAddToPath"
   ReadRegStr $ADD_TO_PATH_ALL_USERS SHCTX \
-    "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" "AddToPathAllUsers"
+    "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "AddToPathAllUsers"
   ReadRegStr $ADD_TO_PATH_CURRENT_USER SHCTX \
-    "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" "AddToPathCurrentUser"
+    "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "AddToPathCurrentUser"
   ;MessageBox MB_OK "Add to path: $DO_NOT_ADD_TO_PATH all users: $ADD_TO_PATH_ALL_USERS"
   ReadRegStr $INSTALL_DESKTOP SHCTX \
-    "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" "InstallToDesktop"
+    "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "InstallToDesktop"
   ;MessageBox MB_OK "Install to desktop: $INSTALL_DESKTOP "
 
 @CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS@
@@ -831,7 +831,7 @@ Section "Uninstall"
 
   ;Remove the uninstaller itself.
   Delete "$INSTDIR\Uninstall.exe"
-  DeleteRegKey SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@"
+  DeleteRegKey SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@"
 
   ;Remove the installation directory if it is empty.
   RMDir "$INSTDIR"
diff --git a/Source/CPack/cmCPackNSISGenerator.cxx b/Source/CPack/cmCPackNSISGenerator.cxx
index e5fe575..7bb46a7 100644
--- a/Source/CPack/cmCPackNSISGenerator.cxx
+++ b/Source/CPack/cmCPackNSISGenerator.cxx
@@ -672,9 +672,6 @@ CreateComponentDescription(cmCPackComponent *component,
     }
   componentCode += "  SetOutPath \"$INSTDIR\"\n";
 
-  componentCode += "  IntCmp $" + component->Name 
-    + "_was_installed ${SF_SELECTED} noinstall_" + component->Name + "\n";
-
   // Create the actual installation commands
   if (component->IsDownloaded)
     {
@@ -824,7 +821,6 @@ CreateComponentDescription(cmCPackComponent *component,
     componentCode += "  File /r \"${INST_DIR}\\" +
       component->Name + "\\*.*\"\n";
     }
-  componentCode += "  noinstall_" + component->Name + ":\n";
   componentCode += "SectionEnd\n";
 
   // Macro used to remove the component

-----------------------------------------------------------------------

Summary of changes:
 Modules/CPack.cmake                   |    2 +-
 Modules/NSIS.template.in              |   20 ++++++++++----------
 Source/CPack/cmCPackNSISGenerator.cxx |    4 ----
 3 files changed, 11 insertions(+), 15 deletions(-)


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list