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