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