nsis-registry-changes-20031210
[openafs.git] / src / WINNT / install / NSIS / OpenAFS.nsi
1 ;OpenAFS Install Script for NSIS
2 ;
3 ; Written by Rob Murawski <rsm4@ieee.org>
4 ;
5 ;Based on:
6 ;NSIS Modern User Interface version 1.63
7 ;MultiLanguage Example Script
8 ;Written by Joost Verburg
9
10 !include nsi-includes.nsi
11 !ifndef v2.0b4
12 !define MUI_PRODUCT "OpenAFS" ;Define your own software name here
13 !define MUI_VERSION ${AFS_VERSION}
14 !else
15 Name "OpenAFS ${AFS_VERSION}"
16 VIProductVersion "${AFS_VERSION}.00"
17 VIAddVersionKey "ProductName" "OpenAFS"
18 VIAddVersionKey "CompanyName" "OpenAFS.org"
19 VIAddVersionKey "ProductVersion" ${AFS_VERSION}
20 VIAddVersionKey "FileVersion" ${AFS_VERSION}
21 VIAddVersionKey "FileDescription" "OpenAFS for Windows Installer"
22 VIAddVersionKey "LegalCopyright" "(C)2003"
23 !ifdef DEBUG
24 VIAddVersionKey "PrivateBuild" "Debug"
25 !endif
26 !endif
27
28 ; Define DEBUG if building a DEBUG installer
29 ;!define DEBUG 1
30
31 !include "MUI.nsh"
32 !include Sections.nsh
33
34 ;--------------------------------
35 ;Configuration
36
37   ;General
38 !ifndef DEBUG
39   OutFile "OpenAFSforWindows.exe"
40 !else
41   OutFile "OpenAFSforWindows-DEBUG.exe"
42 !endif
43   SilentInstall normal
44   SetCompressor bzip2
45   !define MUI_ICON "..\..\client_config\afs_config.ico"
46   !ifndef v2.0b4
47   !define MUI_UNICON "${NSISDIR}\Contrib\Icons\normal-uninstall.ico"
48   !else
49   !define MUI_UNICON "..\..\client_config\afs_config.ico"
50   !endif
51   !define AFS_COMPANY_NAME "OpenAFS"
52   !define AFS_PRODUCT_NAME "OpenAFS"
53   !define AFS_REGKEY_ROOT "Software\TransarcCorporation"
54   CRCCheck force
55
56   ;Folder selection page
57   InstallDir "$PROGRAMFILES\OpenAFS\AFS"
58   
59   ;Remember install folder
60   InstallDirRegKey HKCU "Software\TransarcCorporation" ""
61   
62   ;Remember the installer language
63   !define MUI_LANGDLL_REGISTRY_ROOT "HKCU" 
64   !define MUI_LANGDLL_REGISTRY_KEY "Software\TransarcCorporation" 
65   !define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language"
66   
67   ;Where are the files?
68   !define AFS_CLIENT_BUILDDIR "${AFS_DESTDIR}\root.client\usr\vice\etc"
69   !define AFS_WININSTALL_DIR "${AFS_DESTDIR}\WinInstall\Config"
70   !define AFS_BUILD_INCDIR "${AFS_DESTDIR}\include"
71   !define AFS_CLIENT_LIBDIR "${AFS_DESTDIR}\lib"
72   !define AFS_SERVER_BUILDDIR "${AFS_DESTDIR}\root.server\usr\afs\bin"
73   !define AFS_ETC_BUILDDIR "${AFS_DESTDIR}\etc"
74   
75 ;--------------------------------
76 ;Modern UI Configuration
77
78   ;!define MUI_LICENSEPAGE
79   !define MUI_CUSTOMPAGECOMMANDS
80   !define MUI_WELCOMEPAGE
81   !define MUI_COMPONENTSPAGE
82   !define MUI_COMPONENTSPAGE_SMALLDESC
83   !define MUI_DIRECTORYPAGE
84
85   !define MUI_ABORTWARNING
86   !define MUI_FINISHPAGE
87   
88   !define MUI_UNINSTALLER
89   !define MUI_UNCONFIRMPAGE
90
91   
92 !IFNDEF v2.0b4
93   !insertmacro MUI_PAGECOMMAND_WELCOME
94  ;!insertmacro MUI_PAGECOMMAND_LICENSE
95   !insertmacro MUI_PAGECOMMAND_COMPONENTS
96   !insertmacro MUI_PAGECOMMAND_DIRECTORY
97   Page custom AFSPageGetCellServDB
98   Page custom AFSPageGetCellName
99   !insertmacro MUI_PAGECOMMAND_INSTFILES
100   !insertmacro MUI_PAGECOMMAND_FINISH
101 !ELSE
102   !insertmacro MUI_PAGE_WELCOME
103   !insertmacro MUI_PAGE_COMPONENTS
104   !insertmacro MUI_PAGE_DIRECTORY
105   Page custom AFSPageGetCellServDB
106   Page custom AFSPageGetCellName
107   !insertmacro MUI_PAGE_INSTFILES
108   !insertmacro MUI_PAGE_FINISH
109 !ENDIF
110   
111   ;LicenseData "Licenses.rtf"
112 ;--------------------------------
113 ;Languages
114
115   !insertmacro MUI_LANGUAGE "English"
116   ;!insertmacro MUI_LANGUAGE "French"
117   !insertmacro MUI_LANGUAGE "German"
118   !insertmacro MUI_LANGUAGE "Spanish"
119   !insertmacro MUI_LANGUAGE "SimpChinese"
120   !insertmacro MUI_LANGUAGE "TradChinese"    
121   !insertmacro MUI_LANGUAGE "Japanese"
122   !ifdef v2.0b4
123   !insertmacro MUI_LANGUAGE "Korean"
124   !endif
125   ;!insertmacro MUI_LANGUAGE "Italian"
126   ;!insertmacro MUI_LANGUAGE "Dutch"
127   ;!insertmacro MUI_LANGUAGE "Danish"
128   ;!insertmacro MUI_LANGUAGE "Greek"
129   ;!insertmacro MUI_LANGUAGE "Russian"
130   !insertmacro MUI_LANGUAGE "PortugueseBR"
131   ;!insertmacro MUI_LANGUAGE "Polish"
132   ;!insertmacro MUI_LANGUAGE "Ukrainian"
133   ;!insertmacro MUI_LANGUAGE "Czech"
134   ;!insertmacro MUI_LANGUAGE "Slovak"
135   ;!insertmacro MUI_LANGUAGE "Croatian"
136   ;!insertmacro MUI_LANGUAGE "Bulgarian"
137   ;!insertmacro MUI_LANGUAGE "Hungarian"
138   ;!insertmacro MUI_LANGUAGE "Thai"
139   ;!insertmacro MUI_LANGUAGE "Romanian"
140   ;!insertmacro MUI_LANGUAGE "Macedonian"
141   ;!insertmacro MUI_LANGUAGE "Turkish"
142   
143 ;--------------------------------
144 ;Language Strings
145     
146   ;Descriptions
147   LangString DESC_SecCopyUI ${LANG_ENGLISH} "OpenAFS for Windows: English"
148   ;LangString DESC_SecCopyUI ${LANG_FRENCH} "OpenAFS for Windows: French"
149   LangString DESC_SecCopyUI ${LANG_GERMAN} "OpenAFS for Windows: German"
150   LangString DESC_SecCopyUI ${LANG_SPANISH} "OpenAFS for Windows: Spanish"
151   LangString DESC_SecCopyUI ${LANG_SIMPCHINESE} "OpenAFS for Windows: Simplified Chinese"
152   LangString DESC_SecCopyUI ${LANG_TRADCHINESE} "OpenAFS for Windows: Traditional Chinese description"
153   LangString DESC_SecCopyUI ${LANG_JAPANESE} "OpenAFS for Windows: Japanese description"
154 !ifdef v2.0b4
155   LangString DESC_SecCopyUI ${LANG_KOREAN} "OpenAFS for Windows: Korean description"
156 !endif
157   ;LangString DESC_SecCopyUI ${LANG_ITALIAN} "OpenAFS for Windows: Italian description"
158   ;LangString DESC_SecCopyUI ${LANG_DUTCH} "OpenAFS for Windows: Dutch description"
159   ;LangString DESC_SecCopyUI ${LANG_DANISH} "OpenAFS for Windows: Danish description"
160   ;LangString DESC_SecCopyUI ${LANG_GREEK} "OpenAFS for Windows: Greek description"
161   ;LangString DESC_SecCopyUI ${LANG_RUSSIAN} "OpenAFS for Windows: Russian description"
162   LangString DESC_SecCopyUI ${LANG_PORTUGUESEBR} "OpenAFS for Windows: Portuguese (Brasil) description"
163   ;LangString DESC_SecCopyUI ${LANG_POLISH} "OpenAFS for Windows: Polish description"
164   ;LangString DESC_SecCopyUI ${LANG_UKRAINIAN} "OpenAFS for Windows: Ukrainian description"
165   ;LangString DESC_SecCopyUI ${LANG_CZECH} "OpenAFS for Windows: Czechian description"
166   ;LangString DESC_SecCopyUI ${LANG_SLOVAK} "OpenAFS for Windows: Slovakian description"
167   ;LangString DESC_SecCopyUI ${LANG_CROATIAN} "OpenAFS for Windows: Slovakian description"
168   ;LangString DESC_SecCopyUI ${LANG_BULGARIAN} "OpenAFS for Windows: Bulgarian description"
169   ;LangString DESC_SecCopyUI ${LANG_HUNGARIAN} "OpenAFS for Windows: Hungarian description"
170   ;LangString DESC_SecCopyUI ${LANG_THAI} "OpenAFS for Windows: Thai description"
171   ;LangString DESC_SecCopyUI ${LANG_ROMANIAN} "OpenAFS for Windows: Romanian description"
172   ;LangString DESC_SecCopyUI ${LANG_MACEDONIAN} "OpenAFS for Windows: Macedonian description"
173   ;LangString DESC_SecCopyUI ${LANG_TURKISH} "OpenAFS for Windows: Turkish description"
174
175   LangString DESC_SecClient ${LANG_ENGLISH} "OpenAFS Client: Allows you to access AFS from your Windows PC."
176   LangString DESC_SecClient ${LANG_GERMAN} "OpenAFS Client: Allows you to access AFS from your Windows PC."
177   LangString DESC_SecClient ${LANG_SPANISH} "OpenAFS Client: Allows you to access AFS from your Windows PC."
178   LangString DESC_SecClient ${LANG_SIMPCHINESE} "OpenAFS Client: Allows you to access AFS from your Windows PC."
179   LangString DESC_SecClient ${LANG_TRADCHINESE} "OpenAFS Client: Allows you to access AFS from your Windows PC."
180   LangString DESC_SecClient ${LANG_JAPANESE} "OpenAFS Client: Allows you to access AFS from your Windows PC."
181 !ifdef v2.0b4  
182   LangString DESC_SecClient ${LANG_KOREAN} "OpenAFS Client: Allows you to access AFS from your Windows PC."
183 !endif
184   LangString DESC_SecClient ${LANG_PORTUGUESEBR} "OpenAFS Client: Allows you to access AFS from your Windows PC."
185   
186   LangString DESC_SecServer ${LANG_ENGLISH} "OpenAFS Server: Allows you to run an AFS file server."
187   LangString DESC_SecServer ${LANG_GERMAN} "OpenAFS Server: Allows you to run an AFS file server."
188   LangString DESC_SecServer ${LANG_SPANISH} "OpenAFS Server: Allows you to run an AFS file server."
189   LangString DESC_SecServer ${LANG_SIMPCHINESE} "OpenAFS Server: Allows you to run an AFS file server."
190   LangString DESC_SecServer ${LANG_TRADCHINESE} "OpenAFS Server: Allows you to run an AFS file server."
191   LangString DESC_SecServer ${LANG_JAPANESE} "OpenAFS Server: Allows you to run an AFS file server."
192 !ifdef v2.0b4  
193   LangString DESC_SecServer ${LANG_KOREAN} "OpenAFS Server: Allows you to run an AFS file server."
194 !endif
195   LangString DESC_SecServer ${LANG_PORTUGUESEBR} "OpenAFS Server: Allows you to run an AFS file server."
196   
197   LangString DESC_SecControl ${LANG_ENGLISH} "OpenAFS Control Center: GUI utilities for managing and configuring AFS."
198   LangString DESC_SecControl ${LANG_GERMAN} "OpenAFS Control Center: GUI utilities for managing and configuring AFS."
199   LangString DESC_SecControl ${LANG_SPANISH} "OpenAFS Control Center: GUI utilities for managing and configuring AFS."
200   LangString DESC_SecControl ${LANG_SIMPCHINESE} "OpenAFS Control Center: GUI utilities for managing and configuring AFS."
201   LangString DESC_SecControl ${LANG_TRADCHINESE} "OpenAFS Control Center: GUI utilities for managing and configuring AFS."
202   LangString DESC_SecControl ${LANG_JAPANESE} "OpenAFS Control Center: GUI utilities for managing and configuring AFS."
203 !ifdef v2.0b4  
204   LangString DESC_SecControl ${LANG_KOREAN} "OpenAFS Control Center: GUI utilities for managing and configuring AFS."
205 !endif
206   LangString DESC_SecControl ${LANG_PORTUGUESEBR} "OpenAFS Control Center: GUI utilities for managing and configuring AFS."
207   
208   LangString DESC_SecDocs ${LANG_ENGLISH} "Supplemental Documentation: Additional documentation for using OpenAFS."
209   LangString DESC_SecDocs ${LANG_GERMAN} "OpenAFS Supplemental Documentation: Additional documentation for using OpenAFS."
210   LangString DESC_SecDocs ${LANG_SPANISH} "OpenAFS Supplemental Documentation: Additional documentation for using OpenAFS."
211   LangString DESC_SecDocs ${LANG_SIMPCHINESE} "OpenAFS Supplemental Documentation: Additional documentation for using OpenAFS."
212   LangString DESC_SecDocs ${LANG_TRADCHINESE} "OpenAFS Supplemental Documentation: Additional documentation for using OpenAFS."
213   LangString DESC_SecDocs ${LANG_JAPANESE} "OpenAFS Supplemental Documentation: Additional documentation for using OpenAFS."
214 !ifdef v2.0b4  
215   LangString DESC_SecDocs ${LANG_KOREAN} "OpenAFS Supplemental Documentation: Additional documentation for using OpenAFS."
216 !endif
217   LangString DESC_SecDocs ${LANG_PORTUGUESEBR} "OpenAFS Supplemental Documentation: Additional documentation for using OpenAFS."
218   
219 ; Popup error messages
220   LangString CellError ${LANG_ENGLISH} "You must specify a valid CellServDB file to copy during install"
221   LangString CellError ${LANG_GERMAN} "You must specify a valid CellServDB file to copy during the install"
222   LangString CellError ${LANG_SPANISH} "You must specify a valid CellServDB file to copy during the install"
223   LangString CellError ${LANG_SIMPCHINESE} "You must specify a valid CellServDB file to copy during the install"
224   LangString CellError ${LANG_TRADCHINESE} "You must specify a valid CellServDB file to copy during the install"
225   LangString CellError ${LANG_JAPANESE} "You must specify a valid CellServDB file to copy during the install"
226 !ifdef v2.0b4  
227   LangString CellError ${LANG_KOREAN} "You must specify a valid CellServDB file to copy during the install"
228 !endif
229   LangString CellError ${LANG_PORTUGUESEBR} "You must specify a valid CellServDB file to copy during the install"
230   
231   
232 ; Upgrade/re-install strings
233    LangString UPGRADE_CLIENT ${LANG_ENGLISH} "Upgrade AFS Client"
234    LangString UPGRADE_CLIENT ${LANG_GERMAN} "Upgrade AFS Client"
235    LangString UPGRADE_CLIENT ${LANG_SPANISH} "Upgrade AFS Client"
236    LangString UPGRADE_CLIENT ${LANG_SIMPCHINESE} "Upgrade AFS Client"
237    LangString UPGRADE_CLIENT ${LANG_TRADCHINESE} "Upgrade AFS Client"
238    LangString UPGRADE_CLIENT ${LANG_JAPANESE} "Upgrade AFS Client"
239 !ifdef v2.0b4
240    LangString UPGRADE_CLIENT ${LANG_KOREAN} "Upgrade AFS Client"
241 !endif
242    LangString UPGRADE_CLIENT ${LANG_PORTUGUESEBR} "Upgrade AFS Client"
243  
244    LangString REINSTALL_CLIENT ${LANG_ENGLISH} "Re-install AFS Client"
245    LangString REINSTALL_CLIENT ${LANG_GERMAN} "Re-install AFS Client"
246    LangString REINSTALL_CLIENT ${LANG_SPANISH} "Re-install AFS Client"
247    LangString REINSTALL_CLIENT ${LANG_SIMPCHINESE} "Re-install AFS Client"
248    LangString REINSTALL_CLIENT ${LANG_TRADCHINESE} "Re-install AFS Client"
249    LangString REINSTALL_CLIENT ${LANG_JAPANESE} "Re-install AFS Client"
250 !ifdef v2.0b4
251    LangString REINSTALL_CLIENT ${LANG_KOREAN} "Re-install AFS Client"
252 !endif
253    LangString REINSTALL_CLIENT ${LANG_PORTUGUESEBR} "Re-install AFS Client"
254   
255    LangString UPGRADE_SERVER ${LANG_ENGLISH} "Upgrade AFS Server"
256    LangString UPGRADE_SERVER ${LANG_GERMAN} "Upgrade AFS Server"
257    LangString UPGRADE_SERVER ${LANG_SPANISH} "Upgrade AFS Server"
258    LangString UPGRADE_SERVER ${LANG_SIMPCHINESE} "Upgrade AFS Server"
259    LangString UPGRADE_SERVER ${LANG_TRADCHINESE} "Upgrade AFS Server"
260    LangString UPGRADE_SERVER ${LANG_JAPANESE} "Upgrade AFS Server"
261 !ifdef v2.0b4
262    LangString UPGRADE_SERVER ${LANG_KOREAN} "Upgrade AFS Server"
263 !endif
264    LangString UPGRADE_SERVER ${LANG_PORTUGUESEBR} "Upgrade AFS Server"
265     
266    LangString REINSTALL_SERVER ${LANG_ENGLISH} "Re-install AFS Server"
267    LangString REINSTALL_SERVER ${LANG_GERMAN} "Re-install AFS Server"
268    LangString REINSTALL_SERVER ${LANG_SPANISH} "Re-install AFS Server"
269    LangString REINSTALL_SERVER ${LANG_SIMPCHINESE} "Re-install AFS Server"
270    LangString REINSTALL_SERVER ${LANG_TRADCHINESE} "Re-install AFS Server"
271    LangString REINSTALL_SERVER ${LANG_JAPANESE} "Re-install AFS Server"
272 !ifdef v2.0b4   
273    LangString REINSTALL_SERVER ${LANG_KOREAN} "Re-install AFS Server"
274 !endif
275    LangString REINSTALL_SERVER ${LANG_PORTUGUESEBR} "Re-install AFS Server"
276   
277 ;--------------------------------
278 ; Macros
279 ; Macro - Upgrade DLL File
280  ; Written by Joost Verburg
281  ; ------------------------
282  ;
283  ; Example of usage:
284  ; !insertmacro UpgradeDLL "dllname.dll" "$SYSDIR\dllname.dll"
285  ;
286  ; !define UPGRADEDLL_NOREGISTER if you want to upgrade a DLL which cannot be registered
287  ;
288  ; Note that this macro sets overwrite to ON (the default) when it has been inserted.
289  ; If you are using another setting, set it again after inserting the macro.
290
291
292  !macro UpgradeDLL LOCALFILE DESTFILE
293
294    Push $R0
295    Push $R1
296    Push $R2
297    Push $R3
298
299    ;------------------------
300    ;Check file and version
301
302    IfFileExists "${DESTFILE}" "" "copy_${LOCALFILE}"
303
304    ClearErrors
305      GetDLLVersionLocal "${LOCALFILE}" $R0 $R1
306      GetDLLVersion "${DESTFILE}" $R2 $R3
307    IfErrors "upgrade_${LOCALFILE}"
308
309    IntCmpU $R0 $R2 "" "done_${LOCALFILE}" "upgrade_${LOCALFILE}"
310    IntCmpU $R1 $R3 "done_${LOCALFILE}" "done_${LOCALFILE}" "upgrade_${LOCALFILE}"
311
312    ;------------------------
313    ;Let's upgrade the DLL!
314
315    SetOverwrite try
316
317    "upgrade_${LOCALFILE}:"
318      !ifndef UPGRADEDLL_NOREGISTER
319        ;Unregister the DLL
320        UnRegDLL "${DESTFILE}"
321      !endif
322
323    ;------------------------
324    ;Try to copy the DLL directly
325
326    ClearErrors
327      StrCpy $R0 "${DESTFILE}"
328      Call ":file_${LOCALFILE}"
329    IfErrors "" "noreboot_${LOCALFILE}"
330
331    ;------------------------
332    ;DLL is in use. Copy it to a temp file and Rename it on reboot.
333
334    GetTempFileName $R0
335      Call ":file_${LOCALFILE}"
336    Rename /REBOOTOK $R0 "${DESTFILE}"
337
338    ;------------------------
339    ;Register the DLL on reboot
340
341    !ifndef UPGRADEDLL_NOREGISTER
342      WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\RunOnce" \
343      "Register ${DESTFILE}" '"$SYSDIR\rundll32.exe" "${DESTFILE},DllRegisterServer"'
344    !endif
345
346    Goto "done_${LOCALFILE}"
347
348    ;------------------------
349    ;DLL does not exist - just extract
350
351    "copy_${LOCALFILE}:"
352      StrCpy $R0 "${DESTFILE}"
353      Call ":file_${LOCALFILE}"
354
355    ;------------------------
356    ;Register the DLL
357
358    "noreboot_${LOCALFILE}:"
359      !ifndef UPGRADEDLL_NOREGISTER
360        RegDLL "${DESTFILE}"
361      !endif
362
363    ;------------------------
364    ;Done
365
366    "done_${LOCALFILE}:"
367
368    Pop $R3
369    Pop $R2
370    Pop $R1
371    Pop $R0
372
373    ;------------------------
374    ;End
375
376    Goto "end_${LOCALFILE}"
377
378    ;------------------------
379    ;Called to extract the DLL
380
381    "file_${LOCALFILE}:"
382      File /oname=$R0 "${LOCALFILE}"
383      Return
384
385    "end_${LOCALFILE}:"
386
387   ;------------------------
388   ;Set overwrite to default
389   ;(was set to TRY above)
390
391   SetOverwrite on
392
393  !macroend
394
395
396 ;--------------------------------
397 ;Reserve Files
398   
399   ;Things that need to be extracted on first (keep these lines before any File command!)
400   ;Only useful for BZIP2 compression
401   !insertmacro MUI_RESERVEFILE_LANGDLL
402   
403 ;--------------------------------
404 ;Installer Sections
405
406 ;----------------------
407 ; OpenAFS CLIENT
408 Section "AFS Client" SecClient
409
410   SetShellVarContext all
411   ; Stop any running services or we can't replace the files
412   ; Stop the running processes
413   ;GetTempFileName $R0
414   ;File /oname=$R0 "${AFS_WININSTALL_DIR}\Killer.exe"   ; Might not have the MSVCR71.DLL file to run
415   ;nsExec::Exec '$R0 afscreds.exe'
416   ;nsExec::Exec '$R0 krbcc32s.exe'
417
418   nsExec::Exec "net stop TransarcAFSDaemon"
419   nsExec::Exec "net stop TransarcAFSServer"
420   
421    ; Do client components
422   SetOutPath "$INSTDIR\Client\Program"
423   File "${AFS_CLIENT_BUILDDIR}\afsshare.exe"
424   File "${AFS_BUILD_INCDIR}\afs\cm_config.h"
425   File "${AFS_CLIENT_BUILDDIR}\libosi.dll"
426   File "${AFS_BUILD_INCDIR}\afs\kautils.h"
427   File "${AFS_CLIENT_BUILDDIR}\libafsconf.dll"
428   File "${AFS_CLIENT_BUILDDIR}\klog.exe"
429   File "${AFS_CLIENT_BUILDDIR}\tokens.exe"
430   File "${AFS_CLIENT_BUILDDIR}\unlog.exe"
431   File "${AFS_CLIENT_BUILDDIR}\fs.exe"
432   File "${AFS_CLIENT_LIBDIR}\libafsconf.lib"
433   File "${AFS_CLIENT_LIBDIR}\afsauthent.lib"
434   File "${AFS_CLIENT_BUILDDIR}\afscreds.exe"
435   File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext.dll"
436   File "${AFS_BUILD_INCDIR}\afs\auth.h"
437   File "${AFS_CLIENT_BUILDDIR}\afsd_service.exe"
438   File "${AFS_CLIENT_BUILDDIR}\afslogon.dll"
439   File "${AFS_CLIENT_BUILDDIR}\symlink.exe"
440   File "${AFS_DESTDIR}\bin\kpasswd.exe"
441   File "${AFS_SERVER_BUILDDIR}\pts.exe"
442   File "${AFS_SERVER_BUILDDIR}\bos.exe"
443   File "${AFS_SERVER_BUILDDIR}\kas.exe"
444   File "${AFS_SERVER_BUILDDIR}\vos.exe"
445   File "${AFS_SERVER_BUILDDIR}\udebug.exe"
446   File "${AFS_DESTDIR}\bin\translate_et.exe"
447   File "${AFS_DESTDIR}\etc\rxdebug.exe"
448   File "${AFS_DESTDIR}\etc\backup.exe"
449   
450 !ifdef DEBUG
451   File "${AFS_CLIENT_BUILDDIR}\afsshare.pdb"
452   File "${AFS_CLIENT_BUILDDIR}\libosi.pdb"
453   File "${AFS_CLIENT_BUILDDIR}\libafsconf.pdb"
454   File "${AFS_CLIENT_BUILDDIR}\klog.pdb"
455   File "${AFS_CLIENT_BUILDDIR}\tokens.pdb"
456   File "${AFS_CLIENT_BUILDDIR}\unlog.pdb"
457   File "${AFS_CLIENT_BUILDDIR}\fs.pdb"
458   File "${AFS_CLIENT_BUILDDIR}\afscreds.pdb"
459   File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext.pdb"
460   File "${AFS_CLIENT_BUILDDIR}\afsd_service.pdb"
461   File "${AFS_CLIENT_BUILDDIR}\afslogon.pdb"
462   File "${AFS_CLIENT_BUILDDIR}\symlink.pdb"
463   File "${AFS_DESTDIR}\bin\kpasswd.pdb"
464   ;File "${AFS_SERVER_BUILDDIR}\pts.pdb"
465   File "${AFS_SERVER_BUILDDIR}\bos.pdb"
466   File "${AFS_SERVER_BUILDDIR}\kas.pdb"
467   File "${AFS_SERVER_BUILDDIR}\vos.pdb"
468   File "${AFS_SERVER_BUILDDIR}\udebug.pdb"
469   File "${AFS_DESTDIR}\bin\translate_et.pdb"
470   File "${AFS_DESTDIR}\etc\rxdebug.pdb"
471   File "${AFS_DESTDIR}\etc\backup.pdb"
472 !endif
473
474   ; Client_headers
475    SetOutPath "$INSTDIR\Client\Program\Include"
476    File "${AFS_BUILD_INCDIR}\lock.h"
477    File "${AFS_BUILD_INCDIR}\lwp.h"
478    File "${AFS_BUILD_INCDIR}\preempt.h"
479    File "${AFS_BUILD_INCDIR}\timer.h"
480    File "${AFS_BUILD_INCDIR}\des.h"
481    File "${AFS_BUILD_INCDIR}\des_conf.h"
482    File "${AFS_BUILD_INCDIR}\mit-cpyright.h"
483    ;File "${AFS_BUILD_INCDIR}\des-odd.h"
484    File "${AFS_BUILD_INCDIR}\crypt.h"
485    File "${AFS_BUILD_INCDIR}\pthread.h"
486    File "${AFS_BUILD_INCDIR}\dbrpc.h"
487    File "${AFS_BUILD_INCDIR}\basic.h"
488    File "${AFS_BUILD_INCDIR}\osidebug.h"
489    File "${AFS_BUILD_INCDIR}\osiltype.h"
490    File "${AFS_BUILD_INCDIR}\osistatl.h"
491    File "${AFS_BUILD_INCDIR}\trylock.h"
492    File "${AFS_BUILD_INCDIR}\main.h"
493    File "${AFS_BUILD_INCDIR}\osibasel.h"
494    File "${AFS_BUILD_INCDIR}\osifd.h"
495    File "${AFS_BUILD_INCDIR}\osiqueue.h"
496    File "${AFS_BUILD_INCDIR}\osiutils.h"
497    File "${AFS_BUILD_INCDIR}\osi.h"
498    File "${AFS_BUILD_INCDIR}\osidb.h"
499    File "${AFS_BUILD_INCDIR}\osilog.h"
500    File "${AFS_BUILD_INCDIR}\osisleep.h"
501    File "${AFS_BUILD_INCDIR}\perf.h"
502    File "${AFS_BUILD_INCDIR}\ubik.h"
503    File "${AFS_BUILD_INCDIR}\ubik_int.h"
504    
505    
506    
507    SetOutPath "$INSTDIR\Client\Program\Include\afs"
508    File "${AFS_BUILD_INCDIR}\afs\afs_args.h"
509    File "${AFS_BUILD_INCDIR}\afs\debug.h"
510    File "${AFS_BUILD_INCDIR}\afs\param.h"
511    File "${AFS_BUILD_INCDIR}\afs\afs_sysnames.h"
512    ;File "${AFS_BUILD_INCDIR}\afs\permit_xprt.h"
513    File "${AFS_BUILD_INCDIR}\afs\stds.h"
514    File "${AFS_BUILD_INCDIR}\afs\icl.h"
515    File "${AFS_BUILD_INCDIR}\afs\procmgmt.h"
516    File "${AFS_BUILD_INCDIR}\afs\afsutil.h"
517    File "${AFS_BUILD_INCDIR}\afs\assert.h"
518    File "${AFS_BUILD_INCDIR}\afs\dirent.h"
519    File "${AFS_BUILD_INCDIR}\afs\errors.h"
520    File "${AFS_BUILD_INCDIR}\afs\itc.h"
521    File "${AFS_BUILD_INCDIR}\afs\vice.h"
522    File "${AFS_BUILD_INCDIR}\afs\pthread_glock.h"
523    File "${AFS_BUILD_INCDIR}\afs\errmap_nt.h"
524    File "${AFS_BUILD_INCDIR}\afs\dirpath.h"
525    File "${AFS_BUILD_INCDIR}\afs\ktime.h"
526    File "${AFS_BUILD_INCDIR}\afs\fileutil.h"
527    File "${AFS_BUILD_INCDIR}\afs\secutil_nt.h"
528    File "${AFS_BUILD_INCDIR}\afs\com_err.h"
529    File "${AFS_BUILD_INCDIR}\afs\error_table.h"
530    ;File "${AFS_BUILD_INCDIR}\afs\mit_sipb-cr.h"
531    File "${AFS_BUILD_INCDIR}\afs\cmd.h"
532    File "${AFS_BUILD_INCDIR}\afs\rxgen_consts.h"
533    File "${AFS_BUILD_INCDIR}\afs\afsint.h"
534    File "${AFS_BUILD_INCDIR}\afs\afscbint.h"
535    File "${AFS_BUILD_INCDIR}\afs\audit.h"
536    File "${AFS_BUILD_INCDIR}\afs\acl.h"
537    File "${AFS_BUILD_INCDIR}\afs\prs_fs.h"
538    File "${AFS_BUILD_INCDIR}\afs\afsd.h"
539    File "${AFS_BUILD_INCDIR}\afs\cm.h"
540    File "${AFS_BUILD_INCDIR}\afs\cm_buf.h"
541    File "${AFS_BUILD_INCDIR}\afs\cm_cell.h"
542    File "${AFS_BUILD_INCDIR}\afs\cm_config.h"
543    File "${AFS_BUILD_INCDIR}\afs\cm_conn.h"
544    File "${AFS_BUILD_INCDIR}\afs\cm_ioctl.h"
545    File "${AFS_BUILD_INCDIR}\afs\cm_scache.h"
546    File "${AFS_BUILD_INCDIR}\afs\cm_server.h"
547    File "${AFS_BUILD_INCDIR}\afs\cm_user.h"
548    File "${AFS_BUILD_INCDIR}\afs\cm_utils.h"
549    File "${AFS_BUILD_INCDIR}\afs\fs_utils.h"
550    File "${AFS_BUILD_INCDIR}\afs\krb.h"
551    File "${AFS_BUILD_INCDIR}\afs\krb_prot.h"
552    File "${AFS_BUILD_INCDIR}\afs\smb.h"
553    File "${AFS_BUILD_INCDIR}\afs\smb3.h"
554    File "${AFS_BUILD_INCDIR}\afs\smb_iocons.h"
555    File "${AFS_BUILD_INCDIR}\afs\smb_ioctl.h"
556    File "${AFS_BUILD_INCDIR}\afs\afsrpc.h"
557    File "${AFS_BUILD_INCDIR}\afs\afssyscalls.h"
558    File "${AFS_BUILD_INCDIR}\afs\pioctl_nt.h"
559    File "${AFS_BUILD_INCDIR}\afs\auth.h"
560    File "${AFS_BUILD_INCDIR}\afs\cellconfig.h"
561    File "${AFS_BUILD_INCDIR}\afs\keys.h"
562    File "${AFS_BUILD_INCDIR}\afs\ptserver.h"
563    File "${AFS_BUILD_INCDIR}\afs\ptint.h"
564    File "${AFS_BUILD_INCDIR}\afs\pterror.h"
565    File "${AFS_BUILD_INCDIR}\afs\ptint.h"
566    File "${AFS_BUILD_INCDIR}\afs\pterror.h"
567    File "${AFS_BUILD_INCDIR}\afs\ptclient.h"
568    File "${AFS_BUILD_INCDIR}\afs\prserver.h"
569    File "${AFS_BUILD_INCDIR}\afs\print.h"
570    File "${AFS_BUILD_INCDIR}\afs\prerror.h"
571    File "${AFS_BUILD_INCDIR}\afs\prclient.h"
572    File "${AFS_BUILD_INCDIR}\afs\kautils.h"
573    File "${AFS_BUILD_INCDIR}\afs\kauth.h"
574    File "${AFS_BUILD_INCDIR}\afs\kaport.h"
575    File "${AFS_BUILD_INCDIR}\afs\vl_opcodes.h"
576    File "${AFS_BUILD_INCDIR}\afs\vlserver.h"
577    File "${AFS_BUILD_INCDIR}\afs\vldbint.h"
578    File "${AFS_BUILD_INCDIR}\afs\usd.h"
579    File "${AFS_BUILD_INCDIR}\afs\bubasics.h"
580    File "${AFS_BUILD_INCDIR}\afs\butc.h"
581    File "${AFS_BUILD_INCDIR}\afs\bumon.h"
582    File "${AFS_BUILD_INCDIR}\afs\butm.h"
583    File "${AFS_BUILD_INCDIR}\afs\tcdata.h"
584    File "${AFS_BUILD_INCDIR}\afs\budb.h"
585    ;File "${AFS_BUILD_INCDIR}\afs\budb_errors.h"
586    File "${AFS_BUILD_INCDIR}\afs\budb_client.h"
587    File "${AFS_BUILD_INCDIR}\afs\dir.h"
588    File "${AFS_BUILD_INCDIR}\afs\fssync.h"
589    File "${AFS_BUILD_INCDIR}\afs\ihandle.h"
590    File "${AFS_BUILD_INCDIR}\afs\nfs.h"
591    File "${AFS_BUILD_INCDIR}\afs\ntops.h"
592    File "${AFS_BUILD_INCDIR}\afs\partition.h"
593    File "${AFS_BUILD_INCDIR}\afs\viceinode.h"
594    File "${AFS_BUILD_INCDIR}\afs\vnode.h"
595    File "${AFS_BUILD_INCDIR}\afs\volume.h"
596    File "${AFS_BUILD_INCDIR}\afs\voldefs.h"
597    File "${AFS_BUILD_INCDIR}\afs\volser.h"
598    File "${AFS_BUILD_INCDIR}\afs\volint.h"
599    File "${AFS_BUILD_INCDIR}\afs\fs_stats.h"
600    File "${AFS_BUILD_INCDIR}\afs\bosint.h"
601    File "${AFS_BUILD_INCDIR}\afs\bnode.h"
602    
603    
604    SetOutPath "$INSTDIR\Client\Program\Include\rx"
605    File "${AFS_BUILD_INCDIR}\rx\rx.h"
606    File "${AFS_BUILD_INCDIR}\rx\rx_packet.h"
607    File "${AFS_BUILD_INCDIR}\rx\rx_user.h"
608    File "${AFS_BUILD_INCDIR}\rx\rx_event.h"
609    File "${AFS_BUILD_INCDIR}\rx\rx_queue.h"
610    File "${AFS_BUILD_INCDIR}\rx\rx_globals.h"
611    File "${AFS_BUILD_INCDIR}\rx\rx_clock.h"
612    File "${AFS_BUILD_INCDIR}\rx\rx_misc.h"
613    File "${AFS_BUILD_INCDIR}\rx\rx_multi.h"
614    File "${AFS_BUILD_INCDIR}\rx\rx_null.h"
615    File "${AFS_BUILD_INCDIR}\rx\rx_lwp.h"
616    File "${AFS_BUILD_INCDIR}\rx\rx_pthread.h"
617    File "${AFS_BUILD_INCDIR}\rx\rx_xmit_nt.h"
618    File "${AFS_BUILD_INCDIR}\rx\xdr.h"
619    File "${AFS_BUILD_INCDIR}\rx\rxkad.h"
620    
621    
622
623    ; Client Sample
624    SetOutPath "$INSTDIR\Client\Program\Sample"
625    File "..\..\afsd\sample\token.c"
626    
627    Call AFSLangFiles
628    
629
630    
631   ; Do WINDOWSDIR components
632   ; Get AFS CellServDB file
633   Call afs.GetCellServDB
634 !ifdef INSTALL_LOOPBACK
635   Call afs.InstallMSLoopback
636 !endif
637
638 !ifdef INSTALL_KFW
639   ; Include Kerberos for Windows files in the installer...
640   SetOutPath "$INSTDIR\kfw\bin\"
641   File "${KFW_SOURCE}\bin\*"
642   SetOutPath "$INSTDIR\kfw\doc"
643   File "${KFW_SOURCE}\doc\*"
644 !endif
645   
646   ReadINIStr $R0 $0 "Field 2" "State"
647   StrCmp $R0 "1" UsePkg DontUsePkg
648  UsePkg:
649    SetOutPath "$WINDIR"
650    File "afsdcell.ini"
651 DontUsePkg:
652    ReadINIStr $R0 $0 "Field 6" "State"
653    StrCmp $R0 "1" UseFile DontUseFile
654 UseFile:
655    ReadINIStr $R0 $0 "Field 7" "State"
656    CopyFiles $R0 "$WINDIR\afsdcell.ini"
657 DontUseFile:
658    
659   ;Store install folder
660   WriteRegStr HKCU "${AFS_REGKEY_ROOT}\Client" "" $INSTDIR
661   Call AFSCommon.Install
662   
663   ; Write registry entries
664   WriteRegStr HKCR "*\shellex\ContextMenuHandlers\AFS Client Shell Extension" "" "{DC515C27-6CAC-11D1-BAE7-00C04FD140D2}"
665   WriteRegStr HKCR "CLSID\{DC515C27-6CAC-11D1-BAE7-00C04FD140D2}" "" "AFS Client Shell Extension"
666   WriteRegStr HKCR "CLSID\{DC515C27-6CAC-11D1-BAE7-00C04FD140D2}\InprocServer32" "" "$INSTDIR\Client\Program\afs_shl_ext.dll"
667   WriteRegStr HKCR "CLSID\{DC515C27-6CAC-11D1-BAE7-00C04FD140D2}\InprocServer32" "ThreadingModel" "Apartment"
668   WriteRegStr HKCR "FOLDER\shellex\ContextMenuHandlers\AFS Client Shell Extension" "" "{DC515C27-6CAC-11D1-BAE7-00C04FD140D2}"
669   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved" "{DC515C27-6CAC-11D1-BAE7-00C04FD140D2}" "AFS Client Shell Extension"
670   
671   ; AFS Reg entries
672   DeleteRegKey HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion"
673   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion" "VersionString" ${AFS_VERSION}
674   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion" "Title" "AFS Client"
675   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion" "Description" "AFS Client"
676   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion" "PathName" "$INSTDIR\Client\Program"
677   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion" "Software Type" "File System"
678   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion" "MajorVersion" ${AFS_MAJORVERSION}
679   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion" "MinorVersion" ${AFS_MINORVERSION}
680   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion" "PatchLevel" ${AFS_PATCHLEVEL}
681   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Client\${AFS_VERSION}" "VersionString" ${AFS_VERSION}
682   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Client\${AFS_VERSION}" "Title" "AFS Client"
683   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Client\${AFS_VERSION}" "Description" "AFS Client"
684   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Client\${AFS_VERSION}" "Software Type" "File System"
685   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Client\${AFS_VERSION}" "PathName" "$INSTDIR\Client\Program"
686   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Client\${AFS_VERSION}" "MajorVersion" ${AFS_MAJORVERSION}
687   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Client\${AFS_VERSION}" "MinorVersion" ${AFS_MINORVERSION}
688   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Client\${AFS_VERSION}" "PatchLevel" ${AFS_PATCHLEVEL}
689
690    ; Set network settings
691   WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\NetBT\Parameters" "SmbDeviceEnabled" 0
692   
693   ;Write start menu entries
694   CreateDirectory "$SMPROGRAMS\OpenAFS\Client"
695   CreateShortCut "$SMPROGRAMS\OpenAFS\Uninstall OpenAFS.lnk" "$INSTDIR\Uninstall.exe"
696   CreateShortCut "$SMPROGRAMS\OpenAFS\Client\Authentication.lnk" "$INSTDIR\Client\Program\afscreds.exe" 
697   CreateShortCut "$SMSTARTUP\AFS Credentials.lnk" "$INSTDIR\Client\Program\afscreds.exe" 
698
699   Push "$INSTDIR\Client\Program"
700   Call AddToPath
701   Push "$INSTDIR\Common"
702   Call AddToPath
703   
704 !ifdef INSTALL_KFW
705   ; Add kfw to path too
706   Push "$INSTDIR\kfw\bin"
707   Call AddToPath
708 !endif
709    
710   ; Create the AFS service
711   SetOutPath "$INSTDIR\Common"
712   File "${AFS_WININSTALL_DIR}\Service.exe"
713   nsExec::Exec "net stop TransarcAFSDaemon"
714   ;IMPORTANT!  If we are not refreshing the config files, do NOT remove the service
715   ;Don't re-install because it must be present or we wouldn't have passed the Reg check
716   ReadINIStr $R2 $1 "Field 2" "State"
717
718   StrCmp $R2 "" skipremove
719   nsExec::Exec '$INSTDIR\Common\Service.exe u TransarcAFSDaemon'
720   nsExec::Exec '$INSTDIR\Common\Service.exe TransarcAFSDaemon "$INSTDIR\Client\Program\afsd_service.exe" "OpenAFS Client Service"'
721 skipremove:
722   Delete "$INSTDIR\Common\service.exe"
723
724   ; Daemon entries
725   WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon" "(Default)" ""
726   WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider" "AuthentProviderPath" "$INSTDIR\Client\Program\afslogon.dll"
727   WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider" "Class" 2
728   WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider" "LogonOptions" 0
729   WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider" "LogonScript" "$INSTDIR\Client\Program\afscreds.exe -:%s -x"
730   WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider" "Name" "OpenAFSDaemon"
731   WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider" "ProviderPath" "$INSTDIR\Client\Program\afslogon.dll"
732
733   ;Write cell name
734   ReadINIStr $R0 $1 "Field 2" "State"
735   WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters" "Cell" $R0
736   WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters" "ShowTrayIcon" 1
737   WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters" "SecurityLevel" 1  
738   WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters" "FreelanceClient" 1  
739   WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters" "UseDNS" 0  
740   SetRebootFlag true
741   
742   WriteUninstaller "$INSTDIR\Uninstall.exe"
743   
744 SectionEnd
745
746 ;------------------------
747 ; OpenAFS SERVER  
748 Section "AFS Server" SecServer
749
750   SetShellVarContext all
751   ; Stop any running services or we can't replace the files
752   ; Stop the running processes
753   ;GetTempFileName $R0
754   ;File /oname=$R0 "${AFS_WININSTALL_DIR}\Killer.exe"   ; Might not have the MSVCR71.DLL file to run
755   ;nsExec::Exec '$R0 afscreds.exe'
756   ;nsExec::Exec '$R0 krbcc32s.exe'
757
758   nsExec::Exec "net stop TransarcAFSDaemon"
759   nsExec::Exec "net stop TransarcAFSServer"
760
761   CreateDirectory "$INSTDIR\Server\usr\afs\etc"
762   CreateDirectory "$INSTDIR\Server\usr\afs\local"
763   CreateDirectory "$INSTDIR\Server\usr\afs\logs"
764   
765   SetOutPath "$INSTDIR\Server\usr\afs\bin"  
766   File "${AFS_SERVER_BUILDDIR}\afskill.exe"
767   File "${AFS_SERVER_BUILDDIR}\afssvrcfg.exe"
768   File "${AFS_SERVER_BUILDDIR}\bosctlsvc.exe"
769   File "${AFS_SERVER_BUILDDIR}\bosserver.exe"
770   File "${AFS_SERVER_BUILDDIR}\buserver.exe"
771   File "${AFS_ETC_BUILDDIR}\butc.exe"
772   File "${AFS_SERVER_BUILDDIR}\fileserver.exe"
773   File "${AFS_ETC_BUILDDIR}\fms.exe"
774   File "${AFS_SERVER_BUILDDIR}\kaserver.exe"
775   File "${AFS_SERVER_BUILDDIR}\ptserver.exe"
776   File "${AFS_SERVER_BUILDDIR}\salvager.exe"
777   File "${AFS_SERVER_BUILDDIR}\upclient.exe"
778   File "${AFS_SERVER_BUILDDIR}\upserver.exe"
779   File "${AFS_SERVER_BUILDDIR}\vlserver.exe"
780   File "${AFS_SERVER_BUILDDIR}\volinfo.exe"
781   File "${AFS_SERVER_BUILDDIR}\volserver.exe"
782
783 !ifdef DEBUG
784   File "${AFS_SERVER_BUILDDIR}\afskill.pdb"
785   File "${AFS_SERVER_BUILDDIR}\afssvrcfg.pdb"
786   File "${AFS_SERVER_BUILDDIR}\bosctlsvc.pdb"
787   File "${AFS_SERVER_BUILDDIR}\bosserver.pdb"
788   File "${AFS_SERVER_BUILDDIR}\buserver.pdb"
789   File "${AFS_ETC_BUILDDIR}\butc.pdb"
790   File "${AFS_SERVER_BUILDDIR}\fileserver.pdb"
791   File "${AFS_ETC_BUILDDIR}\fms.pdb"
792   File "${AFS_SERVER_BUILDDIR}\kaserver.pdb"
793   File "${AFS_SERVER_BUILDDIR}\ptserver.pdb"
794   File "${AFS_SERVER_BUILDDIR}\salvager.pdb"
795   File "${AFS_SERVER_BUILDDIR}\upclient.pdb"
796   File "${AFS_SERVER_BUILDDIR}\upserver.pdb"
797   File "${AFS_SERVER_BUILDDIR}\vlserver.pdb"
798   File "${AFS_SERVER_BUILDDIR}\volinfo.pdb"
799   File "${AFS_SERVER_BUILDDIR}\volserver.pdb"
800 !endif
801  
802  ;AFS Server common files
803  SetOutPath "$INSTDIR\Common"
804  File "${AFS_SERVER_BUILDDIR}\afsvosadmin.dll"
805  File "${AFS_SERVER_BUILDDIR}\afsbosadmin.dll"
806  File "${AFS_SERVER_BUILDDIR}\afscfgadmin.dll"
807  File "${AFS_SERVER_BUILDDIR}\afskasadmin.dll"
808  File "${AFS_SERVER_BUILDDIR}\afsptsadmin.dll"
809
810 !ifdef DEBUG
811  File "${AFS_SERVER_BUILDDIR}\afsvosadmin.pdb"
812  File "${AFS_SERVER_BUILDDIR}\afsbosadmin.pdb"
813  File "${AFS_SERVER_BUILDDIR}\afscfgadmin.pdb"
814  File "${AFS_SERVER_BUILDDIR}\afskasadmin.pdb"
815  File "${AFS_SERVER_BUILDDIR}\afsptsadmin.pdb"
816 !endif
817  SetOutPath "$INSTDIR\Common"
818    Call AFSLangFiles
819    
820    SetOutPath "$WINDIR"
821    File "${AFS_SERVER_BUILDDIR}\afsserver.cpl"
822
823 !ifdef DEBUG
824    File "${AFS_SERVER_BUILDDIR}\afsserver.pdb"
825 !endif
826    
827   ;Store install folder
828   WriteRegStr HKCU "${AFS_REGKEY_ROOT}\AFS Server" "" $INSTDIR
829   
830   DeleteRegKey HKLM "${AFS_REGKEY_ROOT}\AFS Server\CurrentVersion"
831   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Server\CurrentVersion" "VersionString" ${AFS_VERSION}
832   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Server\CurrentVersion" "Title" "AFS Server"
833   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Server\CurrentVersion" "Description" "AFS Server for Windows"
834   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Server\CurrentVersion" "PathName" "$INSTDIR\Server"
835   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Server\CurrentVersion" "Software Type" "File System"
836   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Server\CurrentVersion" "MajorVersion" ${AFS_MAJORVERSION}
837   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Server\CurrentVersion" "MinorVersion" ${AFS_MINORVERSION}
838   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Server\CurrentVersion" "PatchLevel" ${AFS_PATCHLEVEL}
839   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Server\${AFS_VERSION}" "VersionString" ${AFS_VERSION}
840   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Server\${AFS_VERSION}" "Title" "AFS Server"
841   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Server\${AFS_VERSION}" "Description" "AFS Server for Windows"
842   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Server\${AFS_VERSION}" "Software Type" "File System"
843   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Server\${AFS_VERSION}" "PathName" "$INSTDIR\Server"
844   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Server\${AFS_VERSION}" "MajorVersion" ${AFS_MAJORVERSION}
845   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Server\${AFS_VERSION}" "MinorVersion" ${AFS_MINORVERSION}
846   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Server\${AFS_VERSION}" "PatchLevel" ${AFS_PATCHLEVEL}
847
848   ; Install the service
849   SetOutPath "$INSTDIR\Common"
850   File "${AFS_WININSTALL_DIR}\Service.exe"
851 !ifdef DEBUG
852   File "${AFS_WININSTALL_DIR}\Service.pdb"
853 !endif
854   nsExec::Exec "net stop TransarcAFSServer"
855   nsExec::Exec '$INSTDIR\Common\service.exe u TransarcAFSServer'
856   nsExec::Exec '$INSTDIR\Common\service.exe TransarcAFSServer "$INSTDIR\Server\usr\afs\bin\bosctlsvc.exe" "OpenAFS AFS Server"'
857   Delete "$INSTDIR\Common\service.exe"
858   
859   CreateDirectory "$SMPROGRAMS\OpenAFS\Server"
860   CreateShortCut "$SMPROGRAMS\OpenAFS\Server\Configuration Wizard.lnk" "$INSTDIR\Server\usr\afs\bin\afssvrcfg.exe" "/wizard"
861   
862   WriteUninstaller "$INSTDIR\Uninstall.exe"
863
864 SectionEnd
865
866
867 ;----------------------------
868 ; OpenAFS Control Center
869 Section "AFS Control Center" SecControl
870
871   SetShellVarContext all
872
873    SetOutPath "$INSTDIR\Control Center"
874   File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager.exe"
875   File "${AFS_SERVER_BUILDDIR}\TaAfsAdmSvr.exe"
876   File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager.exe"
877    
878 !ifdef DEBUG
879   File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager.pdb"
880   File "${AFS_SERVER_BUILDDIR}\TaAfsAdmSvr.pdb"
881   File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager.pdb"
882 !endif
883
884  ;AFS Server common files
885  Call AFSCommon.Install
886  Call AFSLangFiles
887  SetOutPath "$INSTDIR\Common"
888
889   SetOutPath "$INSTDIR\Common"
890 !IFDEF DEBUG
891 !IFDEF CL_1310
892   File "${AFS_WININSTALL_DIR}\msvcr71d.dll"
893   File "${AFS_WININSTALL_DIR}\msvcr71d.pdb"
894 !ELSE
895 !IFDEF CL_1300
896   File "${AFS_WININSTALL_DIR}\msvcrtd.dll"
897   File "${AFS_WININSTALL_DIR}\msvcrtd.pdb"
898 !ELSE
899   File "${AFS_WININSTALL_DIR}\msvcrtd.dll"
900   File "${AFS_WININSTALL_DIR}\msvcrtd.pdb"
901 !ENDIF
902 !ENDIF
903 !ELSE
904 !IFDEF CL_1310
905   File "${AFS_WININSTALL_DIR}\msvcr71.dll"
906 !ELSE
907 !IFDEF CL_1300
908   File "${AFS_WININSTALL_DIR}\msvcrt.dll"
909 !ELSE
910   File "${AFS_WININSTALL_DIR}\msvcrt.dll"
911 !ENDIF
912 !ENDIF
913 !ENDIF
914    
915    ;Store install folder
916   WriteRegStr HKCU "${AFS_REGKEY_ROOT}\AFS Control Center\CurrentVersion" "PathName" $INSTDIR
917   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Control Center\CurrentVersion" "VersionString" ${AFS_VERSION}
918   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Control Center\CurrentVersion" "MajorVersion" ${AFS_MAJORVERSION}
919   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Control Center\CurrentVersion" "MinorVersion" ${AFS_MINORVERSION}
920   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Control Center\CurrentVersion" "PatchLevel" ${AFS_PATCHLEVEL}
921   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Control Center\${AFS_VERSION}" "VersionString" ${AFS_VERSION}
922   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Control Center\${AFS_VERSION}" "MajorVersion" ${AFS_MAJORVERSION}
923   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Control Center\${AFS_VERSION}" "MinorVersion" ${AFS_MINORVERSION}
924   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Control Center\${AFS_VERSION}" "PatchLevel" ${AFS_PATCHLEVEL}
925   
926
927   ;Write start menu entries
928   CreateDirectory "$SMPROGRAMS\OpenAFS\Control Center"
929   CreateShortCut "$SMPROGRAMS\OpenAFS\Control Center\Account Manager.lnk" "$INSTDIR\Control Center\TaAfsAccountManager.exe"
930   CreateShortCut "$SMPROGRAMS\OpenAFS\Control Center\Server Manager.lnk" "$INSTDIR\Control Center\TaAfsServerManager.exe"
931   
932   WriteUninstaller "$INSTDIR\Uninstall.exe"
933
934 SectionEnd   
935
936
937 ;----------------------------
938 ; OpenAFS Supplemental Documentation
939 Section "Supplemental Documentation" SecDocs
940   SetShellVarContext all
941
942    StrCmp $LANGUAGE ${LANG_ENGLISH} DoEnglish
943    StrCmp $LANGUAGE ${LANG_GERMAN} DoGerman
944    StrCmp $LANGUAGE ${LANG_SPANISH} DoSpanish
945    StrCmp $LANGUAGE ${LANG_JAPANESE} DoJapanese
946 !ifdef v2.0b4
947    StrCmp $LANGUAGE ${LANG_KOREAN} DoKorean
948 !endif
949    StrCmp $LANGUAGE ${LANG_PORTUGUESEBR} DoPortugueseBR
950    StrCmp $LANGUAGE ${LANG_SIMPCHINESE} DoSimpChinese
951    StrCmp $LANGUAGE ${LANG_TRADCHINESE} DoTradChinese
952    
953    
954 DoEnglish:
955    SetOutPath "$INSTDIR\Documentation\html"
956    File "..\..\doc\install\Documentation\en_US\html\*"
957    SetOutPath "$INSTDIR\Documentation\html\CmdRef"
958    File "..\..\doc\install\Documentation\en_US\html\CmdRef\*"
959    SetOutPath "$INSTDIR\Documentation\html\InstallGd"
960    File "..\..\doc\install\Documentation\en_US\html\InstallGd\*"
961    SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes"
962    File "..\..\doc\install\Documentation\en_US\html\ReleaseNotes\*"
963    SetOutPath "$INSTDIR\Documentation\html\SysAdminGd"
964    File "..\..\doc\install\Documentation\en_US\html\SysAdminGd\*"
965    goto DoneLanguage
966    
967 DoGerman:
968    SetOutPath "$INSTDIR\Documentation"
969    File "..\..\doc\install\Documentation\de_DE\README.TXT"
970    SetOutPath "$INSTDIR\Documentation\html"
971    File "..\..\doc\install\Documentation\de_DE\html\*"
972    SetOutPath "$INSTDIR\Documentation\html\CmdRef"
973    ;File "..\..\doc\install\Documentation\de_DE\html\CmdRef\*"
974    SetOutPath "$INSTDIR\Documentation\html\InstallGd"
975    File "..\..\doc\install\Documentation\de_DE\html\InstallGd\*"
976    ;SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes"
977    ;File "..\..\doc\install\Documentation\de_DE\html\ReleaseNotes\*"
978    ;SetOutPath "$INSTDIR\Documentation\html\SysAdminGd"
979    ;File "..\..\doc\install\Documentation\de_DE\html\SysAdminGd\*"
980    goto DoneLanguage
981    
982 DoSpanish:
983    SetOutPath "$INSTDIR\Documentation"
984    File "..\..\doc\install\Documentation\es_ES\README.TXT"
985    SetOutPath "$INSTDIR\Documentation\html"
986    File "..\..\doc\install\Documentation\es_ES\html\*"
987    SetOutPath "$INSTDIR\Documentation\html\CmdRef"
988    ;File "..\..\doc\install\Documentation\es_ES\html\CmdRef\*"
989    SetOutPath "$INSTDIR\Documentation\html\InstallGd"
990    ;File "..\..\doc\install\Documentation\es_ES\html\InstallGd\*"
991    SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes"
992    ;File "..\..\doc\install\Documentation\es_ES\html\ReleaseNotes\*"
993    SetOutPath "$INSTDIR\Documentation\html\SysAdminGd"
994    ;File "..\..\doc\install\Documentation\es_ES\html\SysAdminGd\*"
995    goto DoneLanguage
996
997 DoJapanese:
998    SetOutPath "$INSTDIR\Documentation"
999    File "..\..\doc\install\Documentation\ja_JP\README.TXT"
1000    SetOutPath "$INSTDIR\Documentation\html"
1001    File "..\..\doc\install\Documentation\ja_JP\html\*"
1002    SetOutPath "$INSTDIR\Documentation\html\CmdRef"
1003    File "..\..\doc\install\Documentation\ja_JP\html\CmdRef\*"
1004    SetOutPath "$INSTDIR\Documentation\html\InstallGd"
1005    File "..\..\doc\install\Documentation\ja_JP\html\InstallGd\*"
1006    SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes"
1007    ;File "..\..\doc\install\Documentation\ja_JP\html\ReleaseNotes\*"
1008    SetOutPath "$INSTDIR\Documentation\html\SysAdminGd"
1009    ;File "..\..\doc\install\Documentation\ja_JP\html\SysAdminGd\*"
1010    goto DoneLanguage
1011    
1012 DoKorean:
1013    SetOutPath "$INSTDIR\Documentation"
1014    File "..\..\doc\install\Documentation\ko_KR\README.TXT"
1015    SetOutPath "$INSTDIR\Documentation\html"
1016    File "..\..\doc\install\Documentation\ko_KR\html\*"
1017    ;SetOutPath "$INSTDIR\Documentation\html\CmdRef"
1018    ;File "..\..\doc\install\Documentation\ko_KR\html\CmdRef\*"
1019    SetOutPath "$INSTDIR\Documentation\html\InstallGd"
1020    File "..\..\doc\install\Documentation\ko_KR\html\InstallGd\*"
1021    SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes"
1022    File "..\..\doc\install\Documentation\ko_KR\html\ReleaseNotes\*"
1023    SetOutPath "$INSTDIR\Documentation\html\SysAdminGd"
1024    File "..\..\doc\install\Documentation\ko_KR\html\SysAdminGd\*"
1025    goto DoneLanguage
1026    
1027 DoPortugueseBR:
1028    SetOutPath "$INSTDIR\Documentation"
1029    File "..\..\doc\install\Documentation\pt_BR\README.TXT"
1030    SetOutPath "$INSTDIR\Documentation\html"
1031    File "..\..\doc\install\Documentation\pt_BR\html\*"
1032    ;SetOutPath "$INSTDIR\Documentation\html\CmdRef"
1033    ;File "..\..\doc\install\Documentation\pt_BR\html\CmdRef\*"
1034    SetOutPath "$INSTDIR\Documentation\html\InstallGd"
1035    File "..\..\doc\install\Documentation\pt_BR\html\InstallGd\*"
1036    SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes"
1037    File "..\..\doc\install\Documentation\pt_BR\html\ReleaseNotes\*"
1038    ;SetOutPath "$INSTDIR\Documentation\html\SysAdminGd"
1039    ;File "..\..\doc\install\Documentation\pt_BR\html\SysAdminGd\*"
1040    goto DoneLanguage
1041
1042 DoSimpChinese:
1043    SetOutPath "$INSTDIR\Documentation"
1044    File "..\..\doc\install\Documentation\zh_CN\README.TXT"
1045    SetOutPath "$INSTDIR\Documentation\html"
1046    File "..\..\doc\install\Documentation\zh_CN\html\*"
1047    ;SetOutPath "$INSTDIR\Documentation\html\CmdRef"
1048    ;File "..\..\doc\install\Documentation\zh_CN\html\CmdRef\*"
1049    SetOutPath "$INSTDIR\Documentation\html\InstallGd"
1050    File "..\..\doc\install\Documentation\zh_CN\html\InstallGd\*"
1051    SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes"
1052    File "..\..\doc\install\Documentation\zh_CN\html\ReleaseNotes\*"
1053    ;SetOutPath "$INSTDIR\Documentation\html\SysAdminGd"
1054    ;File "..\..\doc\install\Documentation\zh_CN\html\SysAdminGd\*"
1055    goto DoneLanguage
1056    
1057 DoTradChinese:
1058    SetOutPath "$INSTDIR\Documentation"
1059    File "..\..\doc\install\Documentation\zh_TW\README.TXT"
1060    SetOutPath "$INSTDIR\Documentation\html"
1061    File "..\..\doc\install\Documentation\zh_TW\html\*"
1062    ;SetOutPath "$INSTDIR\Documentation\html\CmdRef"
1063    ;File "..\..\doc\install\Documentation\zh_TW\html\CmdRef\*"
1064    SetOutPath "$INSTDIR\Documentation\html\InstallGd"
1065    File "..\..\doc\install\Documentation\zh_TW\html\InstallGd\*"
1066    SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes"
1067    File "..\..\doc\install\Documentation\zh_TW\html\ReleaseNotes\*"
1068    ;SetOutPath "$INSTDIR\Documentation\html\SysAdminGd"
1069    ;File "..\..\doc\install\Documentation\zh_TW\html\SysAdminGd\*"
1070    goto DoneLanguage
1071    
1072    
1073 DoneLanguage:
1074    ;Store install folder
1075   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Supplemental Documentation" "" $INSTDIR
1076   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Supplemental Documentation\CurrentVersion" "VersionString" ${AFS_VERSION}
1077   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Supplemental Documentation\CurrentVersion" "MajorVersion" ${AFS_MAJORVERSION}
1078   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Supplemental Documentation\CurrentVersion" "MinorVersion" ${AFS_MINORVERSION}
1079   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Supplemental Documentation\CurrentVersion" "PatchLevel" ${AFS_PATCHLEVEL}
1080   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Supplemental Documentation\${AFS_VERSION}" "VersionString" ${AFS_VERSION}
1081   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Supplemental Documentation\${AFS_VERSION}" "MajorVersion" ${AFS_MAJORVERSION}
1082   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Supplemental Documentation\${AFS_VERSION}" "MinorVersion" ${AFS_MINORVERSION}
1083   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Supplemental Documentation\${AFS_VERSION}" "PatchLevel" ${AFS_PATCHLEVEL}
1084
1085   ; Write start menu shortcut
1086   SetOutPath "$SMPROGRAMS\OpenAFS"
1087   CreateShortCut "$SMPROGRAMS\OpenAFS\Documentation.lnk" "$INSTDIR\Documentation\html\index.htm"
1088   
1089   
1090   WriteUninstaller "$INSTDIR\Uninstall.exe"
1091   CreateShortCut "$SMPROGRAMS\OpenAFS\Uninstall OpenAFS.lnk" "$INSTDIR\Uninstall.exe"
1092 SectionEnd  
1093   
1094 ;Display the Finish header
1095 ;Insert this macro after the sections if you are not using a finish page
1096 ;!insertmacro MUI_SECTIONS_FINISHHEADER
1097
1098 ;--------------------------------
1099 ;Installer Functions
1100
1101 Function .onInit
1102
1103   !insertmacro MUI_LANGDLL_DISPLAY
1104   
1105   ; Set the default install options
1106         Push $0
1107
1108    Call IsUserAdmin
1109    Pop $R0
1110    StrCmp $R0 "true" contInstall
1111
1112    MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST "You must be an administrator of this machine to install this software."
1113    Abort
1114    
1115 contInstall:
1116    ; Our logic should be like this.
1117    ;     1) If no AFS components are installed, we do a clean install with default options. (Client/Docs)
1118    ;     2) If existing modules are installed, we keep them selected
1119    ;     3) If it is an upgrade, we set the text accordingly, else we mark it as a re-install
1120    ;  TODO: Downgrade?
1121    Call IsAnyAFSInstalled
1122    Pop $R0
1123    StrCmp $R0 "0" DefaultOptions
1124    
1125    Call ShouldClientInstall
1126    Pop $R2
1127    
1128    StrCmp $R2 "0" NoClient
1129    StrCmp $R2 "2" UpgradeClient
1130    StrCmp $R3 "3" DowngradeClient
1131    
1132         SectionGetFlags ${secClient} $0
1133         IntOp $0 $0 | ${SF_SELECTED}
1134         SectionSetFlags ${secClient} $0
1135     ;# !insertmacro SelectSection ${secClient}
1136    goto skipClient
1137 NoClient:
1138         ;StrCpy $1 ${secClient} ; Gotta remember which section we are at now...
1139         SectionGetFlags ${secClient} $0
1140         IntOp $0 $0 & ${SECTION_OFF}
1141         SectionSetFlags ${secClient} $0
1142    goto skipClient
1143 UpgradeClient:
1144         SectionGetFlags ${secClient} $0
1145         IntOp $0 $0 | ${SF_SELECTED}
1146         SectionSetFlags ${secClient} $0
1147    SectionSetText ${secClient} $(UPGRADE_CLIENT)
1148    goto skipClient
1149 DowngradeClient:
1150         SectionGetFlags ${secClient} $0
1151         IntOp $0 $0 | ${SF_SELECTED}
1152         SectionSetFlags ${secClient} $0
1153    SectionSetText ${secClient} $(REINSTALL_CLIENT)
1154    goto skipClient
1155
1156    
1157 skipClient:   
1158    
1159    Call ShouldServerInstall
1160    Pop $R2
1161    StrCmp $R2 "0" NoServer
1162    StrCmp $R2 "2" UpgradeServer
1163    StrCmp $R2 "3" DowngradeServer
1164    
1165         SectionGetFlags ${secServer} $0
1166         IntOp $0 $0 | ${SF_SELECTED}
1167         SectionSetFlags ${secServer} $0
1168         ;# !insertmacro UnselectSection ${secServer}
1169    goto skipServer
1170
1171 UpgradeServer:
1172    SectionGetFlags ${secServer} $0
1173    IntOp $0 $0 | ${SF_SELECTED}
1174    SectionSetFlags ${secServer} $0
1175    SectionSetText ${secServer} $(UPGRADE_SERVER)
1176    goto skipServer
1177
1178 DowngradeServer:
1179    SectionGetFlags ${secServer} $0
1180    IntOp $0 $0 | ${SF_SELECTED}
1181    SectionSetFlags ${secServer} $0
1182    SectionSetText ${secServer} $(REINSTALL_SERVER)
1183    goto skipServer
1184    
1185 NoServer:
1186         SectionGetFlags ${secServer} $0
1187         IntOp $0 $0 & ${SECTION_OFF}
1188         SectionSetFlags ${secServer} $0
1189         ;# !insertmacro UnselectSection ${secServer}
1190    goto skipServer
1191    
1192 skipServer:
1193    ; Check control center
1194    Call IsControlInstalled
1195    Pop $R2
1196    StrCmp $R2 "0" NoControl
1197
1198         SectionGetFlags ${secControl} $0
1199         IntOp $0 $0 | ${SF_SELECTED}
1200         SectionSetFlags ${secControl} $0
1201    goto CheckDocs
1202    
1203 NoControl:   
1204         SectionGetFlags ${secControl} $0
1205         IntOp $0 $0 & ${SECTION_OFF}
1206         SectionSetFlags ${secControl} $0
1207         ;# !insertmacro UnselectSection ${secControl}
1208
1209 CheckDocs:
1210    ; Check Documentation
1211    Call IsDocumentationInstalled
1212    Pop $R2
1213    StrCmp $R2 "0" NoDocs
1214         SectionGetFlags ${secDocs} $0
1215         IntOp $0 $0 | ${SF_SELECTED}
1216         SectionSetFlags ${secDocs} $0
1217    goto end
1218    
1219 NoDocs:
1220         SectionGetFlags ${secDocs} $0
1221         IntOp $0 $0 & ${SECTION_OFF}
1222         SectionSetFlags ${secDocs} $0
1223    goto end
1224    
1225 DefaultOptions:
1226    ; Client Selected
1227         SectionGetFlags ${secClient} $0
1228         IntOp $0 $0 | ${SF_SELECTED}
1229         SectionSetFlags ${secClient} $0
1230
1231    ; Server NOT selected
1232         SectionGetFlags ${secServer} $0
1233         IntOp $0 $0 & ${SECTION_OFF}
1234         SectionSetFlags ${secServer} $0
1235    
1236    ; Control Center NOT selected
1237         SectionGetFlags ${secControl} $0
1238         IntOp $0 $0 & ${SECTION_OFF}
1239         SectionSetFlags ${secControl} $0
1240         ;# !insertmacro UnselectSection ${secControl}
1241
1242    ; Documentation selected
1243         SectionGetFlags ${secDocs} $0
1244         IntOp $0 $0 | ${SF_SELECTED}
1245         SectionSetFlags ${secDocs} $0
1246         ;# !insertmacro UnselectSection ${secDocs}
1247    goto end
1248
1249 end:
1250         Pop $0
1251   
1252   
1253   
1254   GetTempFilename $0
1255   File /oname=$0 CellServPage.ini
1256   GetTempFilename $1
1257   File /oname=$1 AFSCell.ini
1258   ;File /oname=$1 ConfigURL.ini
1259   
1260 FunctionEnd
1261
1262
1263
1264
1265
1266 ;--------------------------------
1267 ; These are our cleanup functions
1268 Function .onInstFailed
1269 Delete $0
1270
1271 FunctionEnd
1272
1273 Function .onInstSuccess
1274 Delete $0
1275
1276 FunctionEnd
1277
1278
1279 ;--------------------------------
1280 ;Descriptions
1281
1282 !ifndef v2.0b4
1283 !insertmacro MUI_FUNCTIONS_DESCRIPTION_BEGIN
1284 !else
1285 !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
1286 !endif
1287   !insertmacro MUI_DESCRIPTION_TEXT ${SecServer} $(DESC_SecServer)
1288   !insertmacro MUI_DESCRIPTION_TEXT ${SecClient} $(DESC_SecClient)
1289   !insertmacro MUI_DESCRIPTION_TEXT ${SecControl} $(DESC_SecControl)
1290   !insertmacro MUI_DESCRIPTION_TEXT ${SecDocs} $(DESC_SecDocs)
1291 !ifndef v2.0b4
1292   !insertmacro MUI_FUNCTIONS_DESCRIPTION_END
1293 !else
1294   !insertmacro MUI_FUNCTION_DESCRIPTION_END
1295 !endif
1296  
1297 ;--------------------------------
1298 ;Uninstaller Section
1299
1300 Section "Uninstall"
1301   
1302   SetShellVarContext all
1303   ; Stop the running processes
1304   GetTempFileName $R0
1305   File /oname=$R0 "${AFS_WININSTALL_DIR}\Killer.exe"
1306   nsExec::Exec '$R0 afscreds.exe'
1307   nsExec::Exec '$R0 krbcc32s.exe'
1308
1309   ; Delete the AFS service
1310   GetTempFileName $R0
1311   File /oname=$R0 "${AFS_WININSTALL_DIR}\Service.exe"
1312   nsExec::Exec "net stop TransarcAFSDaemon"
1313   nsExec::Exec "net stop TransarcAFSServer"
1314   nsExec::Exec '$R0 u TransarcAFSDaemon'
1315   ; After we stop the service, but before we delete it, we have to remove the volume data
1316   ; This is because the storage locations are in the registry under the service key.
1317   ; Call un.RemoveAFSVolumes
1318   nsExec::Exec '$R0 u TransarcAFSServer'
1319   Delete $R0
1320   
1321   Push "$INSTDIR\Client\Program"
1322   Call un.RemoveFromPath
1323   Push "$INSTDIR\Common"
1324   Call un.RemoveFromPath
1325 !ifdef INSTALL_KFW
1326   Push "$INSTDIR\kfw\bin"
1327   Call un.RemoveFromPath
1328 !endif
1329   
1330   ; Delete documentation
1331   Delete "$INSTDIR\Documentation\README.TXT"
1332   Delete "$INSTDIR\Documentation\html\*"
1333   Delete "$INSTDIR\Documentation\html\CmdRef\*"
1334   Delete "$INSTDIR\Documentation\html\InstallGd\*"
1335   Delete "$INSTDIR\Documentation\html\ReleaseNotes\*"
1336   Delete "$INSTDIR\Documentation\html\SysAdminGd\*"
1337
1338    Delete /REBOOTOK "$INSTDIR\Common\afs_config.exe"
1339    Delete /REBOOTOK "$INSTDIR\Common\afs_shl_ext.dll"
1340    Delete /REBOOTOK "$INSTDIR\Common\afsadminutil.dll"
1341    Delete /REBOOTOK "$INSTDIR\Common\lib\afsauthent.dll"
1342    Delete /REBOOTOK "$INSTDIR\Common\lib\afspthread.dll"
1343    Delete /REBOOTOK "$INSTDIR\Common\lib\afsrpc.dll"
1344    Delete /REBOOTOK "$INSTDIR\Common\afsclientadmin.dll"
1345    Delete /REBOOTOK "$INSTDIR\Common\afsprocmgmt.dll"
1346    Delete /REBOOTOK "$INSTDIR\Common\afsvosadmin.dll"
1347    Delete /REBOOTOK "$INSTDIR\Common\TaAfsAppLib.dll"
1348    Delete /REBOOTOK "$INSTDIR\Common\afsvosadmin.dll"
1349    Delete /REBOOTOK "$INSTDIR\Common\afsbosadmin.dll"
1350    Delete /REBOOTOK "$INSTDIR\Common\afscfgadmin.dll"
1351    Delete /REBOOTOK "$INSTDIR\Common\afskasadmin.dll"
1352    Delete /REBOOTOK "$INSTDIR\Common\afsptsadmin.dll"
1353
1354 !IFDEF DEBUG
1355    Delete /REBOOTOK "$INSTDIR\Common\afs_config.pdb"
1356    Delete /REBOOTOK "$INSTDIR\Common\afs_shl_ext.pdb"
1357    Delete /REBOOTOK "$INSTDIR\Common\afsadminutil.pdb"
1358    Delete /REBOOTOK "$INSTDIR\Common\lib\afsauthent.pdb"
1359    Delete /REBOOTOK "$INSTDIR\Common\lib\afspthread.pdb"
1360    Delete /REBOOTOK "$INSTDIR\Common\lib\afsrpc.pdb"
1361    Delete /REBOOTOK "$INSTDIR\Common\afsclientadmin.pdb"
1362    Delete /REBOOTOK "$INSTDIR\Common\afsprocmgmt.pdb"
1363    Delete /REBOOTOK "$INSTDIR\Common\afsvosadmin.pdb"
1364    Delete /REBOOTOK "$INSTDIR\Common\TaAfsAppLib.pdb"
1365    Delete /REBOOTOK "$INSTDIR\Common\afsvosadmin.pdb"
1366    Delete /REBOOTOK "$INSTDIR\Common\afsbosadmin.pdb"
1367    Delete /REBOOTOK "$INSTDIR\Common\afscfgadmin.pdb"
1368    Delete /REBOOTOK "$INSTDIR\Common\afskasadmin.pdb"
1369    Delete /REBOOTOK "$INSTDIR\Common\afsptsadmin.pdb"
1370
1371 !IFDEF CL_1310
1372    Delete /REBOOTOK "$INSTDIR\Common\msvcr71d.dll"
1373    Delete /REBOOTOK "$INSTDIR\Common\msvcr71d.pdb"
1374 !ELSE
1375    Delete /REBOOTOK "$INSTDIR\Common\msvcrtd.dll"
1376    Delete /REBOOTOK "$INSTDIR\Common\msvcrtd.pdb"
1377 !ENDIF
1378 !ELSE
1379 !IFDEF CL_1310
1380    Delete /REBOOTOK "$INSTDIR\Common\msvcr71.dll"
1381 !ELSE
1382    Delete /REBOOTOK "$INSTDIR\Common\msvcrt.dll"
1383 !ENDIF
1384 !ENDIF
1385   
1386    Call un.IsSilent
1387    Pop $R1
1388    StrCmp $R1 "/S" SkipAsk
1389 ;  IfFileExists "$WINDIR\afsdcell.ini" CellExists SkipDelAsk
1390 ;  CellExists:
1391   MessageBox MB_YESNO "Would you like to keep your configuration files?" IDYES SkipDel
1392   SkipAsk:
1393   Delete "$WINDIR\afsdcell.ini"
1394
1395   Delete "$WINDIR\afsdsbmt.ini"
1396   Delete "$WINDIR\krb5.ini"
1397   Delete "$WINDIR\afsdns.ini"
1398   Delete "$WINDIR\afs_freelance.ini"
1399   
1400   SkipDel:
1401   Delete "$WINDIR\afsd_init.log"
1402   Delete "$INSTDIR\Uninstall.exe"
1403
1404   ; Remove server
1405   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\afskill.exe"
1406   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\afssvrcfg.exe"
1407   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\bosctlsvc.exe"
1408   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\bosserver.exe"
1409   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\buserver.exe"
1410   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\butc.exe"
1411   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\fileserver.exe"
1412   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\fms.exe"
1413   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\kaserver.exe"
1414   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\ptserver.exe"
1415   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\salvager.exe"
1416   Delete "$INSTDIR\Server\usr\afs\bin\ServerUninst.dll"
1417   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\upclient.exe"
1418   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\upserver.exe"
1419   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\vlserver.exe"
1420   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\volinfo.exe"
1421   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\volserver.exe"
1422
1423 !ifdef DEBUG
1424   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\afskill.pdb"
1425   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\afssvrcfg.pdb"
1426   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\bosctlsvc.pdb"
1427   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\bosserver.pdb"
1428   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\buserver.pdb"
1429   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\butc.pdb"
1430   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\fileserver.pdb"
1431   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\fms.pdb"
1432   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\kaserver.pdb"
1433   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\ptserver.pdb"
1434   Delete "$INSTDIR\Server\usr\afs\bin\salvager.pdb"
1435   Delete "$INSTDIR\Server\usr\afs\bin\ServerUninst.pdb"
1436   Delete "$INSTDIR\Server\usr\afs\bin\upclient.pdb"
1437   Delete "$INSTDIR\Server\usr\afs\bin\upserver.pdb"
1438   Delete "$INSTDIR\Server\usr\afs\bin\vlserver.pdb"
1439   Delete "$INSTDIR\Server\usr\afs\bin\volinfo.pdb"
1440   Delete "$INSTDIR\Server\usr\afs\bin\volserver.pdb"
1441 !endif
1442
1443   RMDir /r "$INSTDIR\Server\usr\afs\bin"
1444   RmDir /r "$INSTDIR\Server\usr\afs\etc\logs"
1445   RmDir /r "$INSTDIR\Server\usr\afs\etc"
1446   RmDir /r "$INSTDIR\Server\usr\afs\local"
1447   RMDIR /r "$INSTDIR\Server\usr\afs\logs"
1448   
1449   Delete /REBOOTOK "$WINDIR\afsserver.cpl"
1450   Delete /REBOOTOK "$WINDIR\afs_cpa.cpl"
1451
1452 !ifdef DEBUG
1453   Delete /REBOOTOK "$WINDIR\afsserver.pdb"
1454   Delete /REBOOTOK "$WINDIR\afs_cpa.pdb"
1455 !endif
1456   
1457   RMDir /r "$INSTDIR\Documentation\html\CmdRef"
1458   RMDir /r "$INSTDIR\Documentation\html\InstallGd"
1459   RMDir /r "$INSTDIR\Documentation\html\ReleaseNotes"
1460   RMDir /r "$INSTDIR\Documentation\html\SysAdminGd"
1461   RMDIr /r "$INSTDIR\Documentation\html"
1462   
1463   RMDir "$INSTDIR\Documentation"
1464   ; Delete DOC short cut
1465   Delete /REBOOTOK "$INSTDIR\Client\Program\afscreds.exe"
1466
1467 !ifdef DEBUG
1468   Delete /REBOOTOK "$INSTDIR\Client\Program\afscreds.pdb"
1469 !endif
1470
1471   Delete /REBOOTOK "$INSTDIR\Client\Program\*"
1472   Delete /REBOOTOK "$INSTDIR\Client\Program\Include\*"
1473   Delete /REBOOTOK "$INSTDIR\Client\Program\Include\afs\*"
1474   Delete /REBOOTOK "$INSTDIR\Client\Program\Include\rx\*"
1475   Delete /REBOOTOK "$INSTDIR\Client\Program\Sample\*"
1476   RMDir  "$INSTDIR\Client\Program\Sample"
1477   RMDir  "$INSTDIR\Client\Program\Include\afs"
1478   RMDir  "$INSTDIR\Client\Program\Include\rx"
1479   RMDir  "$INSTDIR\Client\Program\Include"
1480   RMDir  "$INSTDIR\Client\Program"
1481   RMDir  "$INSTDIR\Client"
1482   
1483 !IFDEF DEBUG
1484 !IFDEF CL_1310
1485   Delete /REBOOTOK "$INSTDIR\Common\msvcr71d.dll"
1486   Delete /REBOOTOK "$INSTDIR\Common\msvcr71d.pdb"
1487 !ELSE
1488   Delete /REBOOTOK "$INSTDIR\Common\msvcrtd.dll"
1489   Delete /REBOOTOK "$INSTDIR\Common\msvcrtd.pdb"
1490 !ENDIF
1491 !ELSE
1492 !IFDEF CL_1310
1493   Delete /REBOOTOK "$INSTDIR\Common\msvcr71.dll"
1494 !ELSE
1495   Delete /REBOOTOK "$INSTDIR\Common\msvcrt.dll"
1496 !ENDIF
1497 !ENDIF
1498   Delete /REBOOTOK "$INSTDIR\Common\*"
1499   RMDir "$INSTDIR\Common"
1500
1501 !ifdef INSTALL_KFW
1502   ;Remove KfW files
1503   Delete /REBOOTOK "$INSTDIR\kfw\bin\*"
1504   RMDIR  /r "$INSTDIR\kfw\bin"
1505   Delete /REBOOTOK "$INSTDIR\kfw\doc\*"
1506   RMDIR  /r "$INSTDIR\kfw\doc"
1507   RMDIR  /r "$INSTDIR\kfw"
1508 !endif
1509
1510   Delete "$SMPROGRAMS\OpenAFS\Documentation.lnk"
1511
1512   ; Remove control center
1513   Delete /REBOOTOK "$INSTDIR\Control Center\TaAfsAccountManager.exe"
1514   Delete /REBOOTOK "$INSTDIR\Control Center\TaAfsAdmSvr.exe"
1515   Delete /REBOOTOK "$INSTDIR\Control Center\TaAfsServerManager.exe"
1516   Delete /REBOOTOK "$INSTDIR\Control Center\CCUninst.dll"
1517 !ifdef DEBUG
1518   Delete /REBOOTOK "$INSTDIR\Control Center\TaAfsAccountManager.pdb"
1519   Delete /REBOOTOK "$INSTDIR\Control Center\TaAfsAdmSvr.pdb"
1520   Delete /REBOOTOK "$INSTDIR\Control Center\TaAfsServerManager.pdb"
1521 !endif
1522   RMDir  "$INSTDIR\Control Center"
1523   
1524   Delete "$SMPROGRAMS\OpenAFS\Uninstall OpenAFS.lnk"
1525   Delete "$SMPROGRAMS\OpenAFS\Client\Authentication.lnk"
1526   Delete "$SMPROGRAMS\OpenAFS\Control Center\Account Manager.lnk"
1527   Delete "$SMPROGRAMS\OpenAFS\Control Center\Server Manager.lnk"
1528   RMDIR "$SMPROGRAMS\OpenAFS\Control Center"
1529   RMDir /r "$SMPROGRAMS\OpenAFS\Client"
1530   RMDir /r "$SMPROGRAMS\OpenAFS"
1531   Delete "$SMSTARTUP\AFS Credentials.lnk"
1532   
1533   ReadRegStr $R0 HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon" "CachePath"
1534   IfErrors +2
1535   Delete "$R0\AFSCache"
1536   Delete "C:\AFSCache"
1537
1538   DeleteRegKey HKCR "*\shellex\ContextMenuHandlers\AFS Client Shell Extension"
1539   DeleteRegKey HKCR "CLSID\{DC515C27-6CAC-11D1-BAE7-00C04FD140D2}\InprocServer32"
1540   DeleteRegKey HKCR "CLSID\{DC515C27-6CAC-11D1-BAE7-00C04FD140D2}"
1541   DeleteRegKey HKCR "FOLDER\shellex\ContextMenuHandlers\AFS Client Shell Extension"
1542   DeleteRegValue HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved" "{DC515C27-6CAC-11D1-BAE7-00C04FD140D2}"
1543
1544   DeleteRegKey HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion"
1545   DeleteRegKey HKLM "${AFS_REGKEY_ROOT}\AFS Client"
1546   DeleteRegKey HKLM "${AFS_REGKEY_ROOT}\AFS Supplemental Documentation\CurrentVersion"
1547   DeleteRegKey HKLM "${AFS_REGKEY_ROOT}\AFS Supplemental Documentation"
1548   DeleteRegKey HKLM "${AFS_REGKEY_ROOT}\AFS Control Center\CurrentVersion"
1549   DeleteRegKey HKLM "${AFS_REGKEY_ROOT}\AFS Control Center"
1550   DeleteRegKey HKLM "${AFS_REGKEY_ROOT}\AFS Server\CurrentVersion"
1551   DeleteRegKey HKLM "${AFS_REGKEY_ROOT}\AFS Server"
1552   DeleteRegKey /ifempty HKLM "${AFS_REGKEY_ROOT}"
1553   DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenAFS"
1554   DeleteRegValue HKLM "SYSTEM\CurrentControlSet\Services\NetBT\Parameters" "SmbDeviceEnabled"
1555  
1556   RMDir  "$INSTDIR"
1557
1558 !ifndef v2.0b4
1559   ;Display the Finish header
1560   !insertmacro MUI_UNFINISHHEADER
1561 !endif
1562
1563 SectionEnd
1564
1565 ;--------------------------------
1566 ;Uninstaller Functions
1567
1568 Function un.onInit
1569
1570   ;Get language from registry
1571   ReadRegStr $LANGUAGE HKCU "Software\OpenAFS\AFS" "Installer Language"
1572
1573 FunctionEnd
1574
1575 Function un.onUninstSuccess
1576
1577    MessageBox MB_OK "Please reboot your machine to complete uninstallation of the software"
1578
1579 FunctionEnd
1580
1581 ;------------------------------
1582 ; Get the CellServDB file from the Internet
1583
1584 Function afs.GetCellServDB
1585
1586 ;Check if we should download CellServDB
1587 ReadINIStr $R0 $0 "Field 4" "State"
1588 StrCmp $R0 "0" CheckIncl
1589
1590    ReadINIStr $R0 $0 "Field 5" "State"
1591    NSISdl::download $R0 "$WINDIR\afsdcell.ini"
1592    Pop $R0 ;Get the return value
1593    StrCmp $R0 "success" +2
1594       MessageBox MB_OK|MB_ICONSTOP "Download failed: $R0"
1595    goto done
1596 CheckIncl:
1597    ReadINIStr $R0 $0 "Field 3" "State"
1598    StrCmp $R0 "0" CheckOther
1599    SetOutPath "$WINDIR"
1600    File "afsdcell.ini"
1601    goto done
1602    
1603 CheckOther:
1604    ReadINIStr $R0 $0 "Field 7" "State"
1605    CopyFiles $R0 "$WINDIR\afsdcell.ini"
1606    
1607 done:
1608
1609 FunctionEnd
1610
1611
1612
1613 ;-------------------------------
1614 ;Do the page to get the CellServDB
1615
1616 Function AFSPageGetCellServDB
1617   ; Set the install options here
1618   
1619 startOver:
1620   WriteINIStr $0 "Field 2" "Flags" "DISABLED"
1621   WriteINIStr $0 "Field 3" "State" "1"
1622   
1623   ; If there is an existing afsdcell.ini file, allow the user to choose it and make it default
1624   IfFileExists "$WINDIR\afsdcell.ini" +1 notpresent
1625   WriteINIStr $0 "Field 2" "Flags" "ENABLED"
1626   WriteINIStr $0 "Field 2" "State" "1"
1627   WriteINIStr $0 "Field 3" "State" "3"
1628   
1629   notpresent:
1630   
1631   !insertmacro MUI_HEADER_TEXT "CellServDB Configuration" "Please choose a method for installing the CellServDB file:" 
1632   InstallOptions::dialog $0
1633   Pop $R1
1634   StrCmp $R1 "cancel" exit
1635   StrCmp $R1 "back" done
1636   StrCmp $R1 "success" done
1637 exit: Quit
1638 done:
1639
1640    ; Check that if a file is set, a filename is entered...
1641    ReadINIStr $R0 $0 "Field 6" "State"
1642    StrCmp $R0 "1" CheckFileName Skip
1643 CheckFileName:
1644    ReadINIStr $R0 $0 "Field 7" "State"
1645    IfFileExists $R0 Skip
1646
1647    MessageBox MB_OK|MB_ICONSTOP $(CellError)
1648    WriteINIStr $0 "Field 6" "State" "0"
1649    goto startOver
1650    
1651    Skip:
1652    
1653 FunctionEnd
1654
1655
1656 Function AFSPageGetCellName
1657    Call IsSilent
1658    Pop $R1
1659    StrCmp $R1 "/S" exit
1660   !insertmacro MUI_HEADER_TEXT "Cell Name Configuration" "Please enter the name for your default cell:" 
1661   InstallOptions::dialog $1
1662   Pop $R1
1663   StrCmp $R1 "cancel" exit
1664   StrCmp $R1 "back" done
1665   StrCmp $R1 "success" done
1666 exit: Quit
1667 done:
1668 FunctionEnd
1669
1670 ;-------------
1671 ; Common install routines for each module
1672 Function AFSCommon.Install
1673
1674 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenAFS" "DisplayName" "OpenAFS for Windows"
1675 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenAFS" "UninstallString" "$INSTDIR\uninstall.exe"
1676 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenAFS" "DisplayVersion" "${AFS_VERSION}"
1677 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenAFS" "URLInfoAbout" "http://www.openafs.org/"
1678
1679 FunctionEnd
1680
1681
1682 ; Check if install should be silent
1683 Function IsSilent
1684   Push $0
1685   Push $CMDLINE
1686   Push "/S"
1687   Call StrStr
1688   Pop $0
1689   StrCpy $0 $0 3
1690   StrCmp $0 "/S" silent
1691   StrCmp $0 "/S " silent
1692     StrCpy $0 0
1693     Goto notsilent
1694   silent: StrCpy $0 1
1695   notsilent: Exch $0
1696 FunctionEnd
1697
1698
1699
1700 ; Check if uninstall should be silent
1701 Function un.IsSilent
1702   Push $0
1703   Push $CMDLINE
1704   Push "/S"
1705   Call un.StrStr
1706   Pop $0
1707   StrCpy $0 $0 3
1708   StrCmp $0 "/S" silent
1709   StrCmp $0 "/S " silent
1710     StrCpy $0 0
1711     Goto notsilent
1712   silent: StrCpy $0 1
1713   notsilent: Exch $0
1714 FunctionEnd
1715
1716
1717
1718 ; StrStr function
1719 Function StrStr
1720   Exch $R1 ; st=haystack,old$R1, $R1=needle
1721   Exch    ; st=old$R1,haystack
1722   Exch $R2 ; st=old$R1,old$R2, $R2=haystack
1723   Push $R3
1724   Push $R4
1725   Push $R5
1726   StrLen $R3 $R1
1727   StrCpy $R4 0
1728   ; $R1=needle
1729   ; $R2=haystack
1730   ; $R3=len(needle)
1731   ; $R4=cnt
1732   ; $R5=tmp
1733   loop:
1734     StrCpy $R5 $R2 $R3 $R4
1735     StrCmp $R5 $R1 done
1736     StrCmp $R5 "" done
1737     IntOp $R4 $R4 + 1
1738     Goto loop
1739   done:
1740   StrCpy $R1 $R2 "" $R4
1741   Pop $R5
1742   Pop $R4
1743   Pop $R3
1744   Pop $R2
1745   Exch $R1
1746 FunctionEnd
1747
1748 ;-------------------
1749 ; Get the currently installed version and place it on the stack
1750 ; Modifies: Nothing
1751 Function GetInstalledVersion
1752    Push $R0
1753    Push $R1
1754    Push $R4
1755    
1756    ReadRegStr $R0 HKLM "Software\TransarcCorporation\$R2\CurrentVersion" "VersionString"
1757    StrCmp $R0 "" NotTransarc done
1758    
1759    
1760 NotTransarc:
1761    ReadRegStr $R0 HKLM "${AFS_REGKEY_ROOT}\$R2\CurrentVersion" "VersionString"
1762    StrCmp $R0 "" done
1763    
1764 done:
1765    Pop $R4
1766    Pop $R1
1767    Exch $R0
1768 FunctionEnd
1769
1770 ; Functions to get each component of the version number
1771 Function GetInstalledVersionMajor
1772    Push $R0
1773    Push $R1
1774    Push $R4
1775    
1776    ReadRegDWORD $R0 HKLM "Software\TransarcCorporation\$R2\CurrentVersion" "MajorVersion"
1777    StrCmp $R0 "" NotTransarc done
1778    
1779    
1780 NotTransarc:
1781    ReadRegDWORD $R0 HKLM "${AFS_REGKEY_ROOT}\$R2\CurrentVersion" "MajorVersion"
1782    StrCmp $R0 "" done
1783    
1784 done:
1785    Pop $R4
1786    Pop $R1
1787    Exch $R0
1788 FunctionEnd
1789
1790 Function GetInstalledVersionMinor
1791    Push $R0
1792    Push $R1
1793    Push $R4
1794    
1795    ReadRegDWORD $R0 HKLM "Software\TransarcCorporation\$R2\CurrentVersion" "MinorVersion"
1796    StrCmp $R0 "" NotTransarc done
1797    
1798    
1799 NotTransarc:
1800    ReadRegDWORD $R0 HKLM "${AFS_REGKEY_ROOT}\$R2\CurrentVersion" "MinorVersion"
1801    StrCmp $R0 "" done
1802    
1803 done:
1804    Pop $R4
1805    Pop $R1
1806    Exch $R0
1807 FunctionEnd
1808
1809 Function GetInstalledVersionPatch
1810    Push $R0
1811    Push $R1
1812    Push $R4
1813    
1814    ReadRegDWORD $R0 HKLM "Software\TransarcCorporation\$R2\CurrentVersion" "PatchLevel"
1815    StrCmp $R0 "" NotTransarc done
1816    
1817    
1818 NotTransarc:
1819    ReadRegDWORD $R0 HKLM "${AFS_REGKEY_ROOT}\$R2\CurrentVersion" "PatchLevel"
1820    StrCmp $R0 "" done
1821    
1822 done:
1823    Pop $R4
1824    Pop $R1
1825    Exch $R0
1826 FunctionEnd
1827
1828
1829
1830 ;-------------------------------
1831 ; Check if the client should be checked for default install
1832 Function ShouldClientInstall
1833    Push $R0
1834    StrCpy $R2 "AFS Client"
1835    Call GetInstalledVersion
1836    Pop $R0
1837    
1838    StrCmp $R0 "" NotInstalled
1839    ; Now we see if it's an older or newer version
1840
1841    Call GetInstalledVersionMajor
1842    Pop $R0
1843    IntCmpU $R0 ${AFS_MAJORVERSION} +1 Upgrade Downgrade
1844
1845    Call GetInstalledVersionMinor
1846    Pop $R0
1847    IntCmpU $R0 ${AFS_MINORVERSION} +1 Upgrade Downgrade
1848    
1849    Call GetInstalledVersionPatch
1850    Pop $R0
1851    IntCmpU $R0 ${AFS_PATCHLEVEL} Reinstall Upgrade Downgrade
1852    
1853 Reinstall:
1854    StrCpy $R0 "1"
1855    Exch $R0
1856    goto end
1857    
1858 Upgrade:
1859    StrCpy $R0 "2"
1860    Exch $R0
1861    goto end
1862    
1863 Downgrade:
1864    StrCpy $R0 "3"
1865    Exch $R0
1866    goto end
1867    
1868    
1869 NotInstalled:
1870    StrCpy $R0 "0"
1871    Exch $R0
1872 end:   
1873 FunctionEnd
1874
1875 ;-------------------------------
1876 ; Check how the server options should be set
1877 Function ShouldServerInstall
1878    Push $R0
1879    StrCpy $R2 "AFS Server"
1880    Call GetInstalledVersion
1881    Pop $R0
1882    
1883    StrCmp $R0 "" NotInstalled
1884    ; Now we see if it's an older or newer version
1885
1886    Call GetInstalledVersionMajor
1887    Pop $R0
1888    IntCmpU $R0 ${AFS_MAJORVERSION} +1 Upgrade Downgrade
1889
1890    Call GetInstalledVersionMinor
1891    Pop $R0
1892    IntCmpU $R0 ${AFS_MINORVERSION} +1 Upgrade Downgrade
1893    
1894    Call GetInstalledVersionPatch
1895    Pop $R0
1896    IntCmpU $R0 ${AFS_PATCHLEVEL} Reinstall Upgrade Downgrade
1897    
1898 Reinstall:
1899    StrCpy $R0 "1"
1900    Exch $R0
1901    goto end
1902    
1903 Upgrade:
1904    StrCpy $R0 "2"
1905    Exch $R0
1906    goto end
1907    
1908 Downgrade:
1909    StrCpy $R0 "3"
1910    Exch $R0
1911    goto end
1912    
1913    
1914 NotInstalled:
1915    StrCpy $R0 "0"
1916    Exch $R0
1917 end:   
1918 FunctionEnd
1919
1920
1921 ; See if AFS Server is installed
1922 ; Returns: "1" if it is, 0 if it is not (on the stack)
1923 Function IsServerInstalled
1924    Push $R0
1925    StrCpy $R2 "AFS Server"
1926    Call GetInstalledVersion
1927    Pop $R0
1928    
1929    StrCmp $R0 "" NotInstalled
1930    
1931    StrCpy $R0 "1"
1932    Exch $R0
1933    goto end
1934    
1935 NotInstalled:
1936    StrCpy $R0 "0"
1937    Exch $R0
1938 end:   
1939 FunctionEnd
1940
1941
1942 ; See if AFS Client is installed
1943 ; Returns: "1" if it is, 0 if it is not (on the stack)
1944 Function IsClientInstalled
1945    Push $R0
1946    StrCpy $R2 "AFS Client"
1947    Call GetInstalledVersion
1948    Pop $R0
1949    
1950    StrCmp $R0 "" NotInstalled
1951    
1952    StrCpy $R0 "1"
1953    Exch $R0
1954    goto end
1955    
1956 NotInstalled:
1957    StrCpy $R0 "0"
1958    Exch $R0
1959 end:   
1960 FunctionEnd
1961
1962
1963
1964 ; See if AFS Documentation is installed
1965 ; Returns: "1" if it is, 0 if it is not (on the stack)
1966 Function IsDocumentationInstalled
1967    Push $R0
1968    StrCpy $R2 "AFS Supplemental Documentation"
1969    Call GetInstalledVersion
1970    Pop $R0
1971    
1972    StrCmp $R0 "" NotInstalled
1973    
1974    StrCpy $R0 "1"
1975    Exch $R0
1976    goto end
1977    
1978 NotInstalled:
1979    StrCpy $R0 "0"
1980    Exch $R0
1981 end:   
1982 FunctionEnd
1983
1984
1985 ; See if Control Center is installed
1986 ; Returns: "1" if it is, 0 if it is not (on the stack)
1987 Function IsControlInstalled
1988    Push $R0
1989    StrCpy $R2 "AFS Control Center"
1990    Call GetInstalledVersion
1991    Pop $R0
1992    
1993    StrCmp $R0 "" NotInstalled
1994    
1995    StrCpy $R0 "1"
1996    Exch $R0
1997    goto end
1998    
1999 NotInstalled:
2000    StrCpy $R0 "0"
2001    Exch $R0
2002 end:   
2003 FunctionEnd
2004
2005
2006 ; GetParameters
2007 ; input, none
2008 ; output, top of stack (replaces, with e.g. whatever)
2009 ; modifies no other variables.
2010
2011 Function GetParameters
2012   Push $R0
2013   Push $R1
2014   Push $R2
2015   StrCpy $R0 $CMDLINE 1
2016   StrCpy $R1 '"'
2017   StrCpy $R2 1
2018   StrCmp $R0 '"' loop
2019     StrCpy $R1 ' ' ; we're scanning for a space instead of a quote
2020   loop:
2021     StrCpy $R0 $CMDLINE 1 $R2
2022     StrCmp $R0 $R1 loop2
2023     StrCmp $R0 "" loop2
2024     IntOp $R2 $R2 + 1
2025     Goto loop
2026   loop2:
2027     IntOp $R2 $R2 + 1
2028     StrCpy $R0 $CMDLINE 1 $R2
2029     StrCmp $R0 " " loop2
2030   StrCpy $R0 $CMDLINE "" $R2
2031   Pop $R2
2032   Pop $R1
2033   Exch $R0
2034 FunctionEnd
2035
2036
2037 ;Check to see if any AFS component is installed
2038 ;Returns: Value on stack: "1" if it is, "0" if it is not
2039 Function IsAnyAFSInstalled
2040    Push $R0
2041    Push $R1
2042    Push $R2
2043    Push $R3
2044    Call IsClientInstalled
2045    Pop $R0
2046    Call IsServerInstalled
2047    Pop $R1
2048    Call IsControlInstalled
2049    Pop $R2
2050    Call IsDocumentationInstalled
2051    Pop $R3
2052    ; Now we must see if ANY of the $Rn values are 1
2053    StrCmp $R0 "1" SomethingInstalled
2054    StrCmp $R1 "1" SomethingInstalled
2055    StrCmp $R2 "1" SomethingInstalled
2056    StrCmp $R3 "1" SomethingInstalled
2057    ;Nothing installed
2058    StrCpy $R0 "0"
2059    goto end
2060 SomethingInstalled:
2061    StrCpy $R0 "1"
2062 end:
2063    Pop $R3
2064    Pop $R2
2065    Pop $R1
2066    Exch $R0
2067 FunctionEnd
2068
2069
2070 ;Install English Language Files
2071 Function AFSLangFiles
2072    ; Common files
2073    SetOutPath "$INSTDIR\Common"
2074    File "${AFS_CLIENT_BUILDDIR}\afs_config.exe"
2075    File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext.dll"
2076    File "${AFS_SERVER_BUILDDIR}\afsadminutil.dll"
2077    File "${AFS_DESTDIR}\lib\afsauthent.dll"
2078    File "${AFS_DESTDIR}\lib\afspthread.dll"
2079    File "${AFS_DESTDIR}\lib\afsrpc.dll"
2080    File "${AFS_SERVER_BUILDDIR}\afsclientadmin.dll"
2081    File "${AFS_SERVER_BUILDDIR}\afsprocmgmt.dll"
2082    File "${AFS_SERVER_BUILDDIR}\afsvosadmin.dll"
2083    File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib.dll"
2084    File "${AFS_SERVER_BUILDDIR}\afsvosadmin.dll"
2085    File "${AFS_SERVER_BUILDDIR}\afsbosadmin.dll"
2086    File "${AFS_SERVER_BUILDDIR}\afscfgadmin.dll"
2087    File "${AFS_SERVER_BUILDDIR}\afskasadmin.dll"
2088    File "${AFS_SERVER_BUILDDIR}\afsptsadmin.dll"
2089 !IFDEF DEBUG
2090 !IFDEF CL_1310
2091    File "${AFS_WININSTALL_DIR}\msvcr71d.dll"
2092    File "${AFS_WININSTALL_DIR}\msvcr71d.pdb"
2093 !ELSE
2094    File "${AFS_WININSTALL_DIR}\msvcrtd.dll"
2095    File "${AFS_WININSTALL_DIR}\msvcrtd.pdb"
2096 !ENDIF
2097 !ELSE
2098 !IFDEF CL_1310
2099    File "${AFS_WININSTALL_DIR}\msvcr71.dll"
2100 !ELSE
2101    File "${AFS_WININSTALL_DIR}\msvcrt.dll"
2102 !ENDIF
2103 !ENDIF
2104
2105 !ifdef DEBUG
2106    File "${AFS_CLIENT_BUILDDIR}\afs_config.pdb"
2107    File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext.pdb"
2108    File "${AFS_SERVER_BUILDDIR}\afsadminutil.pdb"
2109    File "${AFS_DESTDIR}\lib\afsauthent.pdb"
2110    File "${AFS_DESTDIR}\lib\afspthread.pdb"
2111    File "${AFS_DESTDIR}\lib\afsrpc.pdb"
2112    File "${AFS_SERVER_BUILDDIR}\afsclientadmin.pdb"
2113    File "${AFS_SERVER_BUILDDIR}\afsprocmgmt.pdb"
2114    File "${AFS_SERVER_BUILDDIR}\afsvosadmin.pdb"
2115    File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib.pdb"
2116    File "${AFS_SERVER_BUILDDIR}\afsvosadmin.pdb"
2117    File "${AFS_SERVER_BUILDDIR}\afsbosadmin.pdb"
2118    File "${AFS_SERVER_BUILDDIR}\afscfgadmin.pdb"
2119    File "${AFS_SERVER_BUILDDIR}\afskasadmin.pdb"
2120    File "${AFS_SERVER_BUILDDIR}\afsptsadmin.pdb"
2121 !endif
2122
2123    StrCmp $LANGUAGE ${LANG_ENGLISH} DoEnglish
2124    StrCmp $LANGUAGE ${LANG_GERMAN} DoGerman
2125    StrCmp $LANGUAGE ${LANG_SPANISH} DoSpanish
2126    StrCmp $LANGUAGE ${LANG_JAPANESE} DoJapanese
2127 !ifdef v2.0b4
2128    StrCmp $LANGUAGE ${LANG_KOREAN} DoKorean
2129 !endif
2130    StrCmp $LANGUAGE ${LANG_PORTUGUESEBR} DoPortugueseBR
2131    StrCmp $LANGUAGE ${LANG_SIMPCHINESE} DoSimpChinese
2132    StrCmp $LANGUAGE ${LANG_TRADCHINESE} DoTradChinese
2133    
2134 DoEnglish:
2135
2136    SetOutPath "$INSTDIR\Documentation"
2137    File "..\..\doc\install\Documentation\en_US\README.TXT"
2138
2139    SetOutPath "$INSTDIR\Common"
2140    File "${AFS_CLIENT_BUILDDIR}\afs_config_1033.dll"
2141    File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1033.dll"
2142    File "${AFS_CLIENT_BUILDDIR}\afscreds_1033.dll"
2143    File "${AFS_CLIENT_BUILDDIR}\afs_cpa_1033.dll"
2144    File "${AFS_SERVER_BUILDDIR}\afseventmsg_1033.dll"
2145    ;File "${AFS_SERVER_BUILDDIR}\afs_setup_utils_1033.dll"
2146    File "${AFS_SERVER_BUILDDIR}\afsserver_1033.dll"
2147    File "${AFS_SERVER_BUILDDIR}\afssvrcfg_1033.dll"
2148    File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1033.dll"
2149    File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1033.dll"
2150    File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1033.dll"
2151    File "..\..\doc\help\en_US\afs-cc.CNT"
2152    File "..\..\doc\help\en_US\afs-cc.hlp"
2153    File "..\..\doc\help\en_US\afs-light.CNT"
2154    File "..\..\doc\help\en_US\afs-light.hlp"
2155    File "..\..\doc\help\en_US\afs-nt.CNT"
2156    File "..\..\doc\help\en_US\afs-nt.HLP"
2157    File "..\..\doc\help\en_US\taafscfg.CNT"
2158    File "..\..\doc\help\en_US\taafscfg.hlp"
2159    File "..\..\doc\help\en_US\taafssvrmgr.CNT"
2160    File "..\..\doc\help\en_US\taafssvrmgr.hlp"
2161    File "..\..\doc\help\en_US\taafsusrmgr.CNT"
2162    File "..\..\doc\help\en_US\taafsusrmgr.hlp"
2163    goto done
2164
2165 DoGerman:
2166
2167    SetOutPath "$INSTDIR\Documentation"
2168    File "..\..\doc\install\Documentation\de_DE\README.TXT"
2169
2170    SetOutPath "$INSTDIR\Common"
2171    File "${AFS_CLIENT_BUILDDIR}\afs_config_1032.dll"
2172    File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1032.dll"
2173    File "${AFS_CLIENT_BUILDDIR}\afscreds_1032.dll"
2174    File "${AFS_CLIENT_BUILDDIR}\afs_cpa_1032.dll"
2175    File "${AFS_SERVER_BUILDDIR}\afseventmsg_1032.dll"
2176    ;File "${AFS_SERVER_BUILDDIR}\afs_setup_utils_1032.dll"
2177    File "${AFS_SERVER_BUILDDIR}\afsserver_1032.dll"
2178    File "${AFS_SERVER_BUILDDIR}\afssvrcfg_1032.dll"
2179    File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1032.dll"
2180    File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1032.dll"
2181    File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1032.dll"
2182    File "..\..\doc\help\de_DE\afs-cc.CNT"
2183    File "..\..\doc\help\de_DE\afs-cc.hlp"
2184    File "..\..\doc\help\de_DE\afs-light.CNT"
2185    File "..\..\doc\help\de_DE\afs-light.hlp"
2186    File "..\..\doc\help\de_DE\afs-nt.CNT"
2187    File "..\..\doc\help\de_DE\afs-nt.HLP"
2188    File "..\..\doc\help\de_DE\taafscfg.CNT"
2189    File "..\..\doc\help\de_DE\taafscfg.hlp"
2190    File "..\..\doc\help\de_DE\taafssvrmgr.CNT"
2191    File "..\..\doc\help\de_DE\taafssvrmgr.hlp"
2192    File "..\..\doc\help\de_DE\taafsusrmgr.CNT"
2193    File "..\..\doc\help\de_DE\taafsusrmgr.hlp"
2194
2195 !ifdef DEBUG
2196    ;File "${AFS_CLIENT_BUILDDIR}\afs_config_1033.pdb"
2197    ;File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1033.pdb"
2198    ;File "${AFS_CLIENT_BUILDDIR}\afscreds_1033.pdb"
2199    ;File "${AFS_CLIENT_BUILDDIR}\afs_cpa_1033.pdb"
2200    ;File "${AFS_SERVER_BUILDDIR}\afseventmsg_1033.pdb"
2201    ;File "${AFS_SERVER_BUILDDIR}\afsserver_1033.pdb"
2202    ;File "${AFS_SERVER_BUILDDIR}\afssvrcfg_1033.pdb"
2203    ;File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1033.pdb"
2204    ;File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1033.pdb"
2205    ;File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1033.pdb"
2206 !IFDEF CL_1310
2207    File "${AFS_WININSTALL_DIR}\msvcr71d.dll"
2208    File "${AFS_WININSTALL_DIR}\msvcr71d.pdb"
2209 !ELSE
2210    File "${AFS_WININSTALL_DIR}\msvcrtd.dll"
2211    File "${AFS_WININSTALL_DIR}\msvcrtd.pdb"
2212 !ENDIF
2213 !endif
2214    goto done   
2215
2216 DoSpanish:
2217
2218    SetOutPath "$INSTDIR\Documentation"
2219    File "..\..\doc\install\Documentation\es_ES\README.TXT"
2220
2221    SetOutPath "$INSTDIR\Common"
2222    File "${AFS_CLIENT_BUILDDIR}\afs_config_1034.dll"
2223    File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1034.dll"
2224    File "${AFS_CLIENT_BUILDDIR}\afscreds_1034.dll"
2225    File "${AFS_CLIENT_BUILDDIR}\afs_cpa_1034.dll"
2226    File "${AFS_SERVER_BUILDDIR}\afseventmsg_1034.dll"
2227    ;File "${AFS_SERVER_BUILDDIR}\afs_setup_utils_1034.dll"
2228    File "${AFS_SERVER_BUILDDIR}\afsserver_1034.dll"
2229    File "${AFS_SERVER_BUILDDIR}\afssvrcfg_1034.dll"
2230    File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1034.dll"
2231    File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1034.dll"
2232    File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1034.dll"
2233    File "..\..\doc\help\es_ES\afs-cc.CNT"
2234    File "..\..\doc\help\es_ES\afs-cc.hlp"
2235    File "..\..\doc\help\es_ES\afs-light.CNT"
2236    File "..\..\doc\help\es_ES\afs-light.hlp"
2237    File "..\..\doc\help\es_ES\afs-nt.CNT"
2238    File "..\..\doc\help\es_ES\afs-nt.HLP"
2239    File "..\..\doc\help\es_ES\taafscfg.CNT"
2240    File "..\..\doc\help\es_ES\taafscfg.hlp"
2241    File "..\..\doc\help\es_ES\taafssvrmgr.CNT"
2242    File "..\..\doc\help\es_ES\taafssvrmgr.hlp"
2243    File "..\..\doc\help\es_ES\taafsusrmgr.CNT"
2244    File "..\..\doc\help\es_ES\taafsusrmgr.hlp"
2245    goto done
2246
2247 DoJapanese:
2248
2249    SetOutPath "$INSTDIR\Documentation"
2250    File "..\..\doc\install\Documentation\ja_JP\README.TXT"
2251
2252    SetOutPath "$INSTDIR\Common"
2253    File "${AFS_CLIENT_BUILDDIR}\afs_config_1041.dll"
2254    File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1041.dll"
2255    File "${AFS_CLIENT_BUILDDIR}\afscreds_1041.dll"
2256    File "${AFS_CLIENT_BUILDDIR}\afs_cpa_1041.dll"
2257    File "${AFS_SERVER_BUILDDIR}\afseventmsg_1041.dll"
2258    ;File "${AFS_SERVER_BUILDDIR}\afs_setup_utils_1041.dll"
2259    File "${AFS_SERVER_BUILDDIR}\afsserver_1041.dll"
2260    File "${AFS_SERVER_BUILDDIR}\afssvrcfg_1041.dll"
2261    File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1041.dll"
2262    File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1041.dll"
2263    File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1041.dll"
2264    File "..\..\doc\help\ja_JP\afs-cc.CNT"
2265    File "..\..\doc\help\ja_JP\afs-cc.hlp"
2266    File "..\..\doc\help\ja_JP\afs-light.CNT"
2267    File "..\..\doc\help\ja_JP\afs-light.hlp"
2268    File "..\..\doc\help\ja_JP\afs-nt.CNT"
2269    File "..\..\doc\help\ja_JP\afs-nt.HLP"
2270    File "..\..\doc\help\ja_JP\taafscfg.CNT"
2271    File "..\..\doc\help\ja_JP\taafscfg.hlp"
2272    File "..\..\doc\help\ja_JP\taafssvrmgr.CNT"
2273    File "..\..\doc\help\ja_JP\taafssvrmgr.hlp"
2274    File "..\..\doc\help\ja_JP\taafsusrmgr.CNT"
2275    File "..\..\doc\help\ja_JP\taafsusrmgr.hlp"
2276    goto done
2277    
2278 DoKorean:
2279
2280    SetOutPath "$INSTDIR\Documentation"
2281    File "..\..\doc\install\Documentation\ko_KR\README.TXT"
2282
2283    SetOutPath "$INSTDIR\Common"
2284    File "${AFS_CLIENT_BUILDDIR}\afs_config_1042.dll"
2285    File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1042.dll"
2286    File "${AFS_CLIENT_BUILDDIR}\afscreds_1042.dll"
2287    File "${AFS_CLIENT_BUILDDIR}\afs_cpa_1042.dll"
2288    File "${AFS_SERVER_BUILDDIR}\afseventmsg_1042.dll"
2289    ;File "${AFS_SERVER_BUILDDIR}\afs_setup_utils_1042.dll"
2290    File "${AFS_SERVER_BUILDDIR}\afsserver_1042.dll"
2291    File "${AFS_SERVER_BUILDDIR}\afssvrcfg_1042.dll"
2292    File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1042.dll"
2293    File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1042.dll"
2294    File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1042.dll"
2295    File "..\..\doc\help\ko_KR\afs-cc.CNT"
2296    File "..\..\doc\help\ko_KR\afs-cc.hlp"
2297    File "..\..\doc\help\ko_KR\afs-light.CNT"
2298    File "..\..\doc\help\ko_KR\afs-light.hlp"
2299    File "..\..\doc\help\ko_KR\afs-nt.CNT"
2300    File "..\..\doc\help\ko_KR\afs-nt.HLP"
2301    File "..\..\doc\help\ko_KR\taafscfg.CNT"
2302    File "..\..\doc\help\ko_KR\taafscfg.hlp"
2303    File "..\..\doc\help\ko_KR\taafssvrmgr.CNT"
2304    File "..\..\doc\help\ko_KR\taafssvrmgr.hlp"
2305    File "..\..\doc\help\ko_KR\taafsusrmgr.CNT"
2306    File "..\..\doc\help\ko_KR\taafsusrmgr.hlp"
2307    goto done
2308
2309
2310 DoPortugueseBR:
2311
2312    SetOutPath "$INSTDIR\Documentation"
2313    File "..\..\doc\install\Documentation\pt_BR\README.TXT"
2314
2315    SetOutPath "$INSTDIR\Common"
2316    File "${AFS_CLIENT_BUILDDIR}\afs_config_1046.dll"
2317    File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1046.dll"
2318    File "${AFS_CLIENT_BUILDDIR}\afscreds_1046.dll"
2319    File "${AFS_CLIENT_BUILDDIR}\afs_cpa_1046.dll"
2320    File "${AFS_SERVER_BUILDDIR}\afseventmsg_1046.dll"
2321    ;File "${AFS_SERVER_BUILDDIR}\afs_setup_utils_1046.dll"
2322    File "${AFS_SERVER_BUILDDIR}\afsserver_1046.dll"
2323    File "${AFS_SERVER_BUILDDIR}\afssvrcfg_1046.dll"
2324    File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1046.dll"
2325    File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1046.dll"
2326    File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1046.dll"
2327    File "..\..\doc\help\pt_BR\afs-cc.CNT"
2328    File "..\..\doc\help\pt_BR\afs-cc.hlp"
2329    File "..\..\doc\help\pt_BR\afs-light.CNT"
2330    File "..\..\doc\help\pt_BR\afs-light.hlp"
2331    File "..\..\doc\help\pt_BR\afs-nt.CNT"
2332    File "..\..\doc\help\pt_BR\afs-nt.HLP"
2333    File "..\..\doc\help\pt_BR\taafscfg.CNT"
2334    File "..\..\doc\help\pt_BR\taafscfg.hlp"
2335    File "..\..\doc\help\pt_BR\taafssvrmgr.CNT"
2336    File "..\..\doc\help\pt_BR\taafssvrmgr.hlp"
2337    File "..\..\doc\help\pt_BR\taafsusrmgr.CNT"
2338    File "..\..\doc\help\pt_BR\taafsusrmgr.hlp"
2339    goto done
2340    
2341 DoSimpChinese:
2342
2343    SetOutPath "$INSTDIR\Documentation"
2344    File "..\..\doc\install\Documentation\zh_CN\README.TXT"
2345
2346    SetOutPath "$INSTDIR\Common"
2347    File "${AFS_CLIENT_BUILDDIR}\afs_config_2052.dll"
2348    File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_2052.dll"
2349    File "${AFS_CLIENT_BUILDDIR}\afscreds_2052.dll"
2350    File "${AFS_CLIENT_BUILDDIR}\afs_cpa_2052.dll"
2351    File "${AFS_SERVER_BUILDDIR}\afseventmsg_2052.dll"
2352    ;File "${AFS_SERVER_BUILDDIR}\afs_setup_utils_2052.dll"
2353    File "${AFS_SERVER_BUILDDIR}\afsserver_2052.dll"
2354    File "${AFS_SERVER_BUILDDIR}\afssvrcfg_2052.dll"
2355    File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_2052.dll"
2356    File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_2052.dll"
2357    File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_2052.dll"
2358    File "..\..\doc\help\zh_CN\afs-cc.CNT"
2359    File "..\..\doc\help\zh_CN\afs-cc.hlp"
2360    File "..\..\doc\help\zh_CN\afs-light.CNT"
2361    File "..\..\doc\help\zh_CN\afs-light.hlp"
2362    File "..\..\doc\help\zh_CN\afs-nt.CNT"
2363    File "..\..\doc\help\zh_CN\afs-nt.HLP"
2364    File "..\..\doc\help\zh_CN\taafscfg.CNT"
2365    File "..\..\doc\help\zh_CN\taafscfg.hlp"
2366    File "..\..\doc\help\zh_CN\taafssvrmgr.CNT"
2367    File "..\..\doc\help\zh_CN\taafssvrmgr.hlp"
2368    File "..\..\doc\help\zh_CN\taafsusrmgr.CNT"
2369    File "..\..\doc\help\zh_CN\taafsusrmgr.hlp"
2370    goto done
2371    
2372 DoTradChinese:
2373
2374    SetOutPath "$INSTDIR\Documentation"
2375    File "..\..\doc\install\Documentation\zh_TW\README.TXT"
2376
2377    SetOutPath "$INSTDIR\Common"
2378    File "${AFS_CLIENT_BUILDDIR}\afs_config_1028.dll"
2379    File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1028.dll"
2380    File "${AFS_CLIENT_BUILDDIR}\afscreds_1028.dll"
2381    File "${AFS_CLIENT_BUILDDIR}\afs_cpa_1028.dll"
2382    File "${AFS_SERVER_BUILDDIR}\afseventmsg_1028.dll"
2383    ;File "${AFS_SERVER_BUILDDIR}\afs_setup_utils_1028.dll"
2384    File "${AFS_SERVER_BUILDDIR}\afsserver_1028.dll"
2385    File "${AFS_SERVER_BUILDDIR}\afssvrcfg_1028.dll"
2386    File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1028.dll"
2387    File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1028.dll"
2388    File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1028.dll"
2389    File "..\..\doc\help\zh_TW\afs-cc.CNT"
2390    File "..\..\doc\help\zh_TW\afs-cc.hlp"
2391    File "..\..\doc\help\zh_TW\afs-light.CNT"
2392    File "..\..\doc\help\zh_TW\afs-light.hlp"
2393    File "..\..\doc\help\zh_TW\afs-nt.CNT"
2394    File "..\..\doc\help\zh_TW\afs-nt.HLP"
2395    File "..\..\doc\help\zh_TW\taafscfg.CNT"
2396    File "..\..\doc\help\zh_TW\taafscfg.hlp"
2397    File "..\..\doc\help\zh_TW\taafssvrmgr.CNT"
2398    File "..\..\doc\help\zh_TW\taafssvrmgr.hlp"
2399    File "..\..\doc\help\zh_TW\taafsusrmgr.CNT"
2400    File "..\..\doc\help\zh_TW\taafsusrmgr.hlp"
2401    goto done
2402    
2403 done:
2404 FunctionEnd
2405
2406
2407
2408 ;====================================================
2409 ; AddToPath - Adds the given dir to the search path.
2410 ;        Input - head of the stack
2411 ;        Note - Win9x systems requires reboot
2412 ;====================================================
2413 Function AddToPath
2414   Exch $0
2415   Push $1
2416   
2417   Call IsNT
2418   Pop $1
2419   StrCmp $1 1 AddToPath_NT
2420     ; Not on NT
2421     StrCpy $1 $WINDIR 2
2422     FileOpen $1 "$1\autoexec.bat" a
2423     FileSeek $1 0 END
2424     GetFullPathName /SHORT $0 $0
2425     FileWrite $1 "$\r$\nSET PATH=%PATH%;$0$\r$\n"
2426     FileClose $1
2427     Goto AddToPath_done
2428
2429   AddToPath_NT:
2430     ReadRegStr $1 HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "PATH"
2431     StrCmp $1 "" AddToPath_NTdoIt
2432       StrCpy $0 "$1;$0"
2433       Goto AddToPath_NTdoIt
2434     AddToPath_NTdoIt:
2435       WriteRegExpandStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "PATH" $0
2436       SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
2437   
2438   AddToPath_done:
2439     Pop $1
2440     Pop $0
2441 FunctionEnd
2442
2443 ;====================================================
2444 ; RemoveFromPath - Remove a given dir from the path
2445 ;     Input: head of the stack
2446 ;====================================================
2447 Function un.RemoveFromPath
2448   Exch $0
2449   Push $1
2450   Push $2
2451   Push $3
2452   Push $4
2453   
2454   Call un.IsNT
2455   Pop $1
2456   StrCmp $1 1 unRemoveFromPath_NT
2457     ; Not on NT
2458     StrCpy $1 $WINDIR 2
2459     FileOpen $1 "$1\autoexec.bat" r
2460     GetTempFileName $4
2461     FileOpen $2 $4 w
2462     GetFullPathName /SHORT $0 $0
2463     StrCpy $0 "SET PATH=%PATH%;$0"
2464     SetRebootFlag true
2465     Goto unRemoveFromPath_dosLoop
2466     
2467     unRemoveFromPath_dosLoop:
2468       FileRead $1 $3
2469       StrCmp $3 "$0$\r$\n" unRemoveFromPath_dosLoop
2470       StrCmp $3 "$0$\n" unRemoveFromPath_dosLoop
2471       StrCmp $3 "$0" unRemoveFromPath_dosLoop
2472       StrCmp $3 "" unRemoveFromPath_dosLoopEnd
2473       FileWrite $2 $3
2474       Goto unRemoveFromPath_dosLoop
2475     
2476     unRemoveFromPath_dosLoopEnd:
2477       FileClose $2
2478       FileClose $1
2479       StrCpy $1 $WINDIR 2
2480       Delete "$1\autoexec.bat"
2481       CopyFiles /SILENT $4 "$1\autoexec.bat"
2482       Delete $4
2483       Goto unRemoveFromPath_done
2484
2485   unRemoveFromPath_NT:
2486     StrLen $2 $0
2487     ReadRegStr $1 HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "PATH"
2488     Push $1
2489     Push $0
2490     Call un.StrStr ; Find $0 in $1
2491     Pop $0 ; pos of our dir
2492     IntCmp $0 -1 unRemoveFromPath_done
2493       ; else, it is in path
2494       StrCpy $3 $1 $0 ; $3 now has the part of the path before our dir
2495       IntOp $2 $2 + $0 ; $2 now contains the pos after our dir in the path (';')
2496       IntOp $2 $2 + 1 ; $2 now containts the pos after our dir and the semicolon.
2497       StrLen $0 $1
2498       StrCpy $1 $1 $0 $2
2499       StrCpy $3 "$3$1"
2500
2501       WriteRegExpandStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "PATH" $3
2502       SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
2503   
2504   unRemoveFromPath_done:
2505     Pop $4
2506     Pop $3
2507     Pop $2
2508     Pop $1
2509     Pop $0
2510 FunctionEnd
2511
2512 ;====================================================
2513 ; IsNT - Returns 1 if the current system is NT, 0
2514 ;        otherwise.
2515 ;     Output: head of the stack
2516 ;====================================================
2517 Function IsNT
2518   Push $0
2519   ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
2520   StrCmp $0 "" 0 IsNT_yes
2521   ; we are not NT.
2522   Pop $0
2523   Push 0
2524   Return
2525
2526   IsNT_yes:
2527     ; NT!!!
2528     Pop $0
2529     Push 1
2530 FunctionEnd
2531
2532 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2533 ; Uninstall sutff
2534 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2535
2536
2537 ;====================================================
2538 ; StrStr - Finds a given string in another given string.
2539 ;               Returns -1 if not found and the pos if found.
2540 ;          Input: head of the stack - string to find
2541 ;                      second in the stack - string to find in
2542 ;          Output: head of the stack
2543 ;====================================================
2544 Function un.StrStr
2545   Push $0
2546   Exch
2547   Pop $0 ; $0 now have the string to find
2548   Push $1
2549   Exch 2
2550   Pop $1 ; $1 now have the string to find in
2551   Exch
2552   Push $2
2553   Push $3
2554   Push $4
2555   Push $5
2556
2557   StrCpy $2 -1
2558   StrLen $3 $0
2559   StrLen $4 $1
2560   IntOp $4 $4 - $3
2561
2562   unStrStr_loop:
2563     IntOp $2 $2 + 1
2564     IntCmp $2 $4 0 0 unStrStrReturn_notFound
2565     StrCpy $5 $1 $3 $2
2566     StrCmp $5 $0 unStrStr_done unStrStr_loop
2567
2568   unStrStrReturn_notFound:
2569     StrCpy $2 -1
2570
2571   unStrStr_done:
2572     Pop $5
2573     Pop $4
2574     Pop $3
2575     Exch $2
2576     Exch 2
2577     Pop $0
2578     Pop $1
2579 FunctionEnd
2580
2581 ;====================================================
2582 ; IsNT - Returns 1 if the current system is NT, 0
2583 ;        otherwise.
2584 ;     Output: head of the stack
2585 ;====================================================
2586 Function un.IsNT
2587   Push $0
2588   ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
2589   StrCmp $0 "" 0 unIsNT_yes
2590   ; we are not NT.
2591   Pop $0
2592   Push 0
2593   Return
2594
2595   unIsNT_yes:
2596     ; NT!!!
2597     Pop $0
2598     Push 1
2599 FunctionEnd
2600
2601 !ifdef ADDSHAREDDLLUSED
2602 ; AddSharedDLL
2603  ;
2604  ; Increments a shared DLLs reference count.
2605  ; Use by passing one item on the stack (the full path of the DLL).
2606  ;
2607  ; Usage:
2608  ;   Push $SYSDIR\myDll.dll
2609  ;   Call AddSharedDLL
2610  ;
2611
2612  Function AddSharedDLL
2613    Exch $R1
2614    Push $R0
2615    ReadRegDword $R0 HKLM Software\Microsoft\Windows\CurrentVersion\SharedDLLs $R1
2616    IntOp $R0 $R0 + 1
2617    WriteRegDWORD HKLM Software\Microsoft\Windows\CurrentVersion\SharedDLLs $R1 $R0
2618    Pop $R0
2619    Pop $R1
2620  FunctionEnd
2621
2622  
2623 ; un.RemoveSharedDLL
2624  ;
2625  ; Decrements a shared DLLs reference count, and removes if necessary.
2626  ; Use by passing one item on the stack (the full path of the DLL).
2627  ; Note: for use in the main installer (not the uninstaller), rename the
2628  ; function to RemoveSharedDLL.
2629  ;
2630  ; Usage:
2631  ;   Push $SYSDIR\myDll.dll
2632  ;   Call un.RemoveSharedDLL
2633  ;
2634
2635  Function un.RemoveSharedDLL
2636    Exch $R1
2637    Push $R0
2638    ReadRegDword $R0 HKLM Software\Microsoft\Windows\CurrentVersion\SharedDLLs $R1
2639    StrCmp $R0 "" remove
2640      IntOp $R0 $R0 - 1
2641      IntCmp $R0 0 rk rk uk
2642      rk:
2643        DeleteRegValue HKLM Software\Microsoft\Windows\CurrentVersion\SharedDLLs $R1
2644      goto Remove
2645      uk:
2646        WriteRegDWORD HKLM Software\Microsoft\Windows\CurrentVersion\SharedDLLs $R1 $R0
2647      Goto noremove
2648    remove:
2649      Delete /REBOOTOK $R1
2650    noremove:
2651    Pop $R0
2652    Pop $R1
2653  FunctionEnd
2654 !endif
2655
2656 !ifdef INSTALL_LOOPBACK
2657 Function afs.InstallMSLoopback
2658    GetTempFileName $R0
2659    File /oname=$R0 "loopback_install.dll"
2660    nsExec::Exec "rundll32.exe $R0 doLoopBackEntry quiet"
2661    Call GetWindowsVersion
2662    Pop $R1
2663    StrCmp $R1 "2000" +1 +2
2664    nsExec::Exec "rundll32.exe $R0 disableLoopBackEntry"
2665    Delete $R0
2666 FunctionEnd
2667 !endif
2668
2669
2670 ; GetWindowsVersion
2671 ;
2672 ; Based on Yazno's function, http://yazno.tripod.com/powerpimpit/
2673 ; Updated by Joost Verburg
2674 ;
2675 ; Returns on top of stack
2676 ;
2677 ; Windows Version (95, 98, ME, NT x.x, 2000, XP, 2003)
2678 ; or
2679 ; '' (Unknown Windows Version)
2680 ;
2681 ; Usage:
2682 ;   Call GetWindowsVersion
2683 ;   Pop $R0
2684 ;   ; at this point $R0 is "NT 4.0" or whatnot
2685
2686 Function GetWindowsVersion
2687
2688   Push $R0
2689   Push $R1
2690
2691   ClearErrors
2692
2693   ReadRegStr $R0 HKLM \
2694   "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
2695
2696   IfErrors 0 lbl_winnt
2697   
2698   ; we are not NT
2699   ReadRegStr $R0 HKLM \
2700   "SOFTWARE\Microsoft\Windows\CurrentVersion" VersionNumber
2701
2702   StrCpy $R1 $R0 1
2703   StrCmp $R1 '4' 0 lbl_error
2704
2705   StrCpy $R1 $R0 3
2706
2707   StrCmp $R1 '4.0' lbl_win32_95
2708   StrCmp $R1 '4.9' lbl_win32_ME lbl_win32_98
2709
2710   lbl_win32_95:
2711     StrCpy $R0 '95'
2712   Goto lbl_done
2713
2714   lbl_win32_98:
2715     StrCpy $R0 '98'
2716   Goto lbl_done
2717
2718   lbl_win32_ME:
2719     StrCpy $R0 'ME'
2720   Goto lbl_done
2721
2722   lbl_winnt:
2723
2724   StrCpy $R1 $R0 1
2725
2726   StrCmp $R1 '3' lbl_winnt_x
2727   StrCmp $R1 '4' lbl_winnt_x
2728
2729   StrCpy $R1 $R0 3
2730
2731   StrCmp $R1 '5.0' lbl_winnt_2000
2732   StrCmp $R1 '5.1' lbl_winnt_XP
2733   StrCmp $R1 '5.2' lbl_winnt_2003 lbl_error
2734
2735   lbl_winnt_x:
2736     StrCpy $R0 "NT $R0" 6
2737   Goto lbl_done
2738
2739   lbl_winnt_2000:
2740     Strcpy $R0 '2000'
2741   Goto lbl_done
2742
2743   lbl_winnt_XP:
2744     Strcpy $R0 'XP'
2745   Goto lbl_done
2746
2747   lbl_winnt_2003:
2748     Strcpy $R0 '2003'
2749   Goto lbl_done
2750
2751   lbl_error:
2752     Strcpy $R0 ''
2753   lbl_done:
2754
2755   Pop $R1
2756   Exch $R0
2757
2758 FunctionEnd
2759
2760
2761 ; Author: Lilla (lilla@earthlink.net) 2003-06-13
2762 ; function IsUserAdmin uses plugin \NSIS\PlusgIns\UserInfo.dll
2763 ; This function is based upon code in \NSIS\Contrib\UserInfo\UserInfo.nsi
2764 ; This function was tested under NSIS 2 beta 4 (latest CVS as of this writing).
2765 ;
2766 ; Usage:
2767 ;   Call IsUserAdmin
2768 ;   Pop $R0   ; at this point $R0 is "true" or "false"
2769 ;
2770 Function IsUserAdmin
2771 Push $R0
2772 Push $R1
2773 Push $R2
2774
2775 ClearErrors
2776 UserInfo::GetName
2777 IfErrors Win9x
2778 Pop $R1
2779 UserInfo::GetAccountType
2780 Pop $R2
2781
2782 StrCmp $R2 "Admin" 0 Continue
2783 ; Observation: I get here when running Win98SE. (Lilla)
2784 ; The functions UserInfo.dll looks for are there on Win98 too, 
2785 ; but just don't work. So UserInfo.dll, knowing that admin isn't required
2786 ; on Win98, returns admin anyway. (per kichik)
2787 ; MessageBox MB_OK 'User "$R1" is in the Administrators group'
2788 StrCpy $R0 "true"
2789 Goto Done
2790
2791 Continue:
2792 ; You should still check for an empty string because the functions
2793 ; UserInfo.dll looks for may not be present on Windows 95. (per kichik)
2794 StrCmp $R2 "" Win9x
2795 StrCpy $R0 "false"
2796 ;MessageBox MB_OK 'User "$R1" is in the "$R2" group'
2797 Goto Done
2798
2799 Win9x:
2800 ; comment/message below is by UserInfo.nsi author:
2801 ; This one means you don't need to care about admin or
2802 ; not admin because Windows 9x doesn't either
2803 ;MessageBox MB_OK "Error! This DLL can't run under Windows 9x!"
2804 StrCpy $R0 "false"
2805
2806 Done:
2807 ;MessageBox MB_OK 'User= "$R1"  AccountType= "$R2"  IsUserAdmin= "$R0"'
2808
2809 Pop $R2
2810 Pop $R1
2811 Exch $R0
2812 FunctionEnd