| ; 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 |
| |
| |