summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Cedilnik <andy.cedilnik@kitware.com>2006-03-01 20:00:07 (GMT)
committerAndy Cedilnik <andy.cedilnik@kitware.com>2006-03-01 20:00:07 (GMT)
commitb1b052fd23b8d5335d3db726fcd679ef30ff4ecd (patch)
tree519da2f2aabad5ebc71d654580fd09280c61e93e
parent4077d6d80cb446f5c4e3c8739ae05375c6e62540 (diff)
downloadCMake-b1b052fd23b8d5335d3db726fcd679ef30ff4ecd.zip
CMake-b1b052fd23b8d5335d3db726fcd679ef30ff4ecd.tar.gz
CMake-b1b052fd23b8d5335d3db726fcd679ef30ff4ecd.tar.bz2
ENH: Several changes to for NSIS
-rw-r--r--Modules/CPack.cmake4
-rw-r--r--Modules/NSIS.template.in41
2 files changed, 31 insertions, 14 deletions
diff --git a/Modules/CPack.cmake b/Modules/CPack.cmake
index 26b3c65..c0dd774 100644
--- a/Modules/CPack.cmake
+++ b/Modules/CPack.cmake
@@ -31,6 +31,10 @@ cpack_set_if_not_set(CPACK_RESOURCE_FILE_README
cpack_set_if_not_set(CPACK_RESOURCE_FILE_WELCOME
"${CMAKE_ROOT}/Templates/CPack.GenericWelcome.txt")
+IF(CPACK_NSIS_MODIFY_PATH)
+ SET(CPACK_NSIS_MODIFY_PATH ON)
+ENDIF(CPACK_NSIS_MODIFY_PATH)
+
# <project>-<major>.<minor>.<patch>-<release>-<platform>.<pkgtype>
cpack_set_if_not_set(CPACK_PACKAGE_FILE_NAME
"${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}-${CMAKE_SYSTEM_NAME}")
diff --git a/Modules/NSIS.template.in b/Modules/NSIS.template.in
index 87f8c66..8ed84d4 100644
--- a/Modules/NSIS.template.in
+++ b/Modules/NSIS.template.in
@@ -12,6 +12,7 @@
Var MUI_TEMP
Var STARTMENU_FOLDER
+ Var SV_ALLUSERS
;--------------------------------
;Include Modern UI
@@ -23,7 +24,17 @@
;--------------------------------
; determine admin versus local install
+; Is install for "AllUsers" or "JustMe"?
+; Default to "JustMe" - set to "AllUsers" if admin or on Win9x
+; This function is used for the very first "custom page" of the installer.
+; This custom page does not show up visibly, but it executes prior to the
+; first visible page and sets up $INSTDIR properly...
+; Choose different default installation folder based on SV_ALLUSERS...
+; "Program Files" for AllUsers, "My Documents" for JustMe...
+
Function .onInit
+ StrCpy $SV_ALLUSERS "JustMe"
+ StrCpy $INSTDIR "$DOCUMENTS\@CPACK_PACKAGE_INSTALL_DIRECTORY@"
ClearErrors
UserInfo::GetName
@@ -34,19 +45,23 @@ Function .onInit
StrCmp $1 "Admin" 0 +3
SetShellVarContext all
;MessageBox MB_OK 'User "$0" is in the Admin group'
+ StrCpy $SV_ALLUSERS "AllUsers"
Goto done
StrCmp $1 "Power" 0 +3
SetShellVarContext all
;MessageBox MB_OK 'User "$0" is in the Power Users group'
+ StrCpy $SV_ALLUSERS "AllUsers"
Goto done
- noLM:
- ;Get installation folder from registry if available
+ noLM:
+ StrCpy $SV_ALLUSERS "AllUsers"
+ ;Get installation folder from registry if available
- done:
+ done:
+ StrCmp $SV_ALLUSERS "AllUsers" 0 +2
+ StrCpy $INSTDIR "$PROGRAMFILES\@CPACK_PACKAGE_INSTALL_DIRECTORY@"
FunctionEnd
-
;--------------------------------
;General
@@ -331,13 +346,11 @@ FunctionEnd
Section "Add to path"
Push $INSTDIR\bin
- Call AddToPath
+ StrCmp "@CPACK_NSIS_MODIFY_PATH@" "ON" 0 +2
+ Call AddToPath
SectionEnd
-Section
-SectionEnd
-
-Section "Dummy Section" SecDummy
+Section "Installer Section" InstSection
;Use the entire tree produced by the INSTALL target. Keep the
;list of directories here in sync with the RMDir commands below.
@@ -383,10 +396,10 @@ Function un.onInit
;MessageBox MB_OK 'User "$0" is in the Power Users group'
Goto done
- noLM:
- ;Get installation folder from registry if available
+ noLM:
+ ;Get installation folder from registry if available
- done:
+ done:
FunctionEnd
;--------------------------------
@@ -431,8 +444,8 @@ Section "Uninstall"
DeleteRegKey /ifempty SHCTX "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@"
Push $INSTDIR\bin
- Call un.RemoveFromPath
-
+ StrCmp "@CPACK_NSIS_MODIFY_PATH@" "ON" 0 +2
+ Call un.RemoveFromPath
SectionEnd