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