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