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