[prev in list] [next in list] [prev in thread] [next in thread]
List: nsis-commits
Subject: [NSIS-commits] SF.net SVN: nsis:[7160] NSIS/trunk
From: anders_k--- via NSIS-commits <nsis-commits () lists ! sourceforge ! net>
Date: 2020-03-24 2:01:12
Message-ID: 1585015272.587334.5326 () sfp-scm-7 ! v30 ! lw ! sourceforge ! com
[Download RAW message or body]
Revision: 7160
http://sourceforge.net/p/nsis/code/7160
Author: anders_k
Date: 2020-03-24 02:01:11 +0000 (Tue, 24 Mar 2020)
Log Message:
-----------
* Added MULTIUSER_INSTALLMODEPAGE_SHOWUSERNAME
* Decoupled the page from MUI
* Try FOLDERID_UserProgramFiles
Modified Paths:
--------------
NSIS/trunk/Contrib/Language files/English.nsh
NSIS/trunk/Contrib/MultiUser/MultiUser.nsh
NSIS/trunk/Contrib/MultiUser/Readme.html
NSIS/trunk/Docs/src/history.but
Modified: NSIS/trunk/Contrib/Language files/English.nsh
===================================================================
--- NSIS/trunk/Contrib/Language files/English.nsh 2020-03-18 21:27:58 UTC (rev 7159)
+++ NSIS/trunk/Contrib/Language files/English.nsh 2020-03-24 02:01:11 UTC (rev 7160)
@@ -123,7 +123,7 @@
!ifdef MULTIUSER_INSTALLMODEPAGE
${LangFileString} MULTIUSER_TEXT_INSTALLMODE_TITLE "Choose Users"
${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_CURRENTUSER "Install just for me"
!endif
Modified: NSIS/trunk/Contrib/MultiUser/MultiUser.nsh
===================================================================
--- NSIS/trunk/Contrib/MultiUser/MultiUser.nsh 2020-03-18 21:27:58 UTC (rev 7159)
+++ NSIS/trunk/Contrib/MultiUser/MultiUser.nsh 2020-03-24 02:01:11 UTC (rev 7160)
@@ -9,9 +9,8 @@
*/
!ifndef MULTIUSER_INCLUDED
-!define MULTIUSER_INCLUDED
-!verbose push
-!verbose 3
+!define MULTIUSER_INCLUDED 20200319
+!verbose push 3
;Standard NSIS header files
@@ -18,11 +17,16 @@
!ifdef MULTIUSER_MUI
!include MUI2.nsh
!endif
-!include nsDialogs.nsh
!include LogicLib.nsh
!include WinVer.nsh
!include FileFunc.nsh
+!if ${NSIS_PTR_SIZE} > 4
+!define /IfNDef MULTIUSER_MINWIN 0x501
+!else
+!define /IfNDef MULTIUSER_MINWIN 0x400
+!endif
+
;Variables
Var MultiUser.Privileges
@@ -123,39 +127,46 @@
!macro MULTIUSER_INSTALLMODE_CURRENTUSER UNINSTALLER_PREFIX UNINSTALLER_FUNCPREFIX
;Install mode initialization - per-user
-
- ${if} ${IsNT}
-
+
+ !if ${MULTIUSER_MINWIN} < 0x500
+ ${if} ${IsNT}
+ !endif
+
StrCpy $MultiUser.InstallMode CurrentUser
-
SetShellVarContext current
!if "${UNINSTALLER_PREFIX}" != UN
;Set default installation location for installer
!ifdef MULTIUSER_INSTALLMODE_INSTDIR
+ !if ${MULTIUSER_MINWIN} < 0x490
${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}
StrCpy $INSTDIR "$PROGRAMFILES\${MULTIUSER_INSTALLMODE_INSTDIR}"
${endif}
+ !endif
!endif
!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
-
+
!ifdef MULTIUSER_INSTALLMODE_${UNINSTALLER_PREFIX}FUNCTION
Call "${MULTIUSER_INSTALLMODE_${UNINSTALLER_PREFIX}FUNCTION}"
!endif
-
+
+ !if ${MULTIUSER_MINWIN} < 0x500
${endif}
+ !endif
!macroend
@@ -203,18 +214,10 @@
!define /ReDef MULTIUSER_TMPSTR_CAPTION "$(^Name)"
!endif
- !ifndef MULTIUSER_INIT_TEXT_ADMINREQUIRED
- !define MULTIUSER_INIT_TEXT_ADMINREQUIRED "${MULTIUSER_TMPSTR_CAPTION} requires \
administrator privileges."
- !endif
+ !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."
- !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
!macroend
@@ -228,7 +231,9 @@
UserInfo::GetAccountType
Pop $MultiUser.Privileges
+ !if ${MULTIUSER_MINWIN} < 0x500
${if} ${IsNT}
+ !endif
;Check privileges
@@ -324,46 +329,50 @@
!endif
- !if ${NSIS_PTR_SIZE} <= 4
+ !if ${MULTIUSER_MINWIN} < 0x500
${else}
;Not running Windows NT, per-user installation not supported
Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.AllUsers
+ ${endif}
!endif
- ${endif}
!macroend
!macro MULTIUSER_INIT
- !verbose push
- !verbose 3
-
- !insertmacro MULTIUSER_INIT_CHECKS "" ""
-
+ !verbose push 3
+ !ifdef __UNINSTALL__
+ !insertmacro MULTIUSER_UNINIT
+ !else
+ !insertmacro MULTIUSER_INIT_CHECKS "" ""
+ !endif
!verbose pop
!macroend
!ifndef MULTIUSER_NOUNINSTALL
-
!macro MULTIUSER_UNINIT
- !verbose push
- !verbose 3
-
+ !verbose push 3
!insertmacro MULTIUSER_INIT_CHECKS Un un.
-
!verbose pop
!macroend
-
!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
@@ -375,30 +384,30 @@
Var MultiUser.InstallModePage.AllUsers
Var MultiUser.InstallModePage.CurrentUser
-
- Var MultiUser.InstallModePage.ReturnValue
+
!endif
!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 MUI_DEFAULT MULTIUSER_INSTALLMODEPAGE_TEXT_TOP \
"$(MULTIUSER_INNERTEXT_INSTALLMODE_TOP)"
- !insertmacro MUI_DEFAULT MULTIUSER_INSTALLMODEPAGE_TEXT_ALLUSERS \
"$(MULTIUSER_INNERTEXT_INSTALLMODE_ALLUSERS)"
- !insertmacro MUI_DEFAULT MULTIUSER_INSTALLMODEPAGE_TEXT_CURRENTUSER \
"$(MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER)" + !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)"
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
- !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_ALLUSERS
@@ -408,18 +417,17 @@
!macro MULTIUSER_PAGE_INSTALLMODE
- ;Modern UI page for install mode
-
- !verbose push
- !verbose 3
+ !verbose push 3
!ifndef MULTIUSER_EXECUTIONLEVEL_ALLUSERS
!error "A mixed-mode installation requires MULTIUSER_EXECUTIONLEVEL to be set to \
Admin, Power or Highest."
!endif
+
+ !ifmacrodef MUI_PAGE_INIT
+ !insertmacro MUI_PAGE_INIT
+ !endif
+ !insertmacro MULTIUSER_PAGEDECLARATION_INSTALLMODE "" ${__COUNTER__}
- !insertmacro MUI_PAGE_INIT
- !insertmacro MULTIUSER_PAGEDECLARATION_INSTALLMODE
-
!verbose pop
!macroend
@@ -426,34 +434,49 @@
!macro MULTIUSER_FUNCTION_INSTALLMODEPAGE PRE LEAVE
- ;Page functions of Modern UI page
+ !include nsDialogs.nsh
Function "${PRE}"
-
+
+ !if ${MULTIUSER_MINWIN} < 0x500
${ifnot} ${IsNT}
Abort
${endif}
-
+ !endif
+
${if} $MultiUser.Privileges != "Power"
${andif} $MultiUser.Privileges != "Admin"
Abort
${endif}
-
- !insertmacro MUI_PAGE_FUNCTION_CUSTOM PRE
- !insertmacro MUI_HEADER_TEXT_PAGE $(MULTIUSER_TEXT_INSTALLMODE_TITLE) \
$(MULTIUSER_TEXT_INSTALLMODE_SUBTITLE)
-
+
+ !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
+
nsDialogs::Create 1018
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
- ${NSD_CreateRadioButton} 20u 50u 280u 10u \
"${MULTIUSER_INSTALLMODEPAGE_TEXT_ALLUSERS}" + ${NSD_CreateRadioButton} 15u 50u \
-15u 10u "${MULTIUSER_INSTALLMODEPAGE_TEXT_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
-
+
${if} $MultiUser.InstallMode == "AllUsers"
SendMessage $MultiUser.InstallModePage.AllUsers ${BM_SETCHECK} ${BST_CHECKED} \
0 ${else}
@@ -460,27 +483,26 @@
SendMessage $MultiUser.InstallModePage.CurrentUser ${BM_SETCHECK} \
${BST_CHECKED} 0 ${endif}
- !insertmacro MUI_PAGE_FUNCTION_CUSTOM SHOW
+ !insertmacro MULTIUSER_PAGE_FUNCTION_CUSTOM SHOW
nsDialogs::Show
- !insertmacro MUI_PAGE_FUNCTION_CUSTOM DESTROYED
+ !insertmacro MULTIUSER_PAGE_FUNCTION_CUSTOM DESTROYED
FunctionEnd
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
${else}
Call MultiUser.InstallMode.CurrentUser
${endif}
- !insertmacro MUI_PAGE_FUNCTION_CUSTOM LEAVE
+ !insertmacro MULTIUSER_PAGE_FUNCTION_CUSTOM LEAVE
FunctionEnd
!macroend
-!endif
!verbose pop
!endif
Modified: NSIS/trunk/Contrib/MultiUser/Readme.html
===================================================================
--- NSIS/trunk/Contrib/MultiUser/Readme.html 2020-03-18 21:27:58 UTC (rev 7159)
+++ NSIS/trunk/Contrib/MultiUser/Readme.html 2020-03-24 02:01:11 UTC (rev 7160)
@@ -4,6 +4,9 @@
<title>Multi-User Header File (MultiUser.nsh)</title>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
<style type="text/css">
+ body { background-color: #fefefe; color: #050505; }
+ code { background-color: #f6f6f6; }
+ pre { background-color: inherit; }
td
{
padding: 5px;
@@ -107,7 +110,7 @@
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, set MULTIUSER_NOUNINSTALL.</p>
- <blockquote>
+ <code>
<pre>!define MULTIUSER_EXECUTIONLEVEL Highest
;!define MULTIUSER_NOUNINSTALL ;Uncomment if no uninstaller is created
!include MultiUser.nsh
@@ -121,7 +124,7 @@
Function un.onInit
!insertmacro MULTIUSER_UNINIT
FunctionEnd</pre>
- </blockquote>
+ </code>
<p>
Whether the required privileges can be obtained depends on the user that \
starts the installer:</p>
@@ -260,7 +263,7 @@
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
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>
!define MULTIUSER_INSTALLMODE_COMMANDLINE
!include MultiUser.nsh
@@ -281,7 +284,7 @@
Function un.onInit
!insertmacro MULTIUSER_UNINIT
FunctionEnd
-</pre>
+</pre></code>
<p>
The MULTIUSER_INSTALLMODE_COMMANDLINE setting that also appears in this \
example
enables the installation mode to be set using the /AllUsers or \
/CurrentUser command @@ -291,37 +294,25 @@
to the general Modern UI page settings):</p>
<table>
<tr>
- <td>
- <b>Setting</b>
- </td>
- <td>
- <b>Description</b>
- </td>
+ <td><b>Setting</b></td>
+ <td><b>Description</b></td>
</tr>
<tr>
- <td>
- MULTIUSER_INSTALLMODEPAGE_TEXT_TOP
- </td>
- <td>
- Text to display on the top of the page.
- </td>
+ <td>MULTIUSER_INSTALLMODEPAGE_TEXT_TOP</td>
+ <td>Text to display on the top of the page.</td>
</tr>
<tr>
- <td>
- MULTIUSER_INSTALLMODEPAGE_TEXT_ALLUSERS
- </td>
- <td>
- Text to display on the combo button for a per-machine \
installation.
- </td>
+ <td>MULTIUSER_INSTALLMODEPAGE_TEXT_ALLUSERS</td>
+ <td>Text to display on the radio button for a per-machine \
installation.</td> </tr>
<tr>
- <td>
- MULTIUSER_INSTALLMODEPAGE_TEXT_CURRENTUSER
- </td>
- <td>
- Text to display on the combo button for a per-user installation.
- </td>
+ <td>MULTIUSER_INSTALLMODEPAGE_TEXT_CURRENTUSER</td>
+ <td>Text to display on the radio button for a per-user \
installation.</td> </tr>
+ <tr>
+ <td>MULTIUSER_INSTALLMODEPAGE_SHOWUSERNAME</td>
+ <td>Append the username to the per-user radio button.</td>
+ </tr>
</table>
<h3>
Installation Mode Initalization</h3>
Modified: NSIS/trunk/Docs/src/history.but
===================================================================
--- NSIS/trunk/Docs/src/history.but 2020-03-18 21:27:58 UTC (rev 7159)
+++ NSIS/trunk/Docs/src/history.but 2020-03-24 02:01:11 UTC (rev 7160)
@@ -20,6 +20,8 @@
\# 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
Released on December 15th, 2019
This was sent by the SourceForge.net collaborative development platform, the world's \
largest Open Source development site.
_______________________________________________
NSIS-commits mailing list
NSIS-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nsis-commits
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic