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