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