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