Statistiques
| Révision :

root / tmp / org.txm.setups / nsis-2.5 / Include / MultiUser.nsh @ 3100

Historique | Voir | Annoter | Télécharger (13,04 ko)

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