189 lines
4.4 KiB
Plaintext
189 lines
4.4 KiB
Plaintext
; CMake install script designed for a nmake build
|
|
|
|
;--------------------------------
|
|
; You must define these values
|
|
|
|
!define VERSION "@CMake_VERSION@"
|
|
!define PATCH "@CMake_VERSION_PATCH@"
|
|
!define INST_DIR "@CMake_INSTALL_TOP@"
|
|
|
|
;--------------------------------
|
|
;Variables
|
|
|
|
Var MUI_TEMP
|
|
Var STARTMENU_FOLDER
|
|
|
|
;--------------------------------
|
|
;Include Modern UI
|
|
|
|
!include "MUI.nsh"
|
|
|
|
;Default installation folder
|
|
InstallDir "$PROGRAMFILES\CMake ${VERSION}"
|
|
|
|
;--------------------------------
|
|
; determine admin versus local install
|
|
Function .onInit
|
|
|
|
ClearErrors
|
|
UserInfo::GetName
|
|
IfErrors noLM
|
|
Pop $0
|
|
UserInfo::GetAccountType
|
|
Pop $1
|
|
StrCmp $1 "Admin" 0 +3
|
|
SetShellVarContext all
|
|
;MessageBox MB_OK 'User "$0" is in the Admin group'
|
|
Goto done
|
|
StrCmp $1 "Power" 0 +3
|
|
SetShellVarContext all
|
|
;MessageBox MB_OK 'User "$0" is in the Power Users group'
|
|
Goto done
|
|
|
|
noLM:
|
|
;Get installation folder from registry if available
|
|
|
|
done:
|
|
FunctionEnd
|
|
|
|
|
|
;--------------------------------
|
|
;General
|
|
|
|
;Name and file
|
|
Name "CMake ${VERSION}"
|
|
OutFile "@PROJECT_BINARY_DIR@\cmake-${VERSION}.${PATCH}-win32.exe"
|
|
|
|
;--------------------------------
|
|
;Interface Settings
|
|
|
|
!define MUI_HEADERIMAGE
|
|
!define MUI_ABORTWARNING
|
|
|
|
;--------------------------------
|
|
; Define some macro setting for the gui
|
|
|
|
!define MUI_HEADERIMAGE_BITMAP "@PROJECT_SOURCE_DIR@\Utilities\Release\@PROJECT_NAME@Install.bmp"
|
|
|
|
;--------------------------------
|
|
;Pages
|
|
|
|
!insertmacro MUI_PAGE_DIRECTORY
|
|
|
|
;Start Menu Folder Page Configuration
|
|
!define MUI_STARTMENUPAGE_REGISTRY_ROOT "SHCTX"
|
|
!define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\Kitware\CMake ${VERSION}"
|
|
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
|
|
!insertmacro MUI_PAGE_STARTMENU Application $STARTMENU_FOLDER
|
|
|
|
!insertmacro MUI_PAGE_INSTFILES
|
|
|
|
!insertmacro MUI_UNPAGE_CONFIRM
|
|
!insertmacro MUI_UNPAGE_INSTFILES
|
|
|
|
;--------------------------------
|
|
;Languages
|
|
|
|
!insertmacro MUI_LANGUAGE "English"
|
|
|
|
;--------------------------------
|
|
;Installer Sections
|
|
|
|
Section "Dummy Section" SecDummy
|
|
|
|
;Use the entire tree produced by the INSTALL target. Keep the
|
|
;list of directories here in sync with the RMDir commands below.
|
|
SetOutPath "$INSTDIR"
|
|
File /r "${INST_DIR}\bin"
|
|
File /r "${INST_DIR}\doc"
|
|
File /r "${INST_DIR}\share"
|
|
|
|
@NSIS_EXTRA_COMMANDS@
|
|
|
|
;Store installation folder
|
|
WriteRegStr SHCTX "Software\Kitware\CMake ${VERSION}" "" $INSTDIR
|
|
|
|
;Create uninstaller
|
|
WriteUninstaller "$INSTDIR\Uninstall.exe"
|
|
|
|
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
|
|
|
|
;Create shortcuts
|
|
CreateDirectory "$SMPROGRAMS\$STARTMENU_FOLDER"
|
|
CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\cmake.lnk" "$INSTDIR\bin\CMakeSetup.exe"
|
|
CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Uninstall.lnk" "$INSTDIR\Uninstall.exe"
|
|
|
|
!insertmacro MUI_STARTMENU_WRITE_END
|
|
|
|
SectionEnd
|
|
|
|
|
|
;--------------------------------
|
|
; determine admin versus local install
|
|
Function un.onInit
|
|
|
|
ClearErrors
|
|
UserInfo::GetName
|
|
IfErrors noLM
|
|
Pop $0
|
|
UserInfo::GetAccountType
|
|
Pop $1
|
|
StrCmp $1 "Admin" 0 +3
|
|
SetShellVarContext all
|
|
;MessageBox MB_OK 'User "$0" is in the Admin group'
|
|
Goto done
|
|
StrCmp $1 "Power" 0 +3
|
|
SetShellVarContext all
|
|
;MessageBox MB_OK 'User "$0" is in the Power Users group'
|
|
Goto done
|
|
|
|
noLM:
|
|
;Get installation folder from registry if available
|
|
|
|
done:
|
|
FunctionEnd
|
|
|
|
;--------------------------------
|
|
;Uninstaller Section
|
|
|
|
Section "Uninstall"
|
|
|
|
;Remove directories we installed.
|
|
;Keep the list of directories here in sync with the File commands above.
|
|
RMDir /r "$INSTDIR\bin"
|
|
RMDir /r "$INSTDIR\doc"
|
|
RMDir /r "$INSTDIR\share"
|
|
|
|
;Remove the uninstaller itself.
|
|
Delete "$INSTDIR\Uninstall.exe"
|
|
|
|
;Remove the installation directory if it is empty.
|
|
RMDir "$INSTDIR"
|
|
|
|
; Remove the registry entries.
|
|
DeleteRegKey SHCTX "Software\Kitware\CMake ${VERSION}"
|
|
|
|
!insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP
|
|
|
|
Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk"
|
|
Delete "$SMPROGRAMS\$MUI_TEMP\cmake.lnk"
|
|
|
|
;Delete empty start menu parent diretories
|
|
StrCpy $MUI_TEMP "$SMPROGRAMS\$MUI_TEMP"
|
|
|
|
startMenuDeleteLoop:
|
|
ClearErrors
|
|
RMDir $MUI_TEMP
|
|
GetFullPathName $MUI_TEMP "$MUI_TEMP\.."
|
|
|
|
IfErrors startMenuDeleteLoopDone
|
|
|
|
StrCmp $MUI_TEMP $SMPROGRAMS startMenuDeleteLoopDone startMenuDeleteLoop
|
|
startMenuDeleteLoopDone:
|
|
|
|
DeleteRegKey /ifempty SHCTX "Software\Kitware\CMake ${VERSION}"
|
|
|
|
SectionEnd
|
|
|
|
|