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