Statistiques
| Révision :

root / tmp / org.txm.setups / nsis / Include / MultiUser.nsh @ 2021

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

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