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