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