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