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