2008-02-08 21:10:44 +00:00
/ *
MultiUser.nsh
Installer configuration for multi- user Windows environments
2021-01-01 20:27:52 +00:00
Copyright 2008- 2021 Joost Verburg
2008-02-08 21:10:44 +00:00
* /
!ifndef MULTIUSER_INCLUDED
2020-03-24 02:01:11 +00:00
!define MULTIUSER_INCLUDED 20200319
!verbose push 3
2008-02-08 21:10:44 +00:00
;Standard NSIS header files
!ifdef MULTIUSER_MUI
!include MUI2.nsh
!endif
!include LogicLib.nsh
!include WinVer.nsh
!include FileFunc.nsh
2020-03-24 02:01:11 +00:00
!if ${NSIS_PTR_SIZE} > 4
!define /IfNDef MULTIUSER_MINWIN 0x501
!else
!define /IfNDef MULTIUSER_MINWIN 0x400
!endif
2008-02-08 21:10:44 +00:00
;Variables
Var MultiUser.Privileges
Var MultiUser.InstallMode
;Command line installation mode setting
!ifdef MULTIUSER_INSTALLMODE_COMMANDLINE
!include StrFunc.nsh
2008-05-01 20:31:23 +00:00
!ifndef StrStr_INCLUDED
${StrStr}
!endif
2008-03-23 21:00:53 +00:00
!ifndef MULTIUSER_NOUNINSTALL
2008-05-01 20:31:23 +00:00
!ifndef UnStrStr_INCLUDED
${UnStrStr}
!endif
2008-02-08 21:10:44 +00:00
!endif
Var MultiUser.Parameters
Var MultiUser.Result
!endif
;Installation folder stored in registry
!ifdef MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY & MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME
Var MultiUser.InstDir
!endif
!ifdef MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY & MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME
Var MultiUser.DefaultKeyValue
!endif
;Windows Vista UAC setting
!if " ${MULTIUSER_EXECUTIONLEVEL} " == Admin
RequestExecutionLevel admin
!define MULTIUSER_EXECUTIONLEVEL_ALLUSERS
!else if " ${MULTIUSER_EXECUTIONLEVEL} " == Power
RequestExecutionLevel admin
!define MULTIUSER_EXECUTIONLEVEL_ALLUSERS
!else if " ${MULTIUSER_EXECUTIONLEVEL} " == Highest
RequestExecutionLevel highest
!define MULTIUSER_EXECUTIONLEVEL_ALLUSERS
!else
RequestExecutionLevel user
2018-12-07 21:04:57 +00:00
!ifndef MULTIUSER_EXECUTIONLEVEL
!warning " MULTIUSER_EXECUTIONLEVEL not set! "
!endif
2008-02-08 21:10:44 +00:00
!endif
/ *
Install modes
* /
!macro MULTIUSER_INSTALLMODE_ALLUSERS UNINSTALLER_PREFIX UNINSTALLER_FUNCPREFIX
;Install mode initialization - per-machine
${ifnot} ${IsNT}
${orif} $MultiUser .Privileges == " Admin "
${orif} $MultiUser .Privileges == " Power "
StrCpy $MultiUser .InstallMode AllUsers
SetShellVarContext all
2008-05-28 14:34:00 +00:00
!if " ${UNINSTALLER_PREFIX} " != UN
;Set default installation location for installer
!ifdef MULTIUSER_INSTALLMODE_INSTDIR
2016-12-26 23:01:41 +00:00
!ifdef MULTIUSER_USE_PROGRAMFILES64
StrCpy $INSTDIR " $PROGRAMFILES64 \${MULTIUSER_INSTALLMODE_INSTDIR} "
!else
StrCpy $INSTDIR " $PROGRAMFILES \${MULTIUSER_INSTALLMODE_INSTDIR} "
!endif
2008-05-28 14:34:00 +00:00
!endif
2008-02-08 21:10:44 +00:00
!endif
!ifdef MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY & MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME
ReadRegStr $MultiUser .InstDir HKLM " ${MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY} " " ${MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME} "
${if} $MultiUser .InstDir != " "
StrCpy $INSTDIR $MultiUser .InstDir
${endif}
!endif
2008-03-29 18:22:54 +00:00
!ifdef MULTIUSER_INSTALLMODE_${UNINSTALLER_PREFIX} FUNCTION
2008-02-08 21:10:44 +00:00
Call " ${MULTIUSER_INSTALLMODE_${UNINSTALLER_PREFIX}FUNCTION} "
!endif
${endif}
!macroend
!macro MULTIUSER_INSTALLMODE_CURRENTUSER UNINSTALLER_PREFIX UNINSTALLER_FUNCPREFIX
;Install mode initialization - per-user
2020-03-24 02:01:11 +00:00
!if ${MULTIUSER_MINWIN} < 0x500
${if} ${IsNT}
!endif
2008-02-08 21:10:44 +00:00
StrCpy $MultiUser .InstallMode CurrentUser
SetShellVarContext current
2008-05-28 14:34:00 +00:00
!if " ${UNINSTALLER_PREFIX} " != UN
;Set default installation location for installer
!ifdef MULTIUSER_INSTALLMODE_INSTDIR
2020-03-24 02:01:11 +00:00
!if ${MULTIUSER_MINWIN} < 0x490
2008-05-28 14:34:00 +00:00
${if} ${AtLeastWin2000}
2020-03-24 02:01:11 +00:00
!endif
GetKnownFolderPath $INSTDIR { 5CD7AEE2- 2219- 4A67- B85D- 6C9CE15660CB} ; FOLDERID_UserProgramFiles
StrCmp $INSTDIR " " 0 + 2
StrCpy $INSTDIR " $LocalAppData \Programs " ; Fallback directory
StrCpy $INSTDIR " $INSTDIR \${MULTIUSER_INSTALLMODE_INSTDIR} "
!if ${MULTIUSER_MINWIN} < 0x490
2008-05-28 14:34:00 +00:00
${else}
StrCpy $INSTDIR " $PROGRAMFILES \${MULTIUSER_INSTALLMODE_INSTDIR} "
${endif}
2020-03-24 02:01:11 +00:00
!endif
2008-05-28 14:34:00 +00:00
!endif
2008-02-08 21:10:44 +00:00
!endif
!ifdef MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY & MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME
ReadRegStr $MultiUser .InstDir HKCU " ${MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY} " " ${MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME} "
${if} $MultiUser .InstDir != " "
StrCpy $INSTDIR $MultiUser .InstDir
${endif}
!endif
2020-03-24 02:01:11 +00:00
2008-03-29 18:22:54 +00:00
!ifdef MULTIUSER_INSTALLMODE_${UNINSTALLER_PREFIX} FUNCTION
2008-02-08 21:10:44 +00:00
Call " ${MULTIUSER_INSTALLMODE_${UNINSTALLER_PREFIX}FUNCTION} "
!endif
2020-03-24 02:01:11 +00:00
!if ${MULTIUSER_MINWIN} < 0x500
2008-02-08 21:10:44 +00:00
${endif}
2020-03-24 02:01:11 +00:00
!endif
2008-02-08 21:10:44 +00:00
!macroend
Function MultiUser.InstallMode.AllUsers
!insertmacro MULTIUSER_INSTALLMODE_ALLUSERS " " " "
FunctionEnd
Function MultiUser.InstallMode.CurrentUser
!insertmacro MULTIUSER_INSTALLMODE_CURRENTUSER " " " "
FunctionEnd
!ifndef MULTIUSER_NOUNINSTALL
Function un.MultiUser.InstallMode.AllUsers
!insertmacro MULTIUSER_INSTALLMODE_ALLUSERS UN .un
FunctionEnd
Function un.MultiUser.InstallMode.CurrentUser
!insertmacro MULTIUSER_INSTALLMODE_CURRENTUSER UN .un
FunctionEnd
!endif
/ *
Installer/uninstaller initialization
* /
!macro MULTIUSER_INIT_QUIT UNINSTALLER_FUNCPREFIX
!ifdef MULTIUSER_INIT_${UNINSTALLER_FUNCPREFIX} FUNCTIONQUIT
2020-03-18 21:27:58 +00:00
Call " ${MULTIUSER_INIT_${UNINSTALLER_FUNCPREFIX}FUNCTIONQUIT} "
2008-02-08 21:10:44 +00:00
!else
Quit
!endif
!macroend
2018-12-07 21:04:57 +00:00
!macro MULTIUSER_INIT_TEXTS UNINSTALLER_PREFIX
!if " ${UNINSTALLER_PREFIX} " == " "
!define /ReDef MULTIUSER_TMPSTR_CAPTION " $(^SetupCaption) "
!else
!define /ReDef MULTIUSER_TMPSTR_CAPTION " $(^Name) "
!endif
2008-02-08 21:10:44 +00:00
2020-03-24 02:01:11 +00:00
!define /IfNDef MULTIUSER_INIT_TEXT_ADMINREQUIRED " ${MULTIUSER_TMPSTR_CAPTION} requires administrator privileges. "
!define /IfNDef MULTIUSER_INIT_TEXT_POWERREQUIRED " ${MULTIUSER_TMPSTR_CAPTION} requires at least Power User privileges. "
!define /IfNDef MULTIUSER_INIT_TEXT_ALLUSERSNOTPOSSIBLE " Your user account does not have sufficient privileges to install $(^Name) for all users of this computer. "
2008-02-08 21:10:44 +00:00
2018-12-07 21:04:57 +00:00
!undef MULTIUSER_TMPSTR_CAPTION
2008-02-08 21:10:44 +00:00
!macroend
!macro MULTIUSER_INIT_CHECKS UNINSTALLER_PREFIX UNINSTALLER_FUNCPREFIX
;Installer initialization - check privileges and set install mode
2018-12-07 21:04:57 +00:00
!insertmacro MULTIUSER_INIT_TEXTS " ${UNINSTALLER_PREFIX} "
2008-02-08 21:10:44 +00:00
UserInfo :: GetAccountType
Pop $MultiUser .Privileges
2020-03-24 02:01:11 +00:00
!if ${MULTIUSER_MINWIN} < 0x500
2008-02-08 21:10:44 +00:00
${if} ${IsNT}
2020-03-24 02:01:11 +00:00
!endif
2008-02-08 21:10:44 +00:00
;Check privileges
!if " ${MULTIUSER_EXECUTIONLEVEL} " == Admin
${if} $MultiUser .Privileges != " Admin "
MessageBox MB_OK | MB_ICONSTOP " ${MULTIUSER_INIT_TEXT_ADMINREQUIRED} "
!insertmacro MULTIUSER_INIT_QUIT " ${UNINSTALLER_FUNCPREFIX} "
${endif}
!else if " ${MULTIUSER_EXECUTIONLEVEL} " == Power
${if} $MultiUser .Privileges != " Power "
${andif} $MultiUser .Privileges != " Admin "
${if} ${AtMostWinXP}
MessageBox MB_OK | MB_ICONSTOP " ${MULTIUSER_INIT_TEXT_POWERREQUIRED} "
${else}
MessageBox MB_OK | MB_ICONSTOP " ${MULTIUSER_INIT_TEXT_ADMINREQUIRED} "
${endif}
!insertmacro MULTIUSER_INIT_QUIT " ${UNINSTALLER_FUNCPREFIX} "
${endif}
!endif
!ifdef MULTIUSER_EXECUTIONLEVEL_ALLUSERS
;Default to per-machine installation if possible
${if} $MultiUser .Privileges == " Admin "
${orif} $MultiUser .Privileges == " Power "
!ifndef MULTIUSER_INSTALLMODE_DEFAULT_CURRENTUSER
Call ${UNINSTALLER_FUNCPREFIX} MultiUser.InstallMode.AllUsers
!else
Call ${UNINSTALLER_FUNCPREFIX} MultiUser.InstallMode.CurrentUser
!endif
!ifdef MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY & MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME
;Set installation mode to setting from a previous installation
!ifndef MULTIUSER_INSTALLMODE_DEFAULT_CURRENTUSER
ReadRegStr $MultiUser .DefaultKeyValue HKLM " ${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY} " " ${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME} "
${if} $MultiUser .DefaultKeyValue == " "
ReadRegStr $MultiUser .DefaultKeyValue HKCU " ${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY} " " ${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME} "
${if} $MultiUser .DefaultKeyValue != " "
2008-03-12 20:39:55 +00:00
Call ${UNINSTALLER_FUNCPREFIX} MultiUser.InstallMode.CurrentUser
2008-02-08 21:10:44 +00:00
${endif}
${endif}
!else
ReadRegStr $MultiUser .DefaultKeyValue HKCU " ${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY} " " ${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME} "
${if} $MultiUser .DefaultKeyValue == " "
ReadRegStr $MultiUser .DefaultKeyValue HKLM " ${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY} " " ${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME} "
${if} $MultiUser .DefaultKeyValue != " "
2008-03-12 20:39:55 +00:00
Call ${UNINSTALLER_FUNCPREFIX} MultiUser.InstallMode.AllUsers
2008-02-08 21:10:44 +00:00
${endif}
${endif}
!endif
!endif
${else}
Call ${UNINSTALLER_FUNCPREFIX} MultiUser.InstallMode.CurrentUser
${endif}
!else
Call ${UNINSTALLER_FUNCPREFIX} MultiUser.InstallMode.CurrentUser
!endif
!ifdef MULTIUSER_INSTALLMODE_COMMANDLINE
;Check for install mode setting on command line
$ { ${UNINSTALLER_FUNCPREFIX} GetParameters} $MultiUser .Parameters
$ { ${UNINSTALLER_PREFIX} StrStr} $MultiUser .Result $MultiUser .Parameters " /CurrentUser "
${if} $MultiUser .Result != " "
Call ${UNINSTALLER_FUNCPREFIX} MultiUser.InstallMode.CurrentUser
${endif}
$ { ${UNINSTALLER_PREFIX} StrStr} $MultiUser .Result $MultiUser .Parameters " /AllUsers "
${if} $MultiUser .Result != " "
${if} $MultiUser .Privileges == " Admin "
${orif} $MultiUser .Privileges == " Power "
Call ${UNINSTALLER_FUNCPREFIX} MultiUser.InstallMode.AllUsers
${else}
MessageBox MB_OK | MB_ICONSTOP " ${MULTIUSER_INIT_TEXT_ALLUSERSNOTPOSSIBLE} "
${endif}
${endif}
!endif
2018-12-07 21:04:57 +00:00
2020-03-24 02:01:11 +00:00
!if ${MULTIUSER_MINWIN} < 0x500
2008-02-08 21:10:44 +00:00
${else}
;Not running Windows NT, per-user installation not supported
Call ${UNINSTALLER_FUNCPREFIX} MultiUser.InstallMode.AllUsers
2018-12-07 21:04:57 +00:00
2008-02-08 21:10:44 +00:00
${endif}
2020-03-24 02:01:11 +00:00
!endif
2008-02-08 21:10:44 +00:00
!macroend
!macro MULTIUSER_INIT
2020-03-24 02:01:11 +00:00
!verbose push 3
!ifdef __UNINSTALL__
!insertmacro MULTIUSER_UNINIT
!else
!insertmacro MULTIUSER_INIT_CHECKS " " " "
!endif
2008-02-08 21:10:44 +00:00
!verbose pop
!macroend
!ifndef MULTIUSER_NOUNINSTALL
!macro MULTIUSER_UNINIT
2020-03-24 02:01:11 +00:00
!verbose push 3
2008-02-08 21:10:44 +00:00
!insertmacro MULTIUSER_INIT_CHECKS Un un.
!verbose pop
!macroend
!endif
/ *
2020-03-24 02:01:11 +00:00
Mode selection page
2008-02-08 21:10:44 +00:00
* /
2020-03-24 02:01:11 +00:00
!macro MULTIUSER_PAGE_FUNCTION_CUSTOM TYPE
!ifmacrodef MUI_PAGE_FUNCTION_CUSTOM
!insertmacro MUI_PAGE_FUNCTION_CUSTOM " ${TYPE} "
!endif
!ifdef MULTIUSER_PAGE_CUSTOMFUNCTION_${TYPE}
Call " ${MULTIUSER_PAGE_CUSTOMFUNCTION_${TYPE}} "
!undef MULTIUSER_PAGE_CUSTOMFUNCTION_${TYPE}
!endif
!macroend
2008-02-08 21:10:44 +00:00
!macro MULTIUSER_INSTALLMODEPAGE_INTERFACE
!ifndef MULTIUSER_INSTALLMODEPAGE_INTERFACE
!define MULTIUSER_INSTALLMODEPAGE_INTERFACE
Var MultiUser.InstallModePage
Var MultiUser.InstallModePage.Text
Var MultiUser.InstallModePage.AllUsers
Var MultiUser.InstallModePage.CurrentUser
2020-03-24 02:01:11 +00:00
2008-02-08 21:10:44 +00:00
!endif
!macroend
2020-03-24 02:01:11 +00:00
!macro MULTIUSER_PAGEDECLARATION_INSTALLMODE UNPREFIX UNIQUEID
2008-02-08 21:10:44 +00:00
2020-03-24 02:01:11 +00:00
!define /ReDef MULTIUSER_${UNPREFIX} INSTALLMODEPAGE " " ; Unlock strings in the language file(s)
2008-02-08 21:10:44 +00:00
!insertmacro MULTIUSER_INSTALLMODEPAGE_INTERFACE
2020-03-24 02:01:11 +00:00
!define /IfNDef MULTIUSER_INSTALLMODEPAGE_TEXT_TOP " $(MULTIUSER_INNERTEXT_INSTALLMODE_TOP) "
!define /IfNDef MULTIUSER_INSTALLMODEPAGE_TEXT_ALLUSERS " $(MULTIUSER_INNERTEXT_INSTALLMODE_ALLUSERS) "
!define /IfNDef MULTIUSER_INSTALLMODEPAGE_TEXT_CURRENTUSER " $(MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER) "
2008-02-08 21:10:44 +00:00
PageEx custom
2020-03-24 02:01:11 +00:00
PageCallbacks MultiUser.InstallModePre_${UNIQUEID} MultiUser.InstallModeLeave_${UNIQUEID}
2008-02-08 21:10:44 +00:00
2020-03-24 02:01:11 +00:00
!define /IfNDef MULTIUSER_INSTALLMODEPAGE_CAPTION " "
Caption " ${MULTIUSER_INSTALLMODEPAGE_CAPTION} "
2008-02-08 21:10:44 +00:00
PageExEnd
2020-03-24 02:01:11 +00:00
!insertmacro MULTIUSER_FUNCTION_INSTALLMODEPAGE MultiUser.InstallModePre_${UNIQUEID} MultiUser.InstallModeLeave_${UNIQUEID}
2008-02-08 21:10:44 +00:00
!undef MULTIUSER_INSTALLMODEPAGE_TEXT_TOP
!undef MULTIUSER_INSTALLMODEPAGE_TEXT_ALLUSERS
!undef MULTIUSER_INSTALLMODEPAGE_TEXT_CURRENTUSER
!macroend
!macro MULTIUSER_PAGE_INSTALLMODE
2020-03-24 02:01:11 +00:00
!verbose push 3
2008-02-08 21:10:44 +00:00
!ifndef MULTIUSER_EXECUTIONLEVEL_ALLUSERS
!error " A mixed-mode installation requires MULTIUSER_EXECUTIONLEVEL to be set to Admin, Power or Highest. "
!endif
2020-03-24 02:01:11 +00:00
!ifmacrodef MUI_PAGE_INIT
!insertmacro MUI_PAGE_INIT
!endif
!insertmacro MULTIUSER_PAGEDECLARATION_INSTALLMODE " " ${__COUNTER__}
2008-02-08 21:10:44 +00:00
!verbose pop
!macroend
!macro MULTIUSER_FUNCTION_INSTALLMODEPAGE PRE LEAVE
2020-03-24 02:01:11 +00:00
!include nsDialogs.nsh
2008-02-08 21:10:44 +00:00
Function " ${PRE} "
2020-03-24 02:01:11 +00:00
!if ${MULTIUSER_MINWIN} < 0x500
2008-02-08 21:10:44 +00:00
${ifnot} ${IsNT}
Abort
${endif}
2020-03-24 02:01:11 +00:00
!endif
2008-02-08 21:10:44 +00:00
${if} $MultiUser .Privileges != " Power "
${andif} $MultiUser .Privileges != " Admin "
Abort
${endif}
2020-03-24 02:01:11 +00:00
!insertmacro MULTIUSER_PAGE_FUNCTION_CUSTOM PRE
!ifmacrodef MUI_HEADER_TEXT_PAGE
!insertmacro MUI_HEADER_TEXT_PAGE $ ( MULTIUSER_TEXT_INSTALLMODE_TITLE) $ ( MULTIUSER_TEXT_INSTALLMODE_SUBTITLE)
!endif
2008-12-20 08:17:15 +00:00
nsDialogs :: Create 1018
2008-02-08 21:10:44 +00:00
Pop $MultiUser .InstallModePage
2020-03-24 02:01:11 +00:00
${NSD_CreateLabel} 0 2u 100% 42u " ${MULTIUSER_INSTALLMODEPAGE_TEXT_TOP} "
2008-02-08 21:10:44 +00:00
Pop $MultiUser .InstallModePage.Text
2020-03-24 02:01:11 +00:00
${NSD_CreateRadioButton} 15u 50u - 15u 10u " ${MULTIUSER_INSTALLMODEPAGE_TEXT_ALLUSERS} "
2008-02-08 21:10:44 +00:00
Pop $MultiUser .InstallModePage.AllUsers
2020-03-24 02:01:11 +00:00
!ifdef MULTIUSER_INSTALLMODEPAGE_SHOWUSERNAME
!ifdef NOSYSTEMCALLS
ReadEnvStr $0 USERNAME
!else
System :: Call 'ADVAPI32::GetUserName(t""r0,*i${NSIS_MAX_STRLEN})'
!endif
StrCmp $0 " " + 2
StrCpy $0 " ($0) "
${NSD_CreateRadioButton} 15u 70u - 15u 10u " ${MULTIUSER_INSTALLMODEPAGE_TEXT_CURRENTUSER}$0 "
!else
${NSD_CreateRadioButton} 15u 70u - 15u 10u " ${MULTIUSER_INSTALLMODEPAGE_TEXT_CURRENTUSER} "
!endif
2008-02-08 21:10:44 +00:00
Pop $MultiUser .InstallModePage.CurrentUser
2020-03-24 02:01:11 +00:00
2008-02-08 21:10:44 +00:00
${if} $MultiUser .InstallMode == " AllUsers "
SendMessage $MultiUser .InstallModePage.AllUsers ${BM_SETCHECK} ${BST_CHECKED} 0
${else}
SendMessage $MultiUser .InstallModePage.CurrentUser ${BM_SETCHECK} ${BST_CHECKED} 0
${endif}
2020-03-24 02:01:11 +00:00
!insertmacro MULTIUSER_PAGE_FUNCTION_CUSTOM SHOW
2008-02-08 21:10:44 +00:00
nsDialogs :: Show
2020-03-24 02:01:11 +00:00
!insertmacro MULTIUSER_PAGE_FUNCTION_CUSTOM DESTROYED
2008-02-08 21:10:44 +00:00
FunctionEnd
Function " ${LEAVE} "
2020-03-24 02:01:11 +00:00
SendMessage $MultiUser .InstallModePage.AllUsers ${BM_GETCHECK} 0 0 $0
2008-02-08 21:10:44 +00:00
2020-03-24 02:01:11 +00:00
${if} $0 = ${BST_CHECKED}
2008-02-08 21:10:44 +00:00
Call MultiUser.InstallMode.AllUsers
${else}
Call MultiUser.InstallMode.CurrentUser
${endif}
2020-03-24 02:01:11 +00:00
!insertmacro MULTIUSER_PAGE_FUNCTION_CUSTOM LEAVE
2008-02-08 21:10:44 +00:00
FunctionEnd
!macroend
!verbose pop
!endif