root / tmp / org.txm.setups / nsis / Include / MultiUser.nsh @ 3088
Historique | Voir | Annoter | Télécharger (14,75 ko)
1 |
/* |
---|---|
2 |
|
3 |
MultiUser.nsh |
4 |
|
5 |
Installer configuration for multi-user Windows environments |
6 |
|
7 |
Copyright 2008-2020 Joost Verburg |
8 |
|
9 |
*/ |
10 |
|
11 |
!ifndef MULTIUSER_INCLUDED |
12 |
!define MULTIUSER_INCLUDED 20200319 |
13 |
!verbose push 3 |
14 |
|
15 |
;Standard NSIS header files |
16 |
|
17 |
!ifdef MULTIUSER_MUI |
18 |
!include MUI2.nsh |
19 |
!endif |
20 |
!include LogicLib.nsh |
21 |
!include WinVer.nsh |
22 |
!include FileFunc.nsh |
23 |
|
24 |
!if ${NSIS_PTR_SIZE} > 4 |
25 |
!define /IfNDef MULTIUSER_MINWIN 0x501 |
26 |
!else |
27 |
!define /IfNDef MULTIUSER_MINWIN 0x400 |
28 |
!endif |
29 |
|
30 |
;Variables |
31 |
|
32 |
Var MultiUser.Privileges |
33 |
Var MultiUser.InstallMode |
34 |
|
35 |
;Command line installation mode setting |
36 |
|
37 |
!ifdef MULTIUSER_INSTALLMODE_COMMANDLINE |
38 |
!include StrFunc.nsh |
39 |
!ifndef StrStr_INCLUDED |
40 |
${StrStr} |
41 |
!endif |
42 |
!ifndef MULTIUSER_NOUNINSTALL |
43 |
!ifndef UnStrStr_INCLUDED |
44 |
${UnStrStr} |
45 |
!endif |
46 |
!endif |
47 |
|
48 |
Var MultiUser.Parameters |
49 |
Var MultiUser.Result |
50 |
!endif |
51 |
|
52 |
;Installation folder stored in registry |
53 |
|
54 |
!ifdef MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY & MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME |
55 |
Var MultiUser.InstDir |
56 |
!endif |
57 |
|
58 |
!ifdef MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY & MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME |
59 |
Var MultiUser.DefaultKeyValue |
60 |
!endif |
61 |
|
62 |
;Windows Vista UAC setting |
63 |
|
64 |
!if "${MULTIUSER_EXECUTIONLEVEL}" == Admin |
65 |
RequestExecutionLevel admin |
66 |
!define MULTIUSER_EXECUTIONLEVEL_ALLUSERS |
67 |
!else if "${MULTIUSER_EXECUTIONLEVEL}" == Power |
68 |
RequestExecutionLevel admin |
69 |
!define MULTIUSER_EXECUTIONLEVEL_ALLUSERS |
70 |
!else if "${MULTIUSER_EXECUTIONLEVEL}" == Highest |
71 |
RequestExecutionLevel highest |
72 |
!define MULTIUSER_EXECUTIONLEVEL_ALLUSERS |
73 |
!else |
74 |
RequestExecutionLevel user |
75 |
!ifndef MULTIUSER_EXECUTIONLEVEL |
76 |
!warning "MULTIUSER_EXECUTIONLEVEL not set!" |
77 |
!endif |
78 |
!endif |
79 |
|
80 |
/* |
81 |
|
82 |
Install modes |
83 |
|
84 |
*/ |
85 |
|
86 |
!macro MULTIUSER_INSTALLMODE_ALLUSERS UNINSTALLER_PREFIX UNINSTALLER_FUNCPREFIX |
87 |
|
88 |
;Install mode initialization - per-machine |
89 |
|
90 |
${ifnot} ${IsNT} |
91 |
${orif} $MultiUser.Privileges == "Admin" |
92 |
${orif} $MultiUser.Privileges == "Power" |
93 |
|
94 |
StrCpy $MultiUser.InstallMode AllUsers |
95 |
|
96 |
SetShellVarContext all |
97 |
|
98 |
!if "${UNINSTALLER_PREFIX}" != UN |
99 |
;Set default installation location for installer |
100 |
!ifdef MULTIUSER_INSTALLMODE_INSTDIR |
101 |
!ifdef MULTIUSER_USE_PROGRAMFILES64 |
102 |
StrCpy $INSTDIR "$PROGRAMFILES64\${MULTIUSER_INSTALLMODE_INSTDIR}" |
103 |
!else |
104 |
StrCpy $INSTDIR "$PROGRAMFILES\${MULTIUSER_INSTALLMODE_INSTDIR}" |
105 |
!endif |
106 |
!endif |
107 |
!endif |
108 |
|
109 |
!ifdef MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY & MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME |
110 |
|
111 |
ReadRegStr $MultiUser.InstDir HKLM "${MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY}" "${MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME}" |
112 |
|
113 |
${if} $MultiUser.InstDir != "" |
114 |
StrCpy $INSTDIR $MultiUser.InstDir |
115 |
${endif} |
116 |
|
117 |
!endif |
118 |
|
119 |
!ifdef MULTIUSER_INSTALLMODE_${UNINSTALLER_PREFIX}FUNCTION |
120 |
Call "${MULTIUSER_INSTALLMODE_${UNINSTALLER_PREFIX}FUNCTION}" |
121 |
!endif |
122 |
|
123 |
${endif} |
124 |
|
125 |
!macroend |
126 |
|
127 |
!macro MULTIUSER_INSTALLMODE_CURRENTUSER UNINSTALLER_PREFIX UNINSTALLER_FUNCPREFIX |
128 |
|
129 |
;Install mode initialization - per-user |
130 |
|
131 |
!if ${MULTIUSER_MINWIN} < 0x500 |
132 |
${if} ${IsNT} |
133 |
!endif |
134 |
|
135 |
StrCpy $MultiUser.InstallMode CurrentUser |
136 |
SetShellVarContext current |
137 |
|
138 |
!if "${UNINSTALLER_PREFIX}" != UN |
139 |
;Set default installation location for installer |
140 |
!ifdef MULTIUSER_INSTALLMODE_INSTDIR |
141 |
!if ${MULTIUSER_MINWIN} < 0x490 |
142 |
${if} ${AtLeastWin2000} |
143 |
!endif |
144 |
GetKnownFolderPath $INSTDIR {5CD7AEE2-2219-4A67-B85D-6C9CE15660CB} ; FOLDERID_UserProgramFiles |
145 |
StrCmp $INSTDIR "" 0 +2 |
146 |
StrCpy $INSTDIR "$LocalAppData\Programs" ; Fallback directory |
147 |
StrCpy $INSTDIR "$INSTDIR\${MULTIUSER_INSTALLMODE_INSTDIR}" |
148 |
!if ${MULTIUSER_MINWIN} < 0x490 |
149 |
${else} |
150 |
StrCpy $INSTDIR "$PROGRAMFILES\${MULTIUSER_INSTALLMODE_INSTDIR}" |
151 |
${endif} |
152 |
!endif |
153 |
!endif |
154 |
!endif |
155 |
|
156 |
!ifdef MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY & MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME |
157 |
ReadRegStr $MultiUser.InstDir HKCU "${MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_KEY}" "${MULTIUSER_INSTALLMODE_INSTDIR_REGISTRY_VALUENAME}" |
158 |
${if} $MultiUser.InstDir != "" |
159 |
StrCpy $INSTDIR $MultiUser.InstDir |
160 |
${endif} |
161 |
!endif |
162 |
|
163 |
!ifdef MULTIUSER_INSTALLMODE_${UNINSTALLER_PREFIX}FUNCTION |
164 |
Call "${MULTIUSER_INSTALLMODE_${UNINSTALLER_PREFIX}FUNCTION}" |
165 |
!endif |
166 |
|
167 |
!if ${MULTIUSER_MINWIN} < 0x500 |
168 |
${endif} |
169 |
!endif |
170 |
|
171 |
!macroend |
172 |
|
173 |
Function MultiUser.InstallMode.AllUsers |
174 |
!insertmacro MULTIUSER_INSTALLMODE_ALLUSERS "" "" |
175 |
FunctionEnd |
176 |
|
177 |
Function MultiUser.InstallMode.CurrentUser |
178 |
!insertmacro MULTIUSER_INSTALLMODE_CURRENTUSER "" "" |
179 |
FunctionEnd |
180 |
|
181 |
!ifndef MULTIUSER_NOUNINSTALL |
182 |
|
183 |
Function un.MultiUser.InstallMode.AllUsers |
184 |
!insertmacro MULTIUSER_INSTALLMODE_ALLUSERS UN .un |
185 |
FunctionEnd |
186 |
|
187 |
Function un.MultiUser.InstallMode.CurrentUser |
188 |
!insertmacro MULTIUSER_INSTALLMODE_CURRENTUSER UN .un |
189 |
FunctionEnd |
190 |
|
191 |
!endif |
192 |
|
193 |
/* |
194 |
|
195 |
Installer/uninstaller initialization |
196 |
|
197 |
*/ |
198 |
|
199 |
!macro MULTIUSER_INIT_QUIT UNINSTALLER_FUNCPREFIX |
200 |
|
201 |
!ifdef MULTIUSER_INIT_${UNINSTALLER_FUNCPREFIX}FUNCTIONQUIT |
202 |
Call "${MULTIUSER_INIT_${UNINSTALLER_FUNCPREFIX}FUNCTIONQUIT}" |
203 |
!else |
204 |
Quit |
205 |
!endif |
206 |
|
207 |
!macroend |
208 |
|
209 |
!macro MULTIUSER_INIT_TEXTS UNINSTALLER_PREFIX |
210 |
|
211 |
!if "${UNINSTALLER_PREFIX}" == "" |
212 |
!define /ReDef MULTIUSER_TMPSTR_CAPTION "$(^SetupCaption)" |
213 |
!else |
214 |
!define /ReDef MULTIUSER_TMPSTR_CAPTION "$(^Name)" |
215 |
!endif |
216 |
|
217 |
!define /IfNDef MULTIUSER_INIT_TEXT_ADMINREQUIRED "${MULTIUSER_TMPSTR_CAPTION} requires administrator privileges." |
218 |
!define /IfNDef MULTIUSER_INIT_TEXT_POWERREQUIRED "${MULTIUSER_TMPSTR_CAPTION} requires at least Power User privileges." |
219 |
!define /IfNDef MULTIUSER_INIT_TEXT_ALLUSERSNOTPOSSIBLE "Your user account does not have sufficient privileges to install $(^Name) for all users of this computer." |
220 |
|
221 |
!undef MULTIUSER_TMPSTR_CAPTION |
222 |
|
223 |
!macroend |
224 |
|
225 |
!macro MULTIUSER_INIT_CHECKS UNINSTALLER_PREFIX UNINSTALLER_FUNCPREFIX |
226 |
|
227 |
;Installer initialization - check privileges and set install mode |
228 |
|
229 |
!insertmacro MULTIUSER_INIT_TEXTS "${UNINSTALLER_PREFIX}" |
230 |
|
231 |
UserInfo::GetAccountType |
232 |
Pop $MultiUser.Privileges |
233 |
|
234 |
!if ${MULTIUSER_MINWIN} < 0x500 |
235 |
${if} ${IsNT} |
236 |
!endif |
237 |
|
238 |
;Check privileges |
239 |
|
240 |
!if "${MULTIUSER_EXECUTIONLEVEL}" == Admin |
241 |
|
242 |
${if} $MultiUser.Privileges != "Admin" |
243 |
MessageBox MB_OK|MB_ICONSTOP "${MULTIUSER_INIT_TEXT_ADMINREQUIRED}" |
244 |
!insertmacro MULTIUSER_INIT_QUIT "${UNINSTALLER_FUNCPREFIX}" |
245 |
${endif} |
246 |
|
247 |
!else if "${MULTIUSER_EXECUTIONLEVEL}" == Power |
248 |
|
249 |
${if} $MultiUser.Privileges != "Power" |
250 |
${andif} $MultiUser.Privileges != "Admin" |
251 |
${if} ${AtMostWinXP} |
252 |
MessageBox MB_OK|MB_ICONSTOP "${MULTIUSER_INIT_TEXT_POWERREQUIRED}" |
253 |
${else} |
254 |
MessageBox MB_OK|MB_ICONSTOP "${MULTIUSER_INIT_TEXT_ADMINREQUIRED}" |
255 |
${endif} |
256 |
!insertmacro MULTIUSER_INIT_QUIT "${UNINSTALLER_FUNCPREFIX}" |
257 |
${endif} |
258 |
|
259 |
!endif |
260 |
|
261 |
!ifdef MULTIUSER_EXECUTIONLEVEL_ALLUSERS |
262 |
|
263 |
;Default to per-machine installation if possible |
264 |
|
265 |
${if} $MultiUser.Privileges == "Admin" |
266 |
${orif} $MultiUser.Privileges == "Power" |
267 |
!ifndef MULTIUSER_INSTALLMODE_DEFAULT_CURRENTUSER |
268 |
Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.AllUsers |
269 |
!else |
270 |
Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.CurrentUser |
271 |
!endif |
272 |
|
273 |
!ifdef MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY & MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME |
274 |
|
275 |
;Set installation mode to setting from a previous installation |
276 |
|
277 |
!ifndef MULTIUSER_INSTALLMODE_DEFAULT_CURRENTUSER |
278 |
ReadRegStr $MultiUser.DefaultKeyValue HKLM "${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY}" "${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME}" |
279 |
${if} $MultiUser.DefaultKeyValue == "" |
280 |
ReadRegStr $MultiUser.DefaultKeyValue HKCU "${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY}" "${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME}" |
281 |
${if} $MultiUser.DefaultKeyValue != "" |
282 |
Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.CurrentUser |
283 |
${endif} |
284 |
${endif} |
285 |
!else |
286 |
ReadRegStr $MultiUser.DefaultKeyValue HKCU "${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY}" "${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME}" |
287 |
${if} $MultiUser.DefaultKeyValue == "" |
288 |
ReadRegStr $MultiUser.DefaultKeyValue HKLM "${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_KEY}" "${MULTIUSER_INSTALLMODE_DEFAULT_REGISTRY_VALUENAME}" |
289 |
${if} $MultiUser.DefaultKeyValue != "" |
290 |
Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.AllUsers |
291 |
${endif} |
292 |
${endif} |
293 |
!endif |
294 |
|
295 |
!endif |
296 |
|
297 |
${else} |
298 |
Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.CurrentUser |
299 |
${endif} |
300 |
|
301 |
!else |
302 |
|
303 |
Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.CurrentUser |
304 |
|
305 |
!endif |
306 |
|
307 |
!ifdef MULTIUSER_INSTALLMODE_COMMANDLINE |
308 |
|
309 |
;Check for install mode setting on command line |
310 |
|
311 |
${${UNINSTALLER_FUNCPREFIX}GetParameters} $MultiUser.Parameters |
312 |
|
313 |
${${UNINSTALLER_PREFIX}StrStr} $MultiUser.Result $MultiUser.Parameters "/CurrentUser" |
314 |
|
315 |
${if} $MultiUser.Result != "" |
316 |
Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.CurrentUser |
317 |
${endif} |
318 |
|
319 |
${${UNINSTALLER_PREFIX}StrStr} $MultiUser.Result $MultiUser.Parameters "/AllUsers" |
320 |
|
321 |
${if} $MultiUser.Result != "" |
322 |
${if} $MultiUser.Privileges == "Admin" |
323 |
${orif} $MultiUser.Privileges == "Power" |
324 |
Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.AllUsers |
325 |
${else} |
326 |
MessageBox MB_OK|MB_ICONSTOP "${MULTIUSER_INIT_TEXT_ALLUSERSNOTPOSSIBLE}" |
327 |
${endif} |
328 |
${endif} |
329 |
|
330 |
!endif |
331 |
|
332 |
!if ${MULTIUSER_MINWIN} < 0x500 |
333 |
${else} |
334 |
|
335 |
;Not running Windows NT, per-user installation not supported |
336 |
Call ${UNINSTALLER_FUNCPREFIX}MultiUser.InstallMode.AllUsers |
337 |
|
338 |
${endif} |
339 |
!endif |
340 |
|
341 |
!macroend |
342 |
|
343 |
!macro MULTIUSER_INIT |
344 |
!verbose push 3 |
345 |
!ifdef __UNINSTALL__ |
346 |
!insertmacro MULTIUSER_UNINIT |
347 |
!else |
348 |
!insertmacro MULTIUSER_INIT_CHECKS "" "" |
349 |
!endif |
350 |
!verbose pop |
351 |
!macroend |
352 |
|
353 |
!ifndef MULTIUSER_NOUNINSTALL |
354 |
!macro MULTIUSER_UNINIT |
355 |
!verbose push 3 |
356 |
!insertmacro MULTIUSER_INIT_CHECKS Un un. |
357 |
!verbose pop |
358 |
!macroend |
359 |
!endif |
360 |
|
361 |
/* |
362 |
|
363 |
Mode selection page |
364 |
|
365 |
*/ |
366 |
|
367 |
!macro MULTIUSER_PAGE_FUNCTION_CUSTOM TYPE |
368 |
!ifmacrodef MUI_PAGE_FUNCTION_CUSTOM |
369 |
!insertmacro MUI_PAGE_FUNCTION_CUSTOM "${TYPE}" |
370 |
!endif |
371 |
!ifdef MULTIUSER_PAGE_CUSTOMFUNCTION_${TYPE} |
372 |
Call "${MULTIUSER_PAGE_CUSTOMFUNCTION_${TYPE}}" |
373 |
!undef MULTIUSER_PAGE_CUSTOMFUNCTION_${TYPE} |
374 |
!endif |
375 |
!macroend |
376 |
|
377 |
!macro MULTIUSER_INSTALLMODEPAGE_INTERFACE |
378 |
|
379 |
!ifndef MULTIUSER_INSTALLMODEPAGE_INTERFACE |
380 |
!define MULTIUSER_INSTALLMODEPAGE_INTERFACE |
381 |
Var MultiUser.InstallModePage |
382 |
|
383 |
Var MultiUser.InstallModePage.Text |
384 |
|
385 |
Var MultiUser.InstallModePage.AllUsers |
386 |
Var MultiUser.InstallModePage.CurrentUser |
387 |
|
388 |
!endif |
389 |
|
390 |
!macroend |
391 |
|
392 |
!macro MULTIUSER_PAGEDECLARATION_INSTALLMODE UNPREFIX UNIQUEID |
393 |
|
394 |
!define /ReDef MULTIUSER_${UNPREFIX}INSTALLMODEPAGE "" ; Unlock strings in the language file(s) |
395 |
!insertmacro MULTIUSER_INSTALLMODEPAGE_INTERFACE |
396 |
|
397 |
!define /IfNDef MULTIUSER_INSTALLMODEPAGE_TEXT_TOP "$(MULTIUSER_INNERTEXT_INSTALLMODE_TOP)" |
398 |
!define /IfNDef MULTIUSER_INSTALLMODEPAGE_TEXT_ALLUSERS "$(MULTIUSER_INNERTEXT_INSTALLMODE_ALLUSERS)" |
399 |
!define /IfNDef MULTIUSER_INSTALLMODEPAGE_TEXT_CURRENTUSER "$(MULTIUSER_INNERTEXT_INSTALLMODE_CURRENTUSER)" |
400 |
|
401 |
PageEx custom |
402 |
|
403 |
PageCallbacks MultiUser.InstallModePre_${UNIQUEID} MultiUser.InstallModeLeave_${UNIQUEID} |
404 |
|
405 |
!define /IfNDef MULTIUSER_INSTALLMODEPAGE_CAPTION " " |
406 |
Caption "${MULTIUSER_INSTALLMODEPAGE_CAPTION}" |
407 |
|
408 |
PageExEnd |
409 |
|
410 |
!insertmacro MULTIUSER_FUNCTION_INSTALLMODEPAGE MultiUser.InstallModePre_${UNIQUEID} MultiUser.InstallModeLeave_${UNIQUEID} |
411 |
|
412 |
!undef MULTIUSER_INSTALLMODEPAGE_TEXT_TOP |
413 |
!undef MULTIUSER_INSTALLMODEPAGE_TEXT_ALLUSERS |
414 |
!undef MULTIUSER_INSTALLMODEPAGE_TEXT_CURRENTUSER |
415 |
|
416 |
!macroend |
417 |
|
418 |
!macro MULTIUSER_PAGE_INSTALLMODE |
419 |
|
420 |
!verbose push 3 |
421 |
|
422 |
!ifndef MULTIUSER_EXECUTIONLEVEL_ALLUSERS |
423 |
!error "A mixed-mode installation requires MULTIUSER_EXECUTIONLEVEL to be set to Admin, Power or Highest." |
424 |
!endif |
425 |
|
426 |
!ifmacrodef MUI_PAGE_INIT |
427 |
!insertmacro MUI_PAGE_INIT |
428 |
!endif |
429 |
!insertmacro MULTIUSER_PAGEDECLARATION_INSTALLMODE "" ${__COUNTER__} |
430 |
|
431 |
!verbose pop |
432 |
|
433 |
!macroend |
434 |
|
435 |
!macro MULTIUSER_FUNCTION_INSTALLMODEPAGE PRE LEAVE |
436 |
|
437 |
!include nsDialogs.nsh |
438 |
|
439 |
Function "${PRE}" |
440 |
|
441 |
!if ${MULTIUSER_MINWIN} < 0x500 |
442 |
${ifnot} ${IsNT} |
443 |
Abort |
444 |
${endif} |
445 |
!endif |
446 |
|
447 |
${if} $MultiUser.Privileges != "Power" |
448 |
${andif} $MultiUser.Privileges != "Admin" |
449 |
Abort |
450 |
${endif} |
451 |
|
452 |
!insertmacro MULTIUSER_PAGE_FUNCTION_CUSTOM PRE |
453 |
!ifmacrodef MUI_HEADER_TEXT_PAGE |
454 |
!insertmacro MUI_HEADER_TEXT_PAGE $(MULTIUSER_TEXT_INSTALLMODE_TITLE) $(MULTIUSER_TEXT_INSTALLMODE_SUBTITLE) |
455 |
!endif |
456 |
|
457 |
nsDialogs::Create 1018 |
458 |
Pop $MultiUser.InstallModePage |
459 |
|
460 |
${NSD_CreateLabel} 0 2u 100% 42u "${MULTIUSER_INSTALLMODEPAGE_TEXT_TOP}" |
461 |
Pop $MultiUser.InstallModePage.Text |
462 |
|
463 |
${NSD_CreateRadioButton} 15u 50u -15u 10u "${MULTIUSER_INSTALLMODEPAGE_TEXT_ALLUSERS}" |
464 |
Pop $MultiUser.InstallModePage.AllUsers |
465 |
|
466 |
!ifdef MULTIUSER_INSTALLMODEPAGE_SHOWUSERNAME |
467 |
!ifdef NOSYSTEMCALLS |
468 |
ReadEnvStr $0 USERNAME |
469 |
!else |
470 |
System::Call 'ADVAPI32::GetUserName(t""r0,*i${NSIS_MAX_STRLEN})' |
471 |
!endif |
472 |
StrCmp $0 "" +2 |
473 |
StrCpy $0 " ($0)" |
474 |
${NSD_CreateRadioButton} 15u 70u -15u 10u "${MULTIUSER_INSTALLMODEPAGE_TEXT_CURRENTUSER}$0" |
475 |
!else |
476 |
${NSD_CreateRadioButton} 15u 70u -15u 10u "${MULTIUSER_INSTALLMODEPAGE_TEXT_CURRENTUSER}" |
477 |
!endif |
478 |
Pop $MultiUser.InstallModePage.CurrentUser |
479 |
|
480 |
${if} $MultiUser.InstallMode == "AllUsers" |
481 |
SendMessage $MultiUser.InstallModePage.AllUsers ${BM_SETCHECK} ${BST_CHECKED} 0 |
482 |
${else} |
483 |
SendMessage $MultiUser.InstallModePage.CurrentUser ${BM_SETCHECK} ${BST_CHECKED} 0 |
484 |
${endif} |
485 |
|
486 |
!insertmacro MULTIUSER_PAGE_FUNCTION_CUSTOM SHOW |
487 |
nsDialogs::Show |
488 |
!insertmacro MULTIUSER_PAGE_FUNCTION_CUSTOM DESTROYED |
489 |
|
490 |
FunctionEnd |
491 |
|
492 |
Function "${LEAVE}" |
493 |
SendMessage $MultiUser.InstallModePage.AllUsers ${BM_GETCHECK} 0 0 $0 |
494 |
|
495 |
${if} $0 = ${BST_CHECKED} |
496 |
Call MultiUser.InstallMode.AllUsers |
497 |
${else} |
498 |
Call MultiUser.InstallMode.CurrentUser |
499 |
${endif} |
500 |
|
501 |
!insertmacro MULTIUSER_PAGE_FUNCTION_CUSTOM LEAVE |
502 |
FunctionEnd |
503 |
|
504 |
!macroend |
505 |
|
506 |
|
507 |
!verbose pop |
508 |
!endif |