* Added MULTIUSER_INSTALLMODEPAGE_SHOWUSERNAME

* Decoupled the page from MUI
* Try FOLDERID_UserProgramFiles


git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7160 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
anders_k 2020-03-24 02:01:11 +00:00
parent 9689c5a5b7
commit 06f7335cc8
4 changed files with 119 additions and 104 deletions

View file

@ -123,7 +123,7 @@
!ifdef MULTIUSER_INSTALLMODEPAGE !ifdef MULTIUSER_INSTALLMODEPAGE
${LangFileString} MULTIUSER_TEXT_INSTALLMODE_TITLE "Choose Users" ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_TITLE "Choose Users"
${LangFileString} MULTIUSER_TEXT_INSTALLMODE_SUBTITLE "Choose for which users you want to install $(^NameDA)." ${LangFileString} MULTIUSER_TEXT_INSTALLMODE_SUBTITLE "Choose for which users you want to install $(^NameDA)."
${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_TOP "Select whether you want to install $(^NameDA) for yourself only or for all users of this computer. $(^ClickNext)" ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_TOP "Select whether you want to install $(^NameDA) only for yourself or for all users of this computer. $(^ClickNext)"
${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_ALLUSERS "Install for anyone using this computer" ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_ALLUSERS "Install for anyone using this computer"
${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER "Install just for me" ${LangFileString} MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER "Install just for me"
!endif !endif

View file

@ -9,20 +9,24 @@ Copyright 2008-2020 Joost Verburg
*/ */
!ifndef MULTIUSER_INCLUDED !ifndef MULTIUSER_INCLUDED
!define MULTIUSER_INCLUDED !define MULTIUSER_INCLUDED 20200319
!verbose push !verbose push 3
!verbose 3
;Standard NSIS header files ;Standard NSIS header files
!ifdef MULTIUSER_MUI !ifdef MULTIUSER_MUI
!include MUI2.nsh !include MUI2.nsh
!endif !endif
!include nsDialogs.nsh
!include LogicLib.nsh !include LogicLib.nsh
!include WinVer.nsh !include WinVer.nsh
!include FileFunc.nsh !include FileFunc.nsh
!if ${NSIS_PTR_SIZE} > 4
!define /IfNDef MULTIUSER_MINWIN 0x501
!else
!define /IfNDef MULTIUSER_MINWIN 0x400
!endif
;Variables ;Variables
Var MultiUser.Privileges Var MultiUser.Privileges
@ -123,39 +127,46 @@ Install modes
!macro MULTIUSER_INSTALLMODE_CURRENTUSER UNINSTALLER_PREFIX UNINSTALLER_FUNCPREFIX !macro MULTIUSER_INSTALLMODE_CURRENTUSER UNINSTALLER_PREFIX UNINSTALLER_FUNCPREFIX
;Install mode initialization - per-user ;Install mode initialization - per-user
${if} ${IsNT} !if ${MULTIUSER_MINWIN} < 0x500
${if} ${IsNT}
!endif
StrCpy $MultiUser.InstallMode CurrentUser StrCpy $MultiUser.InstallMode CurrentUser
SetShellVarContext current SetShellVarContext current
!if "${UNINSTALLER_PREFIX}" != UN !if "${UNINSTALLER_PREFIX}" != UN
;Set default installation location for installer ;Set default installation location for installer
!ifdef MULTIUSER_INSTALLMODE_INSTDIR !ifdef MULTIUSER_INSTALLMODE_INSTDIR
!if ${MULTIUSER_MINWIN} < 0x490
${if} ${AtLeastWin2000} ${if} ${AtLeastWin2000}
StrCpy $INSTDIR "$LOCALAPPDATA\${MULTIUSER_INSTALLMODE_INSTDIR}" !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
${else} ${else}
StrCpy $INSTDIR "$PROGRAMFILES\${MULTIUSER_INSTALLMODE_INSTDIR}" StrCpy $INSTDIR "$PROGRAMFILES\${MULTIUSER_INSTALLMODE_INSTDIR}"
${endif} ${endif}
!endif
!endif !endif
!endif !endif
!ifdef MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY & MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME !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}" ReadRegStr $MultiUser.InstDir HKCU "${MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY}" "${MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME}"
${if} $MultiUser.InstDir != "" ${if} $MultiUser.InstDir != ""
StrCpy $INSTDIR $MultiUser.InstDir StrCpy $INSTDIR $MultiUser.InstDir
${endif} ${endif}
!endif !endif
!ifdef MULTIUSER_INSTALLMODE_${UNINSTALLER_PREFIX}FUNCTION !ifdef MULTIUSER_INSTALLMODE_${UNINSTALLER_PREFIX}FUNCTION
Call "${MULTIUSER_INSTALLMODE_${UNINSTALLER_PREFIX}FUNCTION}" Call "${MULTIUSER_INSTALLMODE_${UNINSTALLER_PREFIX}FUNCTION}"
!endif !endif
!if ${MULTIUSER_MINWIN} < 0x500
${endif} ${endif}
!endif
!macroend !macroend
@ -203,17 +214,9 @@ Installer/uninstaller initialization
!define /ReDef MULTIUSER_TMPSTR_CAPTION "$(^Name)" !define /ReDef MULTIUSER_TMPSTR_CAPTION "$(^Name)"
!endif !endif
!ifndef MULTIUSER_INIT_TEXT_ADMINREQUIRED !define /IfNDef MULTIUSER_INIT_TEXT_ADMINREQUIRED "${MULTIUSER_TMPSTR_CAPTION} requires administrator privileges."
!define 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."
!endif !define /IfNDef MULTIUSER_INIT_TEXT_ALLUSERSNOTPOSSIBLE "Your user account does not have sufficient privileges to install $(^Name) for all users of this computer."
!ifndef MULTIUSER_INIT_TEXT_POWERREQUIRED
!define MULTIUSER_INIT_TEXT_POWERREQUIRED "${MULTIUSER_TMPSTR_CAPTION} requires at least Power User privileges."
!endif
!ifndef MULTIUSER_INIT_TEXT_ALLUSERSNOTPOSSIBLE
!define MULTIUSER_INIT_TEXT_ALLUSERSNOTPOSSIBLE "Your user account does not have sufficient privileges to install $(^Name) for all users of this computer."
!endif
!undef MULTIUSER_TMPSTR_CAPTION !undef MULTIUSER_TMPSTR_CAPTION
@ -228,7 +231,9 @@ Installer/uninstaller initialization
UserInfo::GetAccountType UserInfo::GetAccountType
Pop $MultiUser.Privileges Pop $MultiUser.Privileges
!if ${MULTIUSER_MINWIN} < 0x500
${if} ${IsNT} ${if} ${IsNT}
!endif
;Check privileges ;Check privileges
@ -324,46 +329,50 @@ Installer/uninstaller initialization
!endif !endif
!if ${NSIS_PTR_SIZE} <= 4 !if ${MULTIUSER_MINWIN} < 0x500
${else} ${else}
;Not running Windows NT, per-user installation not supported ;Not running Windows NT, per-user installation not supported
Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.AllUsers Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.AllUsers
!endif
${endif} ${endif}
!endif
!macroend !macroend
!macro MULTIUSER_INIT !macro MULTIUSER_INIT
!verbose push !verbose push 3
!verbose 3 !ifdef __UNINSTALL__
!insertmacro MULTIUSER_UNINIT
!insertmacro MULTIUSER_INIT_CHECKS "" "" !else
!insertmacro MULTIUSER_INIT_CHECKS "" ""
!endif
!verbose pop !verbose pop
!macroend !macroend
!ifndef MULTIUSER_NOUNINSTALL !ifndef MULTIUSER_NOUNINSTALL
!macro MULTIUSER_UNINIT !macro MULTIUSER_UNINIT
!verbose push !verbose push 3
!verbose 3
!insertmacro MULTIUSER_INIT_CHECKS Un un. !insertmacro MULTIUSER_INIT_CHECKS Un un.
!verbose pop !verbose pop
!macroend !macroend
!endif !endif
/* /*
Modern UI 2 page Mode selection page
*/ */
!ifdef MULTIUSER_MUI !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
!macro MULTIUSER_INSTALLMODEPAGE_INTERFACE !macro MULTIUSER_INSTALLMODEPAGE_INTERFACE
@ -375,30 +384,30 @@ Modern UI 2 page
Var MultiUser.InstallModePage.AllUsers Var MultiUser.InstallModePage.AllUsers
Var MultiUser.InstallModePage.CurrentUser Var MultiUser.InstallModePage.CurrentUser
Var MultiUser.InstallModePage.ReturnValue
!endif !endif
!macroend !macroend
!macro MULTIUSER_PAGEDECLARATION_INSTALLMODE !macro MULTIUSER_PAGEDECLARATION_INSTALLMODE UNPREFIX UNIQUEID
!insertmacro MUI_SET MULTIUSER_${MUI_PAGE_UNINSTALLER_PREFIX}INSTALLMODEPAGE "" !define /ReDef MULTIUSER_${UNPREFIX}INSTALLMODEPAGE "" ; Unlock strings in the language file(s)
!insertmacro MULTIUSER_INSTALLMODEPAGE_INTERFACE !insertmacro MULTIUSER_INSTALLMODEPAGE_INTERFACE
!insertmacro MUI_DEFAULT MULTIUSER_INSTALLMODEPAGE_TEXT_TOP "$(MULTIUSER_INNERTEXT_INSTALLMODE_TOP)" !define /IfNDef MULTIUSER_INSTALLMODEPAGE_TEXT_TOP "$(MULTIUSER_INNERTEXT_INSTALLMODE_TOP)"
!insertmacro MUI_DEFAULT MULTIUSER_INSTALLMODEPAGE_TEXT_ALLUSERS "$(MULTIUSER_INNERTEXT_INSTALLMODE_ALLUSERS)" !define /IfNDef MULTIUSER_INSTALLMODEPAGE_TEXT_ALLUSERS "$(MULTIUSER_INNERTEXT_INSTALLMODE_ALLUSERS)"
!insertmacro MUI_DEFAULT MULTIUSER_INSTALLMODEPAGE_TEXT_CURRENTUSER "$(MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER)" !define /IfNDef MULTIUSER_INSTALLMODEPAGE_TEXT_CURRENTUSER "$(MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER)"
PageEx custom PageEx custom
PageCallbacks MultiUser.InstallModePre_${MUI_UNIQUEID} MultiUser.InstallModeLeave_${MUI_UNIQUEID} PageCallbacks MultiUser.InstallModePre_${UNIQUEID} MultiUser.InstallModeLeave_${UNIQUEID}
Caption " " !define /IfNDef MULTIUSER_INSTALLMODEPAGE_CAPTION " "
Caption "${MULTIUSER_INSTALLMODEPAGE_CAPTION}"
PageExEnd PageExEnd
!insertmacro MULTIUSER_FUNCTION_INSTALLMODEPAGE MultiUser.InstallModePre_${MUI_UNIQUEID} MultiUser.InstallModeLeave_${MUI_UNIQUEID} !insertmacro MULTIUSER_FUNCTION_INSTALLMODEPAGE MultiUser.InstallModePre_${UNIQUEID} MultiUser.InstallModeLeave_${UNIQUEID}
!undef MULTIUSER_INSTALLMODEPAGE_TEXT_TOP !undef MULTIUSER_INSTALLMODEPAGE_TEXT_TOP
!undef MULTIUSER_INSTALLMODEPAGE_TEXT_ALLUSERS !undef MULTIUSER_INSTALLMODEPAGE_TEXT_ALLUSERS
@ -408,17 +417,16 @@ Modern UI 2 page
!macro MULTIUSER_PAGE_INSTALLMODE !macro MULTIUSER_PAGE_INSTALLMODE
;Modern UI page for install mode !verbose push 3
!verbose push
!verbose 3
!ifndef MULTIUSER_EXECUTIONLEVEL_ALLUSERS !ifndef MULTIUSER_EXECUTIONLEVEL_ALLUSERS
!error "A mixed-mode installation requires MULTIUSER_EXECUTIONLEVEL to be set to Admin, Power or Highest." !error "A mixed-mode installation requires MULTIUSER_EXECUTIONLEVEL to be set to Admin, Power or Highest."
!endif !endif
!insertmacro MUI_PAGE_INIT !ifmacrodef MUI_PAGE_INIT
!insertmacro MULTIUSER_PAGEDECLARATION_INSTALLMODE !insertmacro MUI_PAGE_INIT
!endif
!insertmacro MULTIUSER_PAGEDECLARATION_INSTALLMODE "" ${__COUNTER__}
!verbose pop !verbose pop
@ -426,61 +434,75 @@ Modern UI 2 page
!macro MULTIUSER_FUNCTION_INSTALLMODEPAGE PRE LEAVE !macro MULTIUSER_FUNCTION_INSTALLMODEPAGE PRE LEAVE
;Page functions of Modern UI page !include nsDialogs.nsh
Function "${PRE}" Function "${PRE}"
!if ${MULTIUSER_MINWIN} < 0x500
${ifnot} ${IsNT} ${ifnot} ${IsNT}
Abort Abort
${endif} ${endif}
!endif
${if} $MultiUser.Privileges != "Power" ${if} $MultiUser.Privileges != "Power"
${andif} $MultiUser.Privileges != "Admin" ${andif} $MultiUser.Privileges != "Admin"
Abort Abort
${endif} ${endif}
!insertmacro MUI_PAGE_FUNCTION_CUSTOM PRE !insertmacro MULTIUSER_PAGE_FUNCTION_CUSTOM PRE
!insertmacro MUI_HEADER_TEXT_PAGE $(MULTIUSER_TEXT_INSTALLMODE_TITLE) $(MULTIUSER_TEXT_INSTALLMODE_SUBTITLE) !ifmacrodef MUI_HEADER_TEXT_PAGE
!insertmacro MUI_HEADER_TEXT_PAGE $(MULTIUSER_TEXT_INSTALLMODE_TITLE) $(MULTIUSER_TEXT_INSTALLMODE_SUBTITLE)
!endif
nsDialogs::Create 1018 nsDialogs::Create 1018
Pop $MultiUser.InstallModePage Pop $MultiUser.InstallModePage
${NSD_CreateLabel} 0u 0u 300u 40u "${MULTIUSER_INSTALLMODEPAGE_TEXT_TOP}" ${NSD_CreateLabel} 0 2u 100% 42u "${MULTIUSER_INSTALLMODEPAGE_TEXT_TOP}"
Pop $MultiUser.InstallModePage.Text Pop $MultiUser.InstallModePage.Text
${NSD_CreateRadioButton} 20u 50u 280u 10u "${MULTIUSER_INSTALLMODEPAGE_TEXT_ALLUSERS}" ${NSD_CreateRadioButton} 15u 50u -15u 10u "${MULTIUSER_INSTALLMODEPAGE_TEXT_ALLUSERS}"
Pop $MultiUser.InstallModePage.AllUsers Pop $MultiUser.InstallModePage.AllUsers
${NSD_CreateRadioButton} 20u 70u 280u 10u "${MULTIUSER_INSTALLMODEPAGE_TEXT_CURRENTUSER}" !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
Pop $MultiUser.InstallModePage.CurrentUser Pop $MultiUser.InstallModePage.CurrentUser
${if} $MultiUser.InstallMode == "AllUsers" ${if} $MultiUser.InstallMode == "AllUsers"
SendMessage $MultiUser.InstallModePage.AllUsers ${BM_SETCHECK} ${BST_CHECKED} 0 SendMessage $MultiUser.InstallModePage.AllUsers ${BM_SETCHECK} ${BST_CHECKED} 0
${else} ${else}
SendMessage $MultiUser.InstallModePage.CurrentUser ${BM_SETCHECK} ${BST_CHECKED} 0 SendMessage $MultiUser.InstallModePage.CurrentUser ${BM_SETCHECK} ${BST_CHECKED} 0
${endif} ${endif}
!insertmacro MUI_PAGE_FUNCTION_CUSTOM SHOW !insertmacro MULTIUSER_PAGE_FUNCTION_CUSTOM SHOW
nsDialogs::Show nsDialogs::Show
!insertmacro MUI_PAGE_FUNCTION_CUSTOM DESTROYED !insertmacro MULTIUSER_PAGE_FUNCTION_CUSTOM DESTROYED
FunctionEnd FunctionEnd
Function "${LEAVE}" Function "${LEAVE}"
SendMessage $MultiUser.InstallModePage.AllUsers ${BM_GETCHECK} 0 0 $MultiUser.InstallModePage.ReturnValue SendMessage $MultiUser.InstallModePage.AllUsers ${BM_GETCHECK} 0 0 $0
${if} $MultiUser.InstallModePage.ReturnValue = ${BST_CHECKED} ${if} $0 = ${BST_CHECKED}
Call MultiUser.InstallMode.AllUsers Call MultiUser.InstallMode.AllUsers
${else} ${else}
Call MultiUser.InstallMode.CurrentUser Call MultiUser.InstallMode.CurrentUser
${endif} ${endif}
!insertmacro MUI_PAGE_FUNCTION_CUSTOM LEAVE !insertmacro MULTIUSER_PAGE_FUNCTION_CUSTOM LEAVE
FunctionEnd FunctionEnd
!macroend !macroend
!endif
!verbose pop !verbose pop
!endif !endif

View file

@ -4,6 +4,9 @@
<title>Multi-User Header File (MultiUser.nsh)</title> <title>Multi-User Header File (MultiUser.nsh)</title>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" /> <meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
<style type="text/css"> <style type="text/css">
body { background-color: #fefefe; color: #050505; }
code { background-color: #f6f6f6; }
pre { background-color: inherit; }
td td
{ {
padding: 5px; padding: 5px;
@ -107,7 +110,7 @@
Insert the MULTIUSER_INIT and MULTIUSER_UNINT macros in the .onInit and un.onInit Insert the MULTIUSER_INIT and MULTIUSER_UNINT macros in the .onInit and un.onInit
function to verify these privileges. If no uninstaller is created in the script, function to verify these privileges. If no uninstaller is created in the script,
set MULTIUSER_NOUNINSTALL.</p> set MULTIUSER_NOUNINSTALL.</p>
<blockquote> <code>
<pre>!define MULTIUSER_EXECUTIONLEVEL Highest <pre>!define MULTIUSER_EXECUTIONLEVEL Highest
;!define MULTIUSER_NOUNINSTALL ;Uncomment if no uninstaller is created ;!define MULTIUSER_NOUNINSTALL ;Uncomment if no uninstaller is created
!include MultiUser.nsh !include MultiUser.nsh
@ -121,7 +124,7 @@ FunctionEnd
Function un.onInit Function un.onInit
!insertmacro MULTIUSER_UNINIT !insertmacro MULTIUSER_UNINIT
FunctionEnd</pre> FunctionEnd</pre>
</blockquote> </code>
<p> <p>
Whether the required privileges can be obtained depends on the user that starts Whether the required privileges can be obtained depends on the user that starts
the installer:</p> the installer:</p>
@ -260,7 +263,7 @@ FunctionEnd</pre>
installation mode. To use this page, define MULTIUSER_MUI before including User.nsh. installation mode. To use this page, define MULTIUSER_MUI before including User.nsh.
Then, the MULTIUSER_PAGE_INSTALLMODE macro can be used just like a normal Modern Then, the MULTIUSER_PAGE_INSTALLMODE macro can be used just like a normal Modern
UI page (this page will automatically be skipped when running Windows 95/98/Me):</p> UI page (this page will automatically be skipped when running Windows 95/98/Me):</p>
<pre>!define MULTIUSER_EXECUTIONLEVEL Highest <code><pre>!define MULTIUSER_EXECUTIONLEVEL Highest
<b>!define MULTIUSER_MUI</b> <b>!define MULTIUSER_MUI</b>
!define MULTIUSER_INSTALLMODE_COMMANDLINE !define MULTIUSER_INSTALLMODE_COMMANDLINE
!include MultiUser.nsh !include MultiUser.nsh
@ -281,7 +284,7 @@ FunctionEnd
Function un.onInit Function un.onInit
!insertmacro MULTIUSER_UNINIT !insertmacro MULTIUSER_UNINIT
FunctionEnd FunctionEnd
</pre> </pre></code>
<p> <p>
The MULTIUSER_INSTALLMODE_COMMANDLINE setting that also appears in this example The MULTIUSER_INSTALLMODE_COMMANDLINE setting that also appears in this example
enables the installation mode to be set using the /AllUsers or /CurrentUser command enables the installation mode to be set using the /AllUsers or /CurrentUser command
@ -291,36 +294,24 @@ FunctionEnd
to the general Modern UI page settings):</p> to the general Modern UI page settings):</p>
<table> <table>
<tr> <tr>
<td> <td><b>Setting</b></td>
<b>Setting</b> <td><b>Description</b></td>
</td>
<td>
<b>Description</b>
</td>
</tr> </tr>
<tr> <tr>
<td> <td>MULTIUSER_INSTALLMODEPAGE_TEXT_TOP</td>
MULTIUSER_INSTALLMODEPAGE_TEXT_TOP <td>Text to display on the top of the page.</td>
</td>
<td>
Text to display on the top of the page.
</td>
</tr> </tr>
<tr> <tr>
<td> <td>MULTIUSER_INSTALLMODEPAGE_TEXT_ALLUSERS</td>
MULTIUSER_INSTALLMODEPAGE_TEXT_ALLUSERS <td>Text to display on the radio button for a per-machine installation.</td>
</td>
<td>
Text to display on the combo button for a per-machine installation.
</td>
</tr> </tr>
<tr> <tr>
<td> <td>MULTIUSER_INSTALLMODEPAGE_TEXT_CURRENTUSER</td>
MULTIUSER_INSTALLMODEPAGE_TEXT_CURRENTUSER <td>Text to display on the radio button for a per-user installation.</td>
</td> </tr>
<td> <tr>
Text to display on the combo button for a per-user installation. <td>MULTIUSER_INSTALLMODEPAGE_SHOWUSERNAME</td>
</td> <td>Append the username to the per-user radio button.</td>
</tr> </tr>
</table> </table>
<h3> <h3>

View file

@ -20,6 +20,8 @@ Released on ? ?th, 2020
\# Undocumented: \b Added GetShellVarContext, IfAltRegView and GetRegView | Documenting these would require documenting the parameter name to number mapping \# Undocumented: \b Added GetShellVarContext, IfAltRegView and GetRegView | Documenting these would require documenting the parameter name to number mapping
\b MultiUser: Fixed INSTALLMODE_FUNCTION and added INSTALLMODEPAGE_SHOWUSERNAME
\H{v3.05} 3.05 \H{v3.05} 3.05
Released on December 15th, 2019 Released on December 15th, 2019