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