more-NSIS-fixes-20031206
[openafs.git] / src / WINNT / install / NSIS / OpenAFS.nsi
1 ;OpenAFS Install Script for NSIS
2 ;
3 ; Written by Rob Murawski <rsm4@ieee.org>
4 ;
5 ;Based on:
6 ;NSIS Modern User Interface version 1.63
7 ;MultiLanguage Example Script
8 ;Written by Joost Verburg
9
10 !define MUI_PRODUCT "OpenAFS" ;Define your own software name here
11 !include nsi-includes.nsi
12 ; Define DEBUG if building a DEBUG installer
13 ;!define DEBUG 1
14
15 !include "MUI.nsh"
16 !include Sections.nsh
17
18 ;--------------------------------
19 ;Configuration
20
21   ;General
22 !ifndef DEBUG
23   OutFile "OpenAFSforWindows.exe"
24 !else
25   OutFile "OpenAFSforWindows-DEBUG.exe"
26 !endif
27   SilentInstall normal
28   SetCompressor bzip2
29   !define MUI_ICON "..\..\client_config\afs_config.ico"
30   !define MUI_UNICON "c:\Program Files\NSIS\Contrib\Icons\normal-uninstall.ico"
31   !define AFS_COMPANY_NAME "OpenAFS"
32   !define AFS_PRODUCT_NAME "OpenAFS"
33   !define AFS_REGKEY_ROOT "Software\TransarcCorporation"
34   CRCCheck force
35
36   ;Folder selection page
37   InstallDir "$PROGRAMFILES\OpenAFS\AFS"
38   
39   ;Remember install folder
40   InstallDirRegKey HKCU "Software\TransarcCorporation" ""
41   
42   ;Remember the installer language
43   !define MUI_LANGDLL_REGISTRY_ROOT "HKCU" 
44   !define MUI_LANGDLL_REGISTRY_KEY "Software\TransarcCorporation" 
45   !define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language"
46   
47   ;Where are the files?
48   !define AFS_CLIENT_BUILDDIR "${AFS_DESTDIR}\root.client\usr\vice\etc"
49   !define AFS_WININSTALL_DIR "${AFS_DESTDIR}\WinInstall\Config"
50   !define AFS_BUILD_INCDIR "${AFS_DESTDIR}\include"
51   !define AFS_CLIENT_LIBDIR "${AFS_DESTDIR}\lib"
52   !define AFS_SERVER_BUILDDIR "${AFS_DESTDIR}\root.server\usr\afs\bin"
53   !define AFS_ETC_BUILDDIR "${AFS_DESTDIR}\etc"
54   
55 ;--------------------------------
56 ;Modern UI Configuration
57
58   ;!define MUI_LICENSEPAGE
59   !define MUI_CUSTOMPAGECOMMANDS
60   !define MUI_WELCOMEPAGE
61   !define MUI_COMPONENTSPAGE
62   !define MUI_COMPONENTSPAGE_SMALLDESC
63   !define MUI_DIRECTORYPAGE
64
65   !define MUI_ABORTWARNING
66   !define MUI_FINISHPAGE
67   
68   !define MUI_UNINSTALLER
69   !define MUI_UNCONFIRMPAGE
70
71   
72   !insertmacro MUI_PAGECOMMAND_WELCOME
73   ;!insertmacro MUI_PAGECOMMAND_LICENSE
74   !insertmacro MUI_PAGECOMMAND_COMPONENTS
75   !insertmacro MUI_PAGECOMMAND_DIRECTORY
76   Page custom AFSPageGetCellServDB
77   Page custom AFSPageGetCellName
78   ;Page custom AFSPageGetConfigURL
79   !insertmacro MUI_PAGECOMMAND_INSTFILES
80   !insertmacro MUI_PAGECOMMAND_FINISH
81   
82   ;LicenseData "Licenses.rtf"
83 ;--------------------------------
84 ;Languages
85
86   !insertmacro MUI_LANGUAGE "English"
87   ;!insertmacro MUI_LANGUAGE "French"
88   !insertmacro MUI_LANGUAGE "German"
89   !insertmacro MUI_LANGUAGE "Spanish"
90   !insertmacro MUI_LANGUAGE "SimpChinese"
91   !insertmacro MUI_LANGUAGE "TradChinese"    
92   !insertmacro MUI_LANGUAGE "Japanese"
93   ;!insertmacro MUI_LANGUAGE "Korean"
94   ;!insertmacro MUI_LANGUAGE "Italian"
95   ;!insertmacro MUI_LANGUAGE "Dutch"
96   ;!insertmacro MUI_LANGUAGE "Danish"
97   ;!insertmacro MUI_LANGUAGE "Greek"
98   ;!insertmacro MUI_LANGUAGE "Russian"
99   !insertmacro MUI_LANGUAGE "PortugueseBR"
100   ;!insertmacro MUI_LANGUAGE "Polish"
101   ;!insertmacro MUI_LANGUAGE "Ukrainian"
102   ;!insertmacro MUI_LANGUAGE "Czech"
103   ;!insertmacro MUI_LANGUAGE "Slovak"
104   ;!insertmacro MUI_LANGUAGE "Croatian"
105   ;!insertmacro MUI_LANGUAGE "Bulgarian"
106   ;!insertmacro MUI_LANGUAGE "Hungarian"
107   ;!insertmacro MUI_LANGUAGE "Thai"
108   ;!insertmacro MUI_LANGUAGE "Romanian"
109   ;!insertmacro MUI_LANGUAGE "Macedonian"
110   ;!insertmacro MUI_LANGUAGE "Turkish"
111   
112 ;--------------------------------
113 ;Language Strings
114     
115   ;Descriptions
116   LangString DESC_SecCopyUI ${LANG_ENGLISH} "OpenAFS for Windows: English"
117   ;LangString DESC_SecCopyUI ${LANG_FRENCH} "OpenAFS for Windows: French"
118   LangString DESC_SecCopyUI ${LANG_GERMAN} "OpenAFS for Windows: German"
119   LangString DESC_SecCopyUI ${LANG_SPANISH} "OpenAFS for Windows: Spanish"
120   LangString DESC_SecCopyUI ${LANG_SIMPCHINESE} "OpenAFS for Windows: Simplified Chinese"
121   LangString DESC_SecCopyUI ${LANG_TRADCHINESE} "OpenAFS for Windows: Traditional Chinese description"
122   LangString DESC_SecCopyUI ${LANG_JAPANESE} "OpenAFS for Windows: Japanese description"
123   ;LangString DESC_SecCopyUI ${LANG_KOREAN} "OpenAFS for Windows: Korean description"
124   ;LangString DESC_SecCopyUI ${LANG_ITALIAN} "OpenAFS for Windows: Italian description"
125   ;LangString DESC_SecCopyUI ${LANG_DUTCH} "OpenAFS for Windows: Dutch description"
126   ;LangString DESC_SecCopyUI ${LANG_DANISH} "OpenAFS for Windows: Danish description"
127   ;LangString DESC_SecCopyUI ${LANG_GREEK} "OpenAFS for Windows: Greek description"
128   ;LangString DESC_SecCopyUI ${LANG_RUSSIAN} "OpenAFS for Windows: Russian description"
129   LangString DESC_SecCopyUI ${LANG_PORTUGUESEBR} "OpenAFS for Windows: Portuguese (Brasil) description"
130   ;LangString DESC_SecCopyUI ${LANG_POLISH} "OpenAFS for Windows: Polish description"
131   ;LangString DESC_SecCopyUI ${LANG_UKRAINIAN} "OpenAFS for Windows: Ukrainian description"
132   ;LangString DESC_SecCopyUI ${LANG_CZECH} "OpenAFS for Windows: Czechian description"
133   ;LangString DESC_SecCopyUI ${LANG_SLOVAK} "OpenAFS for Windows: Slovakian description"
134   ;LangString DESC_SecCopyUI ${LANG_CROATIAN} "OpenAFS for Windows: Slovakian description"
135   ;LangString DESC_SecCopyUI ${LANG_BULGARIAN} "OpenAFS for Windows: Bulgarian description"
136   ;LangString DESC_SecCopyUI ${LANG_HUNGARIAN} "OpenAFS for Windows: Hungarian description"
137   ;LangString DESC_SecCopyUI ${LANG_THAI} "OpenAFS for Windows: Thai description"
138   ;LangString DESC_SecCopyUI ${LANG_ROMANIAN} "OpenAFS for Windows: Romanian description"
139   ;LangString DESC_SecCopyUI ${LANG_MACEDONIAN} "OpenAFS for Windows: Macedonian description"
140   ;LangString DESC_SecCopyUI ${LANG_TURKISH} "OpenAFS for Windows: Turkish description"
141
142   LangString DESC_SecClient ${LANG_ENGLISH} "OpenAFS Client: Allows you to access AFS from your Windows PC."
143   LangString DESC_SecClient ${LANG_GERMAN} "OpenAFS Client: Allows you to access AFS from your Windows PC."
144   LangString DESC_SecClient ${LANG_SPANISH} "OpenAFS Client: Allows you to access AFS from your Windows PC."
145   LangString DESC_SecClient ${LANG_SIMPCHINESE} "OpenAFS Client: Allows you to access AFS from your Windows PC."
146   LangString DESC_SecClient ${LANG_TRADCHINESE} "OpenAFS Client: Allows you to access AFS from your Windows PC."
147   LangString DESC_SecClient ${LANG_JAPANESE} "OpenAFS Client: Allows you to access AFS from your Windows PC."
148   ;LangString DESC_SecClient ${LANG_KOREAN} "OpenAFS Client: Allows you to access AFS from your Windows PC."
149   LangString DESC_SecClient ${LANG_PORTUGUESEBR} "OpenAFS Client: Allows you to access AFS from your Windows PC."
150   
151   LangString DESC_SecServer ${LANG_ENGLISH} "OpenAFS Server: Allows you to run an AFS file server."
152   LangString DESC_SecServer ${LANG_GERMAN} "OpenAFS Server: Allows you to run an AFS file server."
153   LangString DESC_SecServer ${LANG_SPANISH} "OpenAFS Server: Allows you to run an AFS file server."
154   LangString DESC_SecServer ${LANG_SIMPCHINESE} "OpenAFS Server: Allows you to run an AFS file server."
155   LangString DESC_SecServer ${LANG_TRADCHINESE} "OpenAFS Server: Allows you to run an AFS file server."
156   LangString DESC_SecServer ${LANG_JAPANESE} "OpenAFS Server: Allows you to run an AFS file server."
157   ;LangString DESC_SecServer ${LANG_KOREAN} "OpenAFS Server: Allows you to run an AFS file server."
158   LangString DESC_SecServer ${LANG_PORTUGUESEBR} "OpenAFS Server: Allows you to run an AFS file server."
159   
160   LangString DESC_SecControl ${LANG_ENGLISH} "OpenAFS Control Center: GUI utilities for managing and configuring AFS."
161   LangString DESC_SecControl ${LANG_GERMAN} "OpenAFS Control Center: GUI utilities for managing and configuring AFS."
162   LangString DESC_SecControl ${LANG_SPANISH} "OpenAFS Control Center: GUI utilities for managing and configuring AFS."
163   LangString DESC_SecControl ${LANG_SIMPCHINESE} "OpenAFS Control Center: GUI utilities for managing and configuring AFS."
164   LangString DESC_SecControl ${LANG_TRADCHINESE} "OpenAFS Control Center: GUI utilities for managing and configuring AFS."
165   LangString DESC_SecControl ${LANG_JAPANESE} "OpenAFS Control Center: GUI utilities for managing and configuring AFS."
166   ;LangString DESC_SecControl ${LANG_KOREAN} "OpenAFS Control Center: GUI utilities for managing and configuring AFS."
167   LangString DESC_SecControl ${LANG_PORTUGUESEBR} "OpenAFS Control Center: GUI utilities for managing and configuring AFS."
168   
169   LangString DESC_SecDocs ${LANG_ENGLISH} "Supplemental Documentation: Additional documentation for using OpenAFS."
170   LangString DESC_SecDocs ${LANG_GERMAN} "OpenAFS Supplemental Documentation: Additional documentation for using OpenAFS."
171   LangString DESC_SecDocs ${LANG_SPANISH} "OpenAFS Supplemental Documentation: Additional documentation for using OpenAFS."
172   LangString DESC_SecDocs ${LANG_SIMPCHINESE} "OpenAFS Supplemental Documentation: Additional documentation for using OpenAFS."
173   LangString DESC_SecDocs ${LANG_TRADCHINESE} "OpenAFS Supplemental Documentation: Additional documentation for using OpenAFS."
174   LangString DESC_SecDocs ${LANG_JAPANESE} "OpenAFS Supplemental Documentation: Additional documentation for using OpenAFS."
175   ;LangString DESC_SecDocs ${LANG_KOREAN} "OpenAFS Supplemental Documentation: Additional documentation for using OpenAFS."
176   LangString DESC_SecDocs ${LANG_PORTUGUESEBR} "OpenAFS Supplemental Documentation: Additional documentation for using OpenAFS."
177   
178 ; Popup error messages
179   LangString CellError ${LANG_ENGLISH} "You must specify a valid CellServDB file to copy during install"
180   LangString CellError ${LANG_GERMAN} "You must specify a valid CellServDB file to copy during the install"
181   LangString CellError ${LANG_SPANISH} "You must specify a valid CellServDB file to copy during the install"
182   LangString CellError ${LANG_SIMPCHINESE} "You must specify a valid CellServDB file to copy during the install"
183   LangString CellError ${LANG_TRADCHINESE} "You must specify a valid CellServDB file to copy during the install"
184   LangString CellError ${LANG_JAPANESE} "You must specify a valid CellServDB file to copy during the install"
185   ;LangString CellError ${LANG_KOREAN} "You must specify a valid CellServDB file to copy during the install"
186   LangString CellError ${LANG_PORTUGUESEBR} "You must specify a valid CellServDB file to copy during the install"
187   
188   
189 ; Upgrade/re-install strings
190    LangString UPGRADE_CLIENT ${LANG_ENGLISH} "Upgrade AFS Client"
191    LangString UPGRADE_CLIENT ${LANG_GERMAN} "Upgrade AFS Client"
192    LangString UPGRADE_CLIENT ${LANG_SPANISH} "Upgrade AFS Client"
193    LangString UPGRADE_CLIENT ${LANG_SIMPCHINESE} "Upgrade AFS Client"
194    LangString UPGRADE_CLIENT ${LANG_TRADCHINESE} "Upgrade AFS Client"
195    LangString UPGRADE_CLIENT ${LANG_JAPANESE} "Upgrade AFS Client"
196    ;LangString UPGRADE_CLIENT ${LANG_KOREAN} "Upgrade AFS Client"
197    LangString UPGRADE_CLIENT ${LANG_PORTUGUESEBR} "Upgrade AFS Client"
198    
199    
200    LangString REINSTALL_SERVER ${LANG_ENGLISH} "Re-install AFS Server"
201    LangString REINSTALL_SERVER ${LANG_GERMAN} "Re-install AFS Server"
202    LangString REINSTALL_SERVER ${LANG_SPANISH} "Re-install AFS Server"
203    LangString REINSTALL_SERVER ${LANG_SIMPCHINESE} "Re-install AFS Server"
204    LangString REINSTALL_SERVER ${LANG_TRADCHINESE} "Re-install AFS Server"
205    LangString REINSTALL_SERVER ${LANG_JAPANESE} "Re-install AFS Server"
206    ;LangString REINSTALL_SERVER ${LANG_KOREAN} "Re-install AFS Server"
207    LangString REINSTALL_SERVER ${LANG_PORTUGUESEBR} "Re-install AFS Server"
208   
209 ;--------------------------------
210 ; Macros
211 ; Macro - Upgrade DLL File
212  ; Written by Joost Verburg
213  ; ------------------------
214  ;
215  ; Example of usage:
216  ; !insertmacro UpgradeDLL "dllname.dll" "$SYSDIR\dllname.dll"
217  ;
218  ; !define UPGRADEDLL_NOREGISTER if you want to upgrade a DLL which cannot be registered
219  ;
220  ; Note that this macro sets overwrite to ON (the default) when it has been inserted.
221  ; If you are using another setting, set it again after inserting the macro.
222
223
224  !macro UpgradeDLL LOCALFILE DESTFILE
225
226    Push $R0
227    Push $R1
228    Push $R2
229    Push $R3
230
231    ;------------------------
232    ;Check file and version
233
234    IfFileExists "${DESTFILE}" "" "copy_${LOCALFILE}"
235
236    ClearErrors
237      GetDLLVersionLocal "${LOCALFILE}" $R0 $R1
238      GetDLLVersion "${DESTFILE}" $R2 $R3
239    IfErrors "upgrade_${LOCALFILE}"
240
241    IntCmpU $R0 $R2 "" "done_${LOCALFILE}" "upgrade_${LOCALFILE}"
242    IntCmpU $R1 $R3 "done_${LOCALFILE}" "done_${LOCALFILE}" "upgrade_${LOCALFILE}"
243
244    ;------------------------
245    ;Let's upgrade the DLL!
246
247    SetOverwrite try
248
249    "upgrade_${LOCALFILE}:"
250      !ifndef UPGRADEDLL_NOREGISTER
251        ;Unregister the DLL
252        UnRegDLL "${DESTFILE}"
253      !endif
254
255    ;------------------------
256    ;Try to copy the DLL directly
257
258    ClearErrors
259      StrCpy $R0 "${DESTFILE}"
260      Call ":file_${LOCALFILE}"
261    IfErrors "" "noreboot_${LOCALFILE}"
262
263    ;------------------------
264    ;DLL is in use. Copy it to a temp file and Rename it on reboot.
265
266    GetTempFileName $R0
267      Call ":file_${LOCALFILE}"
268    Rename /REBOOTOK $R0 "${DESTFILE}"
269
270    ;------------------------
271    ;Register the DLL on reboot
272
273    !ifndef UPGRADEDLL_NOREGISTER
274      WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\RunOnce" \
275      "Register ${DESTFILE}" '"$SYSDIR\rundll32.exe" "${DESTFILE},DllRegisterServer"'
276    !endif
277
278    Goto "done_${LOCALFILE}"
279
280    ;------------------------
281    ;DLL does not exist - just extract
282
283    "copy_${LOCALFILE}:"
284      StrCpy $R0 "${DESTFILE}"
285      Call ":file_${LOCALFILE}"
286
287    ;------------------------
288    ;Register the DLL
289
290    "noreboot_${LOCALFILE}:"
291      !ifndef UPGRADEDLL_NOREGISTER
292        RegDLL "${DESTFILE}"
293      !endif
294
295    ;------------------------
296    ;Done
297
298    "done_${LOCALFILE}:"
299
300    Pop $R3
301    Pop $R2
302    Pop $R1
303    Pop $R0
304
305    ;------------------------
306    ;End
307
308    Goto "end_${LOCALFILE}"
309
310    ;------------------------
311    ;Called to extract the DLL
312
313    "file_${LOCALFILE}:"
314      File /oname=$R0 "${LOCALFILE}"
315      Return
316
317    "end_${LOCALFILE}:"
318
319   ;------------------------
320   ;Set overwrite to default
321   ;(was set to TRY above)
322
323   SetOverwrite on
324
325  !macroend
326
327
328 ;--------------------------------
329 ;Reserve Files
330   
331   ;Things that need to be extracted on first (keep these lines before any File command!)
332   ;Only useful for BZIP2 compression
333   !insertmacro MUI_RESERVEFILE_LANGDLL
334   
335 ;--------------------------------
336 ;Installer Sections
337
338 ;----------------------
339 ; OpenAFS CLIENT
340 Section "AFS Client" SecClient
341
342   SetShellVarContext all
343    ; Do client components
344   SetOutPath "$INSTDIR\Client\Program"
345   File "${AFS_CLIENT_BUILDDIR}\afsshare.exe"
346   File "${AFS_BUILD_INCDIR}\afs\cm_config.h"
347   File "${AFS_CLIENT_BUILDDIR}\libosi.dll"
348   File "${AFS_BUILD_INCDIR}\afs\kautils.h"
349   File "${AFS_CLIENT_BUILDDIR}\libafsconf.dll"
350   File "${AFS_CLIENT_BUILDDIR}\klog.exe"
351   File "${AFS_CLIENT_BUILDDIR}\tokens.exe"
352   File "${AFS_CLIENT_BUILDDIR}\unlog.exe"
353   File "${AFS_CLIENT_BUILDDIR}\fs.exe"
354   File "${AFS_CLIENT_LIBDIR}\libafsconf.lib"
355   File "${AFS_CLIENT_LIBDIR}\afsauthent.lib"
356   File "${AFS_CLIENT_BUILDDIR}\afscreds.exe"
357   File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext.dll"
358   File "${AFS_BUILD_INCDIR}\afs\auth.h"
359   File "${AFS_CLIENT_BUILDDIR}\afsd_service.exe"
360   File "${AFS_CLIENT_BUILDDIR}\afslogon.dll"
361   File "${AFS_CLIENT_BUILDDIR}\symlink.exe"
362   File "${AFS_DESTDIR}\bin\kpasswd.exe"
363   File "${AFS_SERVER_BUILDDIR}\pts.exe"
364   File "${AFS_SERVER_BUILDDIR}\bos.exe"
365   File "${AFS_SERVER_BUILDDIR}\kas.exe"
366   File "${AFS_SERVER_BUILDDIR}\vos.exe"
367   File "${AFS_SERVER_BUILDDIR}\udebug.exe"
368   File "${AFS_DESTDIR}\bin\translate_et.exe"
369   File "${AFS_DESTDIR}\etc\rxdebug.exe"
370   File "${AFS_DESTDIR}\etc\backup.exe"
371   
372 !ifdef DEBUG
373   File "${AFS_CLIENT_BUILDDIR}\afsshare.pdb"
374   File "${AFS_CLIENT_BUILDDIR}\libosi.pdb"
375   File "${AFS_CLIENT_BUILDDIR}\libafsconf.pdb"
376   File "${AFS_CLIENT_BUILDDIR}\klog.pdb"
377   File "${AFS_CLIENT_BUILDDIR}\tokens.pdb"
378   File "${AFS_CLIENT_BUILDDIR}\unlog.pdb"
379   File "${AFS_CLIENT_BUILDDIR}\fs.pdb"
380   File "${AFS_CLIENT_BUILDDIR}\afscreds.pdb"
381   File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext.pdb"
382   File "${AFS_CLIENT_BUILDDIR}\afsd_service.pdb"
383   File "${AFS_CLIENT_BUILDDIR}\afslogon.pdb"
384   File "${AFS_CLIENT_BUILDDIR}\symlink.pdb"
385   File "${AFS_DESTDIR}\bin\kpasswd.pdb"
386   ;File "${AFS_SERVER_BUILDDIR}\pts.pdb"
387   File "${AFS_SERVER_BUILDDIR}\bos.pdb"
388   File "${AFS_SERVER_BUILDDIR}\kas.pdb"
389   File "${AFS_SERVER_BUILDDIR}\vos.pdb"
390   File "${AFS_SERVER_BUILDDIR}\udebug.pdb"
391   File "${AFS_DESTDIR}\bin\translate_et.pdb"
392   File "${AFS_DESTDIR}\etc\rxdebug.pdb"
393   File "${AFS_DESTDIR}\etc\backup.pdb"
394 !endif
395
396   ; Client_headers
397    SetOutPath "$INSTDIR\Client\Program\Include"
398    File "${AFS_BUILD_INCDIR}\lock.h"
399    File "${AFS_BUILD_INCDIR}\lwp.h"
400    File "${AFS_BUILD_INCDIR}\preempt.h"
401    File "${AFS_BUILD_INCDIR}\timer.h"
402    File "${AFS_BUILD_INCDIR}\des.h"
403    File "${AFS_BUILD_INCDIR}\des_conf.h"
404    File "${AFS_BUILD_INCDIR}\mit-cpyright.h"
405    ;File "${AFS_BUILD_INCDIR}\des-odd.h"
406    File "${AFS_BUILD_INCDIR}\crypt.h"
407    File "${AFS_BUILD_INCDIR}\pthread.h"
408    File "${AFS_BUILD_INCDIR}\dbrpc.h"
409    File "${AFS_BUILD_INCDIR}\basic.h"
410    File "${AFS_BUILD_INCDIR}\osidebug.h"
411    File "${AFS_BUILD_INCDIR}\osiltype.h"
412    File "${AFS_BUILD_INCDIR}\osistatl.h"
413    File "${AFS_BUILD_INCDIR}\trylock.h"
414    File "${AFS_BUILD_INCDIR}\main.h"
415    File "${AFS_BUILD_INCDIR}\osibasel.h"
416    File "${AFS_BUILD_INCDIR}\osifd.h"
417    File "${AFS_BUILD_INCDIR}\osiqueue.h"
418    File "${AFS_BUILD_INCDIR}\osiutils.h"
419    File "${AFS_BUILD_INCDIR}\osi.h"
420    File "${AFS_BUILD_INCDIR}\osidb.h"
421    File "${AFS_BUILD_INCDIR}\osilog.h"
422    File "${AFS_BUILD_INCDIR}\osisleep.h"
423    File "${AFS_BUILD_INCDIR}\perf.h"
424    File "${AFS_BUILD_INCDIR}\ubik.h"
425    File "${AFS_BUILD_INCDIR}\ubik_int.h"
426    
427    
428    
429    SetOutPath "$INSTDIR\Client\Program\Include\afs"
430    File "${AFS_BUILD_INCDIR}\afs\afs_args.h"
431    File "${AFS_BUILD_INCDIR}\afs\debug.h"
432    File "${AFS_BUILD_INCDIR}\afs\param.h"
433    File "${AFS_BUILD_INCDIR}\afs\afs_sysnames.h"
434    ;File "${AFS_BUILD_INCDIR}\afs\permit_xprt.h"
435    File "${AFS_BUILD_INCDIR}\afs\stds.h"
436    File "${AFS_BUILD_INCDIR}\afs\icl.h"
437    File "${AFS_BUILD_INCDIR}\afs\procmgmt.h"
438    File "${AFS_BUILD_INCDIR}\afs\afsutil.h"
439    File "${AFS_BUILD_INCDIR}\afs\assert.h"
440    File "${AFS_BUILD_INCDIR}\afs\dirent.h"
441    File "${AFS_BUILD_INCDIR}\afs\errors.h"
442    File "${AFS_BUILD_INCDIR}\afs\itc.h"
443    File "${AFS_BUILD_INCDIR}\afs\vice.h"
444    File "${AFS_BUILD_INCDIR}\afs\pthread_glock.h"
445    File "${AFS_BUILD_INCDIR}\afs\errmap_nt.h"
446    File "${AFS_BUILD_INCDIR}\afs\dirpath.h"
447    File "${AFS_BUILD_INCDIR}\afs\ktime.h"
448    File "${AFS_BUILD_INCDIR}\afs\fileutil.h"
449    File "${AFS_BUILD_INCDIR}\afs\secutil_nt.h"
450    File "${AFS_BUILD_INCDIR}\afs\com_err.h"
451    File "${AFS_BUILD_INCDIR}\afs\error_table.h"
452    ;File "${AFS_BUILD_INCDIR}\afs\mit_sipb-cr.h"
453    File "${AFS_BUILD_INCDIR}\afs\cmd.h"
454    File "${AFS_BUILD_INCDIR}\afs\rxgen_consts.h"
455    File "${AFS_BUILD_INCDIR}\afs\afsint.h"
456    File "${AFS_BUILD_INCDIR}\afs\afscbint.h"
457    File "${AFS_BUILD_INCDIR}\afs\audit.h"
458    File "${AFS_BUILD_INCDIR}\afs\acl.h"
459    File "${AFS_BUILD_INCDIR}\afs\prs_fs.h"
460    File "${AFS_BUILD_INCDIR}\afs\afsd.h"
461    File "${AFS_BUILD_INCDIR}\afs\cm.h"
462    File "${AFS_BUILD_INCDIR}\afs\cm_buf.h"
463    File "${AFS_BUILD_INCDIR}\afs\cm_cell.h"
464    File "${AFS_BUILD_INCDIR}\afs\cm_config.h"
465    File "${AFS_BUILD_INCDIR}\afs\cm_conn.h"
466    File "${AFS_BUILD_INCDIR}\afs\cm_ioctl.h"
467    File "${AFS_BUILD_INCDIR}\afs\cm_scache.h"
468    File "${AFS_BUILD_INCDIR}\afs\cm_server.h"
469    File "${AFS_BUILD_INCDIR}\afs\cm_user.h"
470    File "${AFS_BUILD_INCDIR}\afs\cm_utils.h"
471    File "${AFS_BUILD_INCDIR}\afs\fs_utils.h"
472    File "${AFS_BUILD_INCDIR}\afs\krb.h"
473    File "${AFS_BUILD_INCDIR}\afs\krb_prot.h"
474    File "${AFS_BUILD_INCDIR}\afs\smb.h"
475    File "${AFS_BUILD_INCDIR}\afs\smb3.h"
476    File "${AFS_BUILD_INCDIR}\afs\smb_iocons.h"
477    File "${AFS_BUILD_INCDIR}\afs\smb_ioctl.h"
478    File "${AFS_BUILD_INCDIR}\afs\afsrpc.h"
479    File "${AFS_BUILD_INCDIR}\afs\afssyscalls.h"
480    File "${AFS_BUILD_INCDIR}\afs\pioctl_nt.h"
481    File "${AFS_BUILD_INCDIR}\afs\auth.h"
482    File "${AFS_BUILD_INCDIR}\afs\cellconfig.h"
483    File "${AFS_BUILD_INCDIR}\afs\keys.h"
484    File "${AFS_BUILD_INCDIR}\afs\ptserver.h"
485    File "${AFS_BUILD_INCDIR}\afs\ptint.h"
486    File "${AFS_BUILD_INCDIR}\afs\pterror.h"
487    File "${AFS_BUILD_INCDIR}\afs\ptint.h"
488    File "${AFS_BUILD_INCDIR}\afs\pterror.h"
489    File "${AFS_BUILD_INCDIR}\afs\ptclient.h"
490    File "${AFS_BUILD_INCDIR}\afs\prserver.h"
491    File "${AFS_BUILD_INCDIR}\afs\print.h"
492    File "${AFS_BUILD_INCDIR}\afs\prerror.h"
493    File "${AFS_BUILD_INCDIR}\afs\prclient.h"
494    File "${AFS_BUILD_INCDIR}\afs\kautils.h"
495    File "${AFS_BUILD_INCDIR}\afs\kauth.h"
496    File "${AFS_BUILD_INCDIR}\afs\kaport.h"
497    File "${AFS_BUILD_INCDIR}\afs\vl_opcodes.h"
498    File "${AFS_BUILD_INCDIR}\afs\vlserver.h"
499    File "${AFS_BUILD_INCDIR}\afs\vldbint.h"
500    File "${AFS_BUILD_INCDIR}\afs\usd.h"
501    File "${AFS_BUILD_INCDIR}\afs\bubasics.h"
502    File "${AFS_BUILD_INCDIR}\afs\butc.h"
503    File "${AFS_BUILD_INCDIR}\afs\bumon.h"
504    File "${AFS_BUILD_INCDIR}\afs\butm.h"
505    File "${AFS_BUILD_INCDIR}\afs\tcdata.h"
506    File "${AFS_BUILD_INCDIR}\afs\budb.h"
507    ;File "${AFS_BUILD_INCDIR}\afs\budb_errors.h"
508    File "${AFS_BUILD_INCDIR}\afs\budb_client.h"
509    File "${AFS_BUILD_INCDIR}\afs\dir.h"
510    File "${AFS_BUILD_INCDIR}\afs\fssync.h"
511    File "${AFS_BUILD_INCDIR}\afs\ihandle.h"
512    File "${AFS_BUILD_INCDIR}\afs\nfs.h"
513    File "${AFS_BUILD_INCDIR}\afs\ntops.h"
514    File "${AFS_BUILD_INCDIR}\afs\partition.h"
515    File "${AFS_BUILD_INCDIR}\afs\viceinode.h"
516    File "${AFS_BUILD_INCDIR}\afs\vnode.h"
517    File "${AFS_BUILD_INCDIR}\afs\volume.h"
518    File "${AFS_BUILD_INCDIR}\afs\voldefs.h"
519    File "${AFS_BUILD_INCDIR}\afs\volser.h"
520    File "${AFS_BUILD_INCDIR}\afs\volint.h"
521    File "${AFS_BUILD_INCDIR}\afs\fs_stats.h"
522    File "${AFS_BUILD_INCDIR}\afs\bosint.h"
523    File "${AFS_BUILD_INCDIR}\afs\bnode.h"
524    
525    
526    SetOutPath "$INSTDIR\Client\Program\Include\rx"
527    File "${AFS_BUILD_INCDIR}\rx\rx.h"
528    File "${AFS_BUILD_INCDIR}\rx\rx_packet.h"
529    File "${AFS_BUILD_INCDIR}\rx\rx_user.h"
530    File "${AFS_BUILD_INCDIR}\rx\rx_event.h"
531    File "${AFS_BUILD_INCDIR}\rx\rx_queue.h"
532    File "${AFS_BUILD_INCDIR}\rx\rx_globals.h"
533    File "${AFS_BUILD_INCDIR}\rx\rx_clock.h"
534    File "${AFS_BUILD_INCDIR}\rx\rx_misc.h"
535    File "${AFS_BUILD_INCDIR}\rx\rx_multi.h"
536    File "${AFS_BUILD_INCDIR}\rx\rx_null.h"
537    File "${AFS_BUILD_INCDIR}\rx\rx_lwp.h"
538    File "${AFS_BUILD_INCDIR}\rx\rx_pthread.h"
539    File "${AFS_BUILD_INCDIR}\rx\rx_xmit_nt.h"
540    File "${AFS_BUILD_INCDIR}\rx\xdr.h"
541    File "${AFS_BUILD_INCDIR}\rx\rxkad.h"
542    
543    
544
545    ; Client Sample
546    SetOutPath "$INSTDIR\Client\Program\Sample"
547    File "..\..\afsd\sample\token.c"
548    
549    Call AFSLangFiles
550    
551    ; Do SYSTEM32 DIR
552    SetOutPath "$SYSDIR"
553    File "${AFS_CLIENT_BUILDDIR}\afs_cpa.cpl"
554 !IFDEF DEBUG
555    ;File "${SDK_DIR}\REDIST\msvcrtd.dll"
556    ;File "${SDK_DIR}\REDIST\msvcrtd.pdb"
557 !IFDEF CL_1310
558    !insertmacro UpgradeDLL "${AFS_WININSTALL_DIR}\mfc71d.dll" "$SYSDIR\mfc71d.dll"
559 !ELSE
560 !IFDEF CL_1300
561    !insertmacro UpgradeDLL "${AFS_WININSTALL_DIR}\mfc70d.dll" "$SYSDIR\mfc70d.dll"
562 !ELSE
563    !insertmacro UpgradeDLL "${AFS_WININSTALL_DIR}\mfc42d.dll" "$SYSDIR\mfc42d.dll"
564 !ENDIF
565 !ENDIF
566 !ELSE
567    ;File "${SDK_DIR}\REDIST\msvcrt.dll"
568 !IFDEF CL_1310
569    !insertmacro UpgradeDLL "${AFS_WININSTALL_DIR}\mfc71.dll" "$SYSDIR\mfc71.dll"
570 !ELSE
571 !IFDEF CL_1300
572    !insertmacro UpgradeDLL "${AFS_WININSTALL_DIR}\mfc70.dll" "$SYSDIR\mfc70.dll"
573 !ELSE
574    !insertmacro UpgradeDLL "${AFS_WININSTALL_DIR}\mfc42.dll" "$SYSDIR\mfc42.dll"
575 !ENDIF
576 !ENDIF
577 !ENDIF
578    
579   ; Do WINDOWSDIR components
580   ; Get AFS CellServDB file
581   Call afs.GetCellServDB
582   ;Call afs.InstallMSLoopback
583   
584 !ifdef INSTALL_KFW
585   ; Include Kerberos for Windows files in the installer...
586   SetOutPath "$INSTDIR\kfw\bin\"
587   File "${KFW_SOURCE}\bin\*"
588   SetOutPath "$INSTDIR\kfw\doc"
589   File "${KFW_SOURCE}\doc\*"
590 !endif
591   
592   ReadINIStr $R0 $0 "Field 2" "State"
593   StrCmp $R0 "1" UsePkg DontUsePkg
594  UsePkg:
595    SetOutPath "$WINDIR"
596    File "afsdcell.ini"
597 DontUsePkg:
598    ReadINIStr $R0 $0 "Field 6" "State"
599    StrCmp $R0 "1" UseFile DontUseFile
600 UseFile:
601    ReadINIStr $R0 $0 "Field 7" "State"
602    CopyFiles $R0 "$WINDIR\afsdcell.ini"
603 DontUseFile:
604    
605   ;Store install folder
606   WriteRegStr HKCU "${AFS_REGKEY_ROOT}\Client" "" $INSTDIR
607   Call AFSCommon.Install
608   
609   ; Write registry entries
610   WriteRegStr HKCR "*\shellex\ContextMenuHandlers\AFS Client Shell Extension" "" "{DC515C27-6CAC-11D1-BAE7-00C04FD140D2}"
611   WriteRegStr HKCR "CLSID\{DC515C27-6CAC-11D1-BAE7-00C04FD140D2}" "" "AFS Client Shell Extension"
612   WriteRegStr HKCR "CLSID\{DC515C27-6CAC-11D1-BAE7-00C04FD140D2}\InprocServer32" "" "$INSTDIR\Client\Program\afs_shl_ext.dll"
613   WriteRegStr HKCR "CLSID\{DC515C27-6CAC-11D1-BAE7-00C04FD140D2}\InprocServer32" "ThreadingModel" "Apartment"
614   WriteRegStr HKCR "FOLDER\shellex\ContextMenuHandlers\AFS Client Shell Extension" "" "{DC515C27-6CAC-11D1-BAE7-00C04FD140D2}"
615   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved" "{DC515C27-6CAC-11D1-BAE7-00C04FD140D2}" "AFS Client Shell Extension"
616   
617   ; AFS Reg entries
618   DeleteRegKey HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion"
619   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion" "VersionString" ${MUI_VERSION}
620   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion" "Title" "AFS Client"
621   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion" "Description" "AFS Client"
622   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion" "PathName" "$INSTDIR\Client\Program"
623   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion" "Software Type" "File System"
624   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion" "MajorVersion" ${MUI_MAJORVERSION}
625   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion" "MinorVersion" ${MUI_MINORVERSION}
626   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion" "PatchLevel" ${MUI_PATCHLEVEL}
627   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Client\${MUI_VERSION}" "VersionString" ${MUI_VERSION}
628   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Client\${MUI_VERSION}" "Title" "AFS Client"
629   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Client\${MUI_VERSION}" "Description" "AFS Client"
630   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Client\${MUI_VERSION}" "Software Type" "File System"
631   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Client\${MUI_VERSION}" "PathName" "$INSTDIR\Client\Program"
632   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Client\${MUI_VERSION}" "MajorVersion" ${MUI_MAJORVERSION}
633   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Client\${MUI_VERSION}" "MinorVersion" ${MUI_MINORVERSION}
634   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Client\${MUI_VERSION}" "PatchLevel" ${MUI_PATCHLEVEL}
635
636    ; Set network settings
637   WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\NetBT\Parameters" "SmbDeviceEnabled" 0
638   
639   ;Write start menu entries
640   CreateDirectory "$SMPROGRAMS\OpenAFS\Client"
641   CreateShortCut "$SMPROGRAMS\OpenAFS\Uninstall OpenAFS.lnk" "$INSTDIR\Uninstall.exe"
642   CreateShortCut "$SMPROGRAMS\OpenAFS\Client\Authentication.lnk" "$INSTDIR\Client\Program\afscreds.exe" 
643   CreateShortCut "$SMSTARTUP\AFS Credentials.lnk" "$INSTDIR\Client\Program\afscreds.exe" 
644
645   Push "$INSTDIR\Client\Program"
646   Call AddToPath
647   Push "$INSTDIR\Common"
648   Call AddToPath
649   
650 !ifdef INSTALL_KFW
651   ; Add kfw to path too
652   Push "$INSTDIR\kfw\bin"
653   Call AddToPath
654 !endif
655    
656   ; Create the AFS service
657   SetOutPath "$INSTDIR\Common"
658   File "${AFS_WININSTALL_DIR}\Service.exe"
659   nsExec::Exec "net stop TransarcAFSDaemon"
660   ;IMPORTANT!  If we are not refreshing the config files, do NOT remove the service
661   ;Don't re-install because it must be present or we wouldn't have passed the Reg check
662   ReadINIStr $R2 $1 "Field 2" "State"
663
664   StrCmp $R2 "" skipremove
665   nsExec::Exec '$INSTDIR\Common\Service.exe u TransarcAFSDaemon'
666   nsExec::Exec '$INSTDIR\Common\Service.exe TransarcAFSDaemon "$INSTDIR\Client\Program\afsd_service.exe" "OpenAFS Client Service"'
667 skipremove:
668   Delete "$INSTDIR\Common\service.exe"
669
670   ; Daemon entries
671   WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon" "(Default)" ""
672   WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider" "AuthentProviderPath" "$INSTDIR\Client\Program\afslogon.dll"
673   WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider" "Class" 2
674   WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider" "LogonOptions" 2
675   WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider" "LogonScript" "$INSTDIR\Client\Program\afscreds.exe -:%s -x"
676   WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider" "Name" "OpenAFSDaemon"
677   WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider" "ProviderPath" "$INSTDIR\Client\Program\afslogon.dll"
678
679   ;Write cell name
680   ReadINIStr $R0 $1 "Field 2" "State"
681   WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters" "Cell" $R0
682   WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters" "ShowTrayIcon" 1
683   WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters" "SecurityLevel" 1  
684   SetRebootFlag true
685   
686   WriteUninstaller "$INSTDIR\Uninstall.exe"
687   
688 SectionEnd
689
690 ;------------------------
691 ; OpenAFS SERVER  
692 Section "AFS Server" SecServer
693
694   SetShellVarContext all
695
696   CreateDirectory "$INSTDIR\Server\usr\afs\etc"
697   CreateDirectory "$INSTDIR\Server\usr\afs\local"
698   CreateDirectory "$INSTDIR\Server\usr\afs\logs"
699   
700   SetOutPath "$INSTDIR\Server\usr\afs\bin"  
701   File "${AFS_SERVER_BUILDDIR}\afskill.exe"
702   File "${AFS_SERVER_BUILDDIR}\afssvrcfg.exe"
703   File "${AFS_SERVER_BUILDDIR}\bosctlsvc.exe"
704   File "${AFS_SERVER_BUILDDIR}\bosserver.exe"
705   File "${AFS_SERVER_BUILDDIR}\buserver.exe"
706   File "${AFS_ETC_BUILDDIR}\butc.exe"
707   File "${AFS_SERVER_BUILDDIR}\fileserver.exe"
708   File "${AFS_ETC_BUILDDIR}\fms.exe"
709   File "${AFS_SERVER_BUILDDIR}\kaserver.exe"
710   File "${AFS_SERVER_BUILDDIR}\ptserver.exe"
711   File "${AFS_SERVER_BUILDDIR}\salvager.exe"
712   File "${AFS_SERVER_BUILDDIR}\upclient.exe"
713   File "${AFS_SERVER_BUILDDIR}\upserver.exe"
714   File "${AFS_SERVER_BUILDDIR}\vlserver.exe"
715   File "${AFS_SERVER_BUILDDIR}\volinfo.exe"
716   File "${AFS_SERVER_BUILDDIR}\volserver.exe"
717
718 !ifdef DEBUG
719   File "${AFS_SERVER_BUILDDIR}\afskill.pdb"
720   File "${AFS_SERVER_BUILDDIR}\afssvrcfg.pdb"
721   File "${AFS_SERVER_BUILDDIR}\bosctlsvc.pdb"
722   File "${AFS_SERVER_BUILDDIR}\bosserver.pdb"
723   File "${AFS_SERVER_BUILDDIR}\buserver.pdb"
724   File "${AFS_ETC_BUILDDIR}\butc.pdb"
725   File "${AFS_SERVER_BUILDDIR}\fileserver.pdb"
726   File "${AFS_ETC_BUILDDIR}\fms.pdb"
727   File "${AFS_SERVER_BUILDDIR}\kaserver.pdb"
728   File "${AFS_SERVER_BUILDDIR}\ptserver.pdb"
729   File "${AFS_SERVER_BUILDDIR}\salvager.pdb"
730   File "${AFS_SERVER_BUILDDIR}\upclient.pdb"
731   File "${AFS_SERVER_BUILDDIR}\upserver.pdb"
732   File "${AFS_SERVER_BUILDDIR}\vlserver.pdb"
733   File "${AFS_SERVER_BUILDDIR}\volinfo.pdb"
734   File "${AFS_SERVER_BUILDDIR}\volserver.pdb"
735 !endif
736  
737  ;AFS Server common files
738  SetOutPath "$INSTDIR\Common"
739  File "${AFS_SERVER_BUILDDIR}\afsvosadmin.dll"
740  File "${AFS_SERVER_BUILDDIR}\afsbosadmin.dll"
741  File "${AFS_SERVER_BUILDDIR}\afscfgadmin.dll"
742  File "${AFS_SERVER_BUILDDIR}\afskasadmin.dll"
743  File "${AFS_SERVER_BUILDDIR}\afsptsadmin.dll"
744
745 !ifdef DEBUG
746  File "${AFS_SERVER_BUILDDIR}\afsvosadmin.pdb"
747  File "${AFS_SERVER_BUILDDIR}\afsbosadmin.pdb"
748  File "${AFS_SERVER_BUILDDIR}\afscfgadmin.pdb"
749  File "${AFS_SERVER_BUILDDIR}\afskasadmin.pdb"
750  File "${AFS_SERVER_BUILDDIR}\afsptsadmin.pdb"
751 !endif
752  SetOutPath "$INSTDIR\Common"
753    Call AFSLangFiles
754    
755    SetOutPath "$WINDIR"
756    File "${AFS_SERVER_BUILDDIR}\afsserver.cpl"
757
758 !ifdef DEBUG
759    File "${AFS_SERVER_BUILDDIR}\afsserver.pdb"
760 !endif
761    
762   ;Store install folder
763   WriteRegStr HKCU "${AFS_REGKEY_ROOT}\AFS Server" "" $INSTDIR
764   
765   DeleteRegKey HKLM "${AFS_REGKEY_ROOT}\AFS Server\CurrentVersion"
766   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Server\CurrentVersion" "VersionString" ${MUI_VERSION}
767   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Server\CurrentVersion" "Title" "AFS Server"
768   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Server\CurrentVersion" "Description" "AFS Server for Windows"
769   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Server\CurrentVersion" "PathName" "$INSTDIR\Server"
770   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Server\CurrentVersion" "Software Type" "File System"
771   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Server\CurrentVersion" "MajorVersion" ${MUI_MAJORVERSION}
772   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Server\CurrentVersion" "MinorVersion" ${MUI_MINORVERSION}
773   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Server\CurrentVersion" "PatchLevel" ${MUI_PATCHLEVEL}
774   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Server\${MUI_VERSION}" "VersionString" ${MUI_VERSION}
775   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Server\${MUI_VERSION}" "Title" "AFS Server"
776   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Server\${MUI_VERSION}" "Description" "AFS Server for Windows"
777   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Server\${MUI_VERSION}" "Software Type" "File System"
778   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Server\${MUI_VERSION}" "PathName" "$INSTDIR\Server"
779   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Server\${MUI_VERSION}" "MajorVersion" ${MUI_MAJORVERSION}
780   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Server\${MUI_VERSION}" "MinorVersion" ${MUI_MINORVERSION}
781   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Server\${MUI_VERSION}" "PatchLevel" ${MUI_PATCHLEVEL}
782
783   ; Install the service
784   SetOutPath "$INSTDIR\Common"
785   File "${AFS_WININSTALL_DIR}\Service.exe"
786 !ifdef DEBUG
787   File "${AFS_WININSTALL_DIR}\Service.pdb"
788 !endif
789   nsExec::Exec "net stop TransarcAFSServer"
790   nsExec::Exec '$INSTDIR\Common\service.exe u TransarcAFSServer'
791   nsExec::Exec '$INSTDIR\Common\service.exe TransarcAFSServer "$INSTDIR\Server\usr\afs\bin\bosctlsvc.exe" "OpenAFS AFS Server"'
792   Delete "$INSTDIR\Common\service.exe"
793   
794   CreateDirectory "$SMPROGRAMS\OpenAFS\Server"
795   CreateShortCut "$SMPROGRAMS\OpenAFS\Server\Configuration Wizard.lnk" "$INSTDIR\Server\usr\afs\bin\afssvrcfg.exe" "/wizard"
796   
797   WriteUninstaller "$INSTDIR\Uninstall.exe"
798
799 SectionEnd
800
801
802 ;----------------------------
803 ; OpenAFS Control Center
804 Section "AFS Control Center" SecControl
805
806   SetShellVarContext all
807
808    SetOutPath "$INSTDIR\Control Center"
809   File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager.exe"
810   File "${AFS_SERVER_BUILDDIR}\TaAfsAdmSvr.exe"
811   File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager.exe"
812    
813 !ifdef DEBUG
814   File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager.pdb"
815   File "${AFS_SERVER_BUILDDIR}\TaAfsAdmSvr.pdb"
816   File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager.pdb"
817 !endif
818
819  ;AFS Server common files
820  Call AFSCommon.Install
821  Call AFSLangFiles
822  SetOutPath "$INSTDIR\Common"
823
824   SetOutPath "$INSTDIR\Common"
825 !IFDEF DEBUG
826 !IFDEF CL_1310
827   File "${AFS_WININSTALL_DIR}\msvcr71d.dll"
828   File "${AFS_WININSTALL_DIR}\msvcr71d.pdb"
829 !ELSE
830 !IFDEF CL_1300
831   File "${AFS_WININSTALL_DIR}\msvcrtd.dll"
832   File "${AFS_WININSTALL_DIR}\msvcrtd.pdb"
833 !ELSE
834   File "${AFS_WININSTALL_DIR}\msvcrtd.dll"
835   File "${AFS_WININSTALL_DIR}\msvcrtd.pdb"
836 !ENDIF
837 !ENDIF
838 !ELSE
839 !IFDEF CL_1310
840   File "${AFS_WININSTALL_DIR}\msvcr71.dll"
841 !ELSE
842 !IFDEF CL_1300
843   File "${AFS_WININSTALL_DIR}\msvcrt.dll"
844 !ELSE
845   File "${AFS_WININSTALL_DIR}\msvcrt.dll"
846 !ENDIF
847 !ENDIF
848 !ENDIF
849    
850    ;Store install folder
851   WriteRegStr HKCU "${AFS_REGKEY_ROOT}\AFS Control Center\CurrentVersion" "PathName" $INSTDIR
852   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Control Center\CurrentVersion" "VersionString" ${MUI_VERSION}
853   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Control Center\CurrentVersion" "MajorVersion" ${MUI_MAJORVERSION}
854   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Control Center\CurrentVersion" "MinorVersion" ${MUI_MINORVERSION}
855   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Control Center\CurrentVersion" "PatchLevel" ${MUI_PATCHLEVEL}
856   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Control Center\${MUI_VERSION}" "VersionString" ${MUI_VERSION}
857   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Control Center\${MUI_VERSION}" "MajorVersion" ${MUI_MAJORVERSION}
858   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Control Center\${MUI_VERSION}" "MinorVersion" ${MUI_MINORVERSION}
859   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Control Center\${MUI_VERSION}" "PatchLevel" ${MUI_PATCHLEVEL}
860   
861
862   ;Write start menu entries
863   CreateDirectory "$SMPROGRAMS\OpenAFS\Control Center"
864   CreateShortCut "$SMPROGRAMS\OpenAFS\Control Center\Account Manager.lnk" "$INSTDIR\Control Center\TaAfsAccountManager.exe"
865   CreateShortCut "$SMPROGRAMS\OpenAFS\Control Center\Server Manager.lnk" "$INSTDIR\Control Center\TaAfsServerManager.exe"
866   
867   WriteUninstaller "$INSTDIR\Uninstall.exe"
868
869 SectionEnd   
870
871
872 ;----------------------------
873 ; OpenAFS Supplemental Documentation
874 Section "Supplemental Documentation" SecDocs
875   SetShellVarContext all
876
877    StrCmp $LANGUAGE ${LANG_ENGLISH} DoEnglish
878    StrCmp $LANGUAGE ${LANG_GERMAN} DoGerman
879    StrCmp $LANGUAGE ${LANG_SPANISH} DoSpanish
880    StrCmp $LANGUAGE ${LANG_JAPANESE} DoJapanese
881    ;StrCmp $LANGUAGE ${LANG_KOREAN} DoKorean
882    StrCmp $LANGUAGE ${LANG_PORTUGUESEBR} DoPortugueseBR
883    StrCmp $LANGUAGE ${LANG_SIMPCHINESE} DoSimpChinese
884    StrCmp $LANGUAGE ${LANG_TRADCHINESE} DoTradChinese
885    
886    
887 DoEnglish:
888    SetOutPath "$INSTDIR\Documentation\html"
889    File "..\..\doc\install\Documentation\en_US\html\*"
890    SetOutPath "$INSTDIR\Documentation\html\CmdRef"
891    File "..\..\doc\install\Documentation\en_US\html\CmdRef\*"
892    SetOutPath "$INSTDIR\Documentation\html\InstallGd"
893    File "..\..\doc\install\Documentation\en_US\html\InstallGd\*"
894    SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes"
895    File "..\..\doc\install\Documentation\en_US\html\ReleaseNotes\*"
896    SetOutPath "$INSTDIR\Documentation\html\SysAdminGd"
897    File "..\..\doc\install\Documentation\en_US\html\SysAdminGd\*"
898    goto DoneLanguage
899    
900 DoGerman:
901    SetOutPath "$INSTDIR\Documentation"
902    File "..\..\doc\install\Documentation\de_DE\README.TXT"
903    SetOutPath "$INSTDIR\Documentation\html"
904    File "..\..\doc\install\Documentation\de_DE\html\*"
905    SetOutPath "$INSTDIR\Documentation\html\CmdRef"
906    ;File "..\..\doc\install\Documentation\de_DE\html\CmdRef\*"
907    SetOutPath "$INSTDIR\Documentation\html\InstallGd"
908    File "..\..\doc\install\Documentation\de_DE\html\InstallGd\*"
909    ;SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes"
910    ;File "..\..\doc\install\Documentation\de_DE\html\ReleaseNotes\*"
911    ;SetOutPath "$INSTDIR\Documentation\html\SysAdminGd"
912    ;File "..\..\doc\install\Documentation\de_DE\html\SysAdminGd\*"
913    goto DoneLanguage
914    
915 DoSpanish:
916    SetOutPath "$INSTDIR\Documentation"
917    File "..\..\doc\install\Documentation\es_ES\README.TXT"
918    SetOutPath "$INSTDIR\Documentation\html"
919    File "..\..\doc\install\Documentation\es_ES\html\*"
920    SetOutPath "$INSTDIR\Documentation\html\CmdRef"
921    ;File "..\..\doc\install\Documentation\es_ES\html\CmdRef\*"
922    SetOutPath "$INSTDIR\Documentation\html\InstallGd"
923    ;File "..\..\doc\install\Documentation\es_ES\html\InstallGd\*"
924    SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes"
925    ;File "..\..\doc\install\Documentation\es_ES\html\ReleaseNotes\*"
926    SetOutPath "$INSTDIR\Documentation\html\SysAdminGd"
927    ;File "..\..\doc\install\Documentation\es_ES\html\SysAdminGd\*"
928    goto DoneLanguage
929
930 DoJapanese:
931    SetOutPath "$INSTDIR\Documentation"
932    File "..\..\doc\install\Documentation\ja_JP\README.TXT"
933    SetOutPath "$INSTDIR\Documentation\html"
934    File "..\..\doc\install\Documentation\ja_JP\html\*"
935    SetOutPath "$INSTDIR\Documentation\html\CmdRef"
936    File "..\..\doc\install\Documentation\ja_JP\html\CmdRef\*"
937    SetOutPath "$INSTDIR\Documentation\html\InstallGd"
938    File "..\..\doc\install\Documentation\ja_JP\html\InstallGd\*"
939    SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes"
940    ;File "..\..\doc\install\Documentation\ja_JP\html\ReleaseNotes\*"
941    SetOutPath "$INSTDIR\Documentation\html\SysAdminGd"
942    ;File "..\..\doc\install\Documentation\ja_JP\html\SysAdminGd\*"
943    goto DoneLanguage
944    
945 DoKorean:
946    SetOutPath "$INSTDIR\Documentation"
947    File "..\..\doc\install\Documentation\ko_KR\README.TXT"
948    SetOutPath "$INSTDIR\Documentation\html"
949    File "..\..\doc\install\Documentation\ko_KR\html\*"
950    ;SetOutPath "$INSTDIR\Documentation\html\CmdRef"
951    ;File "..\..\doc\install\Documentation\ko_KR\html\CmdRef\*"
952    SetOutPath "$INSTDIR\Documentation\html\InstallGd"
953    File "..\..\doc\install\Documentation\ko_KR\html\InstallGd\*"
954    SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes"
955    File "..\..\doc\install\Documentation\ko_KR\html\ReleaseNotes\*"
956    SetOutPath "$INSTDIR\Documentation\html\SysAdminGd"
957    File "..\..\doc\install\Documentation\ko_KR\html\SysAdminGd\*"
958    goto DoneLanguage
959    
960 DoPortugueseBR:
961    SetOutPath "$INSTDIR\Documentation"
962    File "..\..\doc\install\Documentation\pt_BR\README.TXT"
963    SetOutPath "$INSTDIR\Documentation\html"
964    File "..\..\doc\install\Documentation\pt_BR\html\*"
965    ;SetOutPath "$INSTDIR\Documentation\html\CmdRef"
966    ;File "..\..\doc\install\Documentation\pt_BR\html\CmdRef\*"
967    SetOutPath "$INSTDIR\Documentation\html\InstallGd"
968    File "..\..\doc\install\Documentation\pt_BR\html\InstallGd\*"
969    SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes"
970    File "..\..\doc\install\Documentation\pt_BR\html\ReleaseNotes\*"
971    ;SetOutPath "$INSTDIR\Documentation\html\SysAdminGd"
972    ;File "..\..\doc\install\Documentation\pt_BR\html\SysAdminGd\*"
973    goto DoneLanguage
974
975 DoSimpChinese:
976    SetOutPath "$INSTDIR\Documentation"
977    File "..\..\doc\install\Documentation\zh_CN\README.TXT"
978    SetOutPath "$INSTDIR\Documentation\html"
979    File "..\..\doc\install\Documentation\zh_CN\html\*"
980    ;SetOutPath "$INSTDIR\Documentation\html\CmdRef"
981    ;File "..\..\doc\install\Documentation\zh_CN\html\CmdRef\*"
982    SetOutPath "$INSTDIR\Documentation\html\InstallGd"
983    File "..\..\doc\install\Documentation\zh_CN\html\InstallGd\*"
984    SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes"
985    File "..\..\doc\install\Documentation\zh_CN\html\ReleaseNotes\*"
986    ;SetOutPath "$INSTDIR\Documentation\html\SysAdminGd"
987    ;File "..\..\doc\install\Documentation\zh_CN\html\SysAdminGd\*"
988    goto DoneLanguage
989    
990 DoTradChinese:
991    SetOutPath "$INSTDIR\Documentation"
992    File "..\..\doc\install\Documentation\zh_TW\README.TXT"
993    SetOutPath "$INSTDIR\Documentation\html"
994    File "..\..\doc\install\Documentation\zh_TW\html\*"
995    ;SetOutPath "$INSTDIR\Documentation\html\CmdRef"
996    ;File "..\..\doc\install\Documentation\zh_TW\html\CmdRef\*"
997    SetOutPath "$INSTDIR\Documentation\html\InstallGd"
998    File "..\..\doc\install\Documentation\zh_TW\html\InstallGd\*"
999    SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes"
1000    File "..\..\doc\install\Documentation\zh_TW\html\ReleaseNotes\*"
1001    ;SetOutPath "$INSTDIR\Documentation\html\SysAdminGd"
1002    ;File "..\..\doc\install\Documentation\zh_TW\html\SysAdminGd\*"
1003    goto DoneLanguage
1004    
1005    
1006 DoneLanguage:
1007    ;Store install folder
1008   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Supplemental Documentation" "" $INSTDIR
1009   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Supplemental Documentation\CurrentVersion" "VersionString" ${MUI_VERSION}
1010   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Supplemental Documentation\CurrentVersion" "MajorVersion" ${MUI_MAJORVERSION}
1011   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Supplemental Documentation\CurrentVersion" "MinorVersion" ${MUI_MINORVERSION}
1012   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Supplemental Documentation\CurrentVersion" "PatchLevel" ${MUI_PATCHLEVEL}
1013   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Supplemental Documentation\${MUI_VERSION}" "VersionString" ${MUI_VERSION}
1014   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Supplemental Documentation\${MUI_VERSION}" "MajorVersion" ${MUI_MAJORVERSION}
1015   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Supplemental Documentation\${MUI_VERSION}" "MinorVersion" ${MUI_MINORVERSION}
1016   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Supplemental Documentation\${MUI_VERSION}" "PatchLevel" ${MUI_PATCHLEVEL}
1017
1018   ; Write start menu shortcut
1019   SetOutPath "$SMPROGRAMS\OpenAFS"
1020   CreateShortCut "$SMPROGRAMS\OpenAFS\Documentation.lnk" "$INSTDIR\Documentation\html\index.htm"
1021   
1022   
1023   WriteUninstaller "$INSTDIR\Uninstall.exe"
1024   CreateShortCut "$SMPROGRAMS\OpenAFS\Uninstall OpenAFS.lnk" "$INSTDIR\Uninstall.exe"
1025 SectionEnd  
1026   
1027 ;Display the Finish header
1028 ;Insert this macro after the sections if you are not using a finish page
1029 ;!insertmacro MUI_SECTIONS_FINISHHEADER
1030
1031 ;--------------------------------
1032 ;Installer Functions
1033
1034 Function .onInit
1035
1036   !insertmacro MUI_LANGDLL_DISPLAY
1037   
1038   ; Set the default install options
1039         Push $0
1040
1041    Call IsUserAdmin
1042    Pop $R0
1043    StrCmp $R0 "true" contInstall
1044
1045    MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST "You must be an administrator of this machine to install this software."
1046    Abort
1047    
1048 contInstall:
1049    Call ShouldClientInstall
1050    Pop $R2
1051    
1052    StrCmp $R2 "0" NoClient
1053    StrCmp $R2 "2" UpgradeClient
1054    
1055         StrCpy $1 ${secClient} ; Gotta remember which section we are at now...
1056         SectionGetFlags ${secClient} $0
1057         IntOp $0 $0 | ${SF_SELECTED}
1058         SectionSetFlags ${secClient} $0
1059     ;# !insertmacro SelectSection ${secClient}
1060    goto skipClient
1061 NoClient:
1062         StrCpy $1 ${secClient} ; Gotta remember which section we are at now...
1063         SectionGetFlags ${secClient} $0
1064         IntOp $0 $0 | ${SECTION_OFF}
1065         SectionSetFlags ${secClient} $0
1066    goto skipClient
1067 UpgradeClient:
1068         SectionGetFlags ${secClient} $0
1069         IntOp $0 $0 | ${SF_SELECTED}
1070         SectionSetFlags ${secClient} $0
1071    SectionSetText ${secClient} $(UPGRADE_CLIENT)
1072    goto skipClient
1073
1074    
1075 skipClient:   
1076    
1077    
1078    Call IsServerInstalled
1079    Pop $R2
1080    StrCmp $R2 "0" NoServer
1081    
1082         SectionGetFlags ${secServer} $0
1083         IntOp $0 $0 & ${SF_SELECTED}
1084         SectionSetFlags ${secServer} $0
1085         ;# !insertmacro UnselectSection ${secServer}
1086    goto skipServer
1087
1088 NoServer:
1089         SectionGetFlags ${secServer} $0
1090         IntOp $0 $0 & ${SECTION_OFF}
1091         SectionSetFlags ${secServer} $0
1092         ;# !insertmacro UnselectSection ${secServer}
1093    
1094 skipServer:   
1095         SectionGetFlags ${secControl} $0
1096         IntOp $0 $0 & ${SECTION_OFF}
1097         SectionSetFlags ${secControl} $0
1098         ;# !insertmacro UnselectSection ${secControl}
1099
1100         SectionGetFlags ${secDocs} $0
1101         IntOp $0 $0 | ${SF_SELECTED}
1102         SectionSetFlags ${secDocs} $0
1103         ;# !insertmacro UnselectSection ${secDocs}
1104
1105         Pop $0
1106   
1107   
1108   
1109   GetTempFilename $0
1110   File /oname=$0 CellServPage.ini
1111   GetTempFilename $1
1112   File /oname=$1 AFSCell.ini
1113   ;File /oname=$1 ConfigURL.ini
1114   
1115 FunctionEnd
1116
1117
1118
1119
1120
1121 ;--------------------------------
1122 ; These are our cleanup functions
1123 Function .onInstFailed
1124 Delete $0
1125
1126 FunctionEnd
1127
1128 Function .onInstSuccess
1129 Delete $0
1130
1131 FunctionEnd
1132
1133
1134 ;--------------------------------
1135 ;Descriptions
1136
1137 !insertmacro MUI_FUNCTIONS_DESCRIPTION_BEGIN
1138   !insertmacro MUI_DESCRIPTION_TEXT ${SecServer} $(DESC_SecServer)
1139   !insertmacro MUI_DESCRIPTION_TEXT ${SecClient} $(DESC_SecClient)
1140   !insertmacro MUI_DESCRIPTION_TEXT ${SecControl} $(DESC_SecControl)
1141   !insertmacro MUI_DESCRIPTION_TEXT ${SecDocs} $(DESC_SecDocs)
1142 !insertmacro MUI_FUNCTIONS_DESCRIPTION_END
1143  
1144 ;--------------------------------
1145 ;Uninstaller Section
1146
1147 Section "Uninstall"
1148   
1149   SetShellVarContext all
1150   ; Stop the running processes
1151   GetTempFileName $R0
1152   File /oname=$R0 "${AFS_WININSTALL_DIR}\Killer.exe"
1153   nsExec::Exec '$R0 afscreds.exe'
1154   nsExec::Exec '$R0 krbcc32s.exe'
1155
1156   ; Delete the AFS service
1157   GetTempFileName $R0
1158   File /oname=$R0 "${AFS_WININSTALL_DIR}\Service.exe"
1159   nsExec::Exec "net stop TransarcAFSDaemon"
1160   nsExec::Exec "net stop TransarcAFSServer"
1161   nsExec::Exec '$R0 u TransarcAFSDaemon'
1162   nsExec::Exec '$R0 u TransarcAFSServer'
1163   Delete $R0
1164   
1165   Push "$INSTDIR\Client\Program"
1166   Call un.RemoveFromPath
1167   Push "$INSTDIR\Common"
1168   Call un.RemoveFromPath
1169 !ifdef INSTALL_KFW
1170   Push "$INSTDIR\kfw\bin"
1171   Call un.RemoveFromPath
1172 !endif
1173   
1174   ; Delete documentation
1175   Delete "$INSTDIR\Documentation\README.TXT"
1176   Delete "$INSTDIR\Documentation\html\*"
1177   Delete "$INSTDIR\Documentation\html\CmdRef\*"
1178   Delete "$INSTDIR\Documentation\html\InstallGd\*"
1179   Delete "$INSTDIR\Documentation\html\ReleaseNotes\*"
1180   Delete "$INSTDIR\Documentation\html\SysAdminGd\*"
1181
1182    Delete /REBOOTOK "$INSTDIR\Common\afs_config.exe"
1183    Delete /REBOOTOK "$INSTDIR\Common\afs_shl_ext.dll"
1184    Delete /REBOOTOK "$INSTDIR\Common\afsadminutil.dll"
1185    Delete /REBOOTOK "$INSTDIR\Common\lib\afsauthent.dll"
1186    Delete /REBOOTOK "$INSTDIR\Common\lib\afspthread.dll"
1187    Delete /REBOOTOK "$INSTDIR\Common\lib\afsrpc.dll"
1188    Delete /REBOOTOK "$INSTDIR\Common\afsclientadmin.dll"
1189    Delete /REBOOTOK "$INSTDIR\Common\afsprocmgmt.dll"
1190    Delete /REBOOTOK "$INSTDIR\Common\afsvosadmin.dll"
1191    Delete /REBOOTOK "$INSTDIR\Common\TaAfsAppLib.dll"
1192    Delete /REBOOTOK "$INSTDIR\Common\afsvosadmin.dll"
1193    Delete /REBOOTOK "$INSTDIR\Common\afsbosadmin.dll"
1194    Delete /REBOOTOK "$INSTDIR\Common\afscfgadmin.dll"
1195    Delete /REBOOTOK "$INSTDIR\Common\afskasadmin.dll"
1196    Delete /REBOOTOK "$INSTDIR\Common\afsptsadmin.dll"
1197
1198 !IFDEF DEBUG
1199    Delete /REBOOTOK "$INSTDIR\Common\afs_config.pdb"
1200    Delete /REBOOTOK "$INSTDIR\Common\afs_shl_ext.pdb"
1201    Delete /REBOOTOK "$INSTDIR\Common\afsadminutil.pdb"
1202    Delete /REBOOTOK "$INSTDIR\Common\lib\afsauthent.pdb"
1203    Delete /REBOOTOK "$INSTDIR\Common\lib\afspthread.pdb"
1204    Delete /REBOOTOK "$INSTDIR\Common\lib\afsrpc.pdb"
1205    Delete /REBOOTOK "$INSTDIR\Common\afsclientadmin.pdb"
1206    Delete /REBOOTOK "$INSTDIR\Common\afsprocmgmt.pdb"
1207    Delete /REBOOTOK "$INSTDIR\Common\afsvosadmin.pdb"
1208    Delete /REBOOTOK "$INSTDIR\Common\TaAfsAppLib.pdb"
1209    Delete /REBOOTOK "$INSTDIR\Common\afsvosadmin.pdb"
1210    Delete /REBOOTOK "$INSTDIR\Common\afsbosadmin.pdb"
1211    Delete /REBOOTOK "$INSTDIR\Common\afscfgadmin.pdb"
1212    Delete /REBOOTOK "$INSTDIR\Common\afskasadmin.pdb"
1213    Delete /REBOOTOK "$INSTDIR\Common\afsptsadmin.pdb"
1214
1215 !IFDEF CL_1310
1216    Delete /REBOOTOK "$INSTDIR\Common\msvcr71d.dll"
1217    Delete /REBOOTOK "$INSTDIR\Common\msvcr71d.pdb"
1218 !ELSE
1219    Delete /REBOOTOK "$INSTDIR\Common\msvcrtd.dll"
1220    Delete /REBOOTOK "$INSTDIR\Common\msvcrtd.pdb"
1221 !ENDIF
1222 !ELSE
1223 !IFDEF CL_1310
1224    Delete /REBOOTOK "$INSTDIR\Common\msvcr71.dll"
1225 !ELSE
1226    Delete /REBOOTOK "$INSTDIR\Common\msvcrt.dll"
1227 !ENDIF
1228 !ENDIF
1229   
1230    Call un.IsSilent
1231    Pop $R1
1232    StrCmp $R1 "/S" SkipAsk
1233 ;  IfFileExists "$WINDIR\afsdcell.ini" CellExists SkipDelAsk
1234 ;  CellExists:
1235   MessageBox MB_YESNO "Would you like to keep your configuration files?" IDYES SkipDel
1236   SkipAsk:
1237   Delete "$WINDIR\afsdcell.ini"
1238
1239   Delete "$WINDIR\afsdsbmt.ini"
1240   Delete "$WINDIR\krb5.ini"
1241   Delete "$WINDIR\afsdns.ini"
1242   Delete "$WINDIR\afs_freelance.ini"
1243   
1244   SkipDel:
1245   Delete "$WINDIR\afsd_init.log"
1246   Delete "$INSTDIR\Uninstall.exe"
1247
1248   ; Remove server
1249   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\afskill.exe"
1250   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\afssvrcfg.exe"
1251   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\bosctlsvc.exe"
1252   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\bosserver.exe"
1253   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\buserver.exe"
1254   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\butc.exe"
1255   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\fileserver.exe"
1256   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\fms.exe"
1257   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\kaserver.exe"
1258   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\ptserver.exe"
1259   Delete "$INSTDIR\Server\usr\afs\bin\salvager.exe"
1260   Delete "$INSTDIR\Server\usr\afs\bin\ServerUninst.dll"
1261   Delete "$INSTDIR\Server\usr\afs\bin\upclient.exe"
1262   Delete "$INSTDIR\Server\usr\afs\bin\upserver.exe"
1263   Delete "$INSTDIR\Server\usr\afs\bin\vlserver.exe"
1264   Delete "$INSTDIR\Server\usr\afs\bin\volinfo.exe"
1265   Delete "$INSTDIR\Server\usr\afs\bin\volserver.exe"
1266
1267 !ifdef DEBUG
1268   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\afskill.pdb"
1269   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\afssvrcfg.pdb"
1270   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\bosctlsvc.pdb"
1271   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\bosserver.pdb"
1272   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\buserver.pdb"
1273   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\butc.pdb"
1274   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\fileserver.pdb"
1275   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\fms.pdb"
1276   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\kaserver.pdb"
1277   Delete /REBOOTOK "$INSTDIR\Server\usr\afs\bin\ptserver.pdb"
1278   Delete "$INSTDIR\Server\usr\afs\bin\salvager.pdb"
1279   Delete "$INSTDIR\Server\usr\afs\bin\ServerUninst.pdb"
1280   Delete "$INSTDIR\Server\usr\afs\bin\upclient.pdb"
1281   Delete "$INSTDIR\Server\usr\afs\bin\upserver.pdb"
1282   Delete "$INSTDIR\Server\usr\afs\bin\vlserver.pdb"
1283   Delete "$INSTDIR\Server\usr\afs\bin\volinfo.pdb"
1284   Delete "$INSTDIR\Server\usr\afs\bin\volserver.pdb"
1285 !endif
1286
1287   RMDir /r "$INSTDIR\Server\usr\afs\bin"
1288   RmDir /r "$INSTDIR\Server\usr\afs\etc"
1289   RmDir /r "$INSTDIR\Server\usr\afs\local"
1290   RMDIR /r "$INSTDIR\Server\usr\afs\logs"
1291   
1292   Delete /REBOOTOK "$WINDIR\afsserver.cpl"
1293   Delete /REBOOTOK "$WINDIR\afs_cpa.cpl"
1294
1295 !ifdef DEBUG
1296   Delete /REBOOTOK "$WINDIR\afsserver.pdb"
1297   Delete /REBOOTOK "$WINDIR\afs_cpa.pdb"
1298 !endif
1299   
1300   RMDir /r "$INSTDIR\Documentation\html\CmdRef"
1301   RMDir /r "$INSTDIR\Documentation\html\InstallGd"
1302   RMDir /r "$INSTDIR\Documentation\html\ReleaseNotes"
1303   RMDir /r "$INSTDIR\Documentation\html\SysAdminGd"
1304   RMDIr /r "$INSTDIR\Documentation\html"
1305   
1306   RMDir "$INSTDIR\Documentation"
1307   ; Delete DOC short cut
1308   Delete /REBOOTOK "$INSTDIR\Client\Program\afscreds.exe"
1309
1310 !ifdef DEBUG
1311   Delete /REBOOTOK "$INSTDIR\Client\Program\afscreds.pdb"
1312 !endif
1313
1314   Delete /REBOOTOK "$INSTDIR\Client\Program\*"
1315   Delete /REBOOTOK "$INSTDIR\Client\Program\Include\*"
1316   Delete /REBOOTOK "$INSTDIR\Client\Program\Include\afs\*"
1317   Delete /REBOOTOK "$INSTDIR\Client\Program\Include\rx\*"
1318   Delete /REBOOTOK "$INSTDIR\Client\Program\Sample\*"
1319   RMDir  "$INSTDIR\Client\Program\Sample"
1320   RMDir  "$INSTDIR\Client\Program\Include\afs"
1321   RMDir  "$INSTDIR\Client\Program\Include\rx"
1322   RMDir  "$INSTDIR\Client\Program\Include"
1323   RMDir  "$INSTDIR\Client\Program"
1324   RMDir  "$INSTDIR\Client"
1325   
1326 !IFDEF DEBUG
1327 !IFDEF CL_1310
1328   Delete /REBOOTOK "$INSTDIR\Common\msvcr71d.dll"
1329   Delete /REBOOTOK "$INSTDIR\Common\msvcr71d.pdb"
1330 !ELSE
1331   Delete /REBOOTOK "$INSTDIR\Common\msvcrtd.dll"
1332   Delete /REBOOTOK "$INSTDIR\Common\msvcrtd.pdb"
1333 !ENDIF
1334 !ELSE
1335 !IFDEF CL_1310
1336   Delete /REBOOTOK "$INSTDIR\Common\msvcr71.dll"
1337 !ELSE
1338   Delete /REBOOTOK "$INSTDIR\Common\msvcrt.dll"
1339 !ENDIF
1340 !ENDIF
1341   Delete /REBOOTOK "$INSTDIR\Common\*"
1342   RMDir "$INSTDIR\Common"
1343
1344 !ifdef INSTALL_KFW
1345   ;Remove KfW files
1346   Delete /REBOOTOK "$INSTDIR\kfw\bin\*"
1347   RMDIR  /r "$INSTDIR\kfw\bin"
1348   Delete /REBOOTOK "$INSTDIR\kfw\doc\*"
1349   RMDIR  /r "$INSTDIR\kfw\doc"
1350   RMDIR  /r "$INSTDIR\kfw"
1351 !endif
1352
1353   Delete "$SMPROGRAMS\OpenAFS\Documentation.lnk"
1354
1355   ; Remove control center
1356   Delete /REBOOTOK "$INSTDIR\Control Center\TaAfsAccountManager.exe"
1357   Delete /REBOOTOK "$INSTDIR\Control Center\TaAfsAdmSvr.exe"
1358   Delete /REBOOTOK "$INSTDIR\Control Center\TaAfsServerManager.exe"
1359   Delete /REBOOTOK "$INSTDIR\Control Center\CCUninst.dll"
1360 !ifdef DEBUG
1361   Delete /REBOOTOK "$INSTDIR\Control Center\TaAfsAccountManager.pdb"
1362   Delete /REBOOTOK "$INSTDIR\Control Center\TaAfsAdmSvr.pdb"
1363   Delete /REBOOTOK "$INSTDIR\Control Center\TaAfsServerManager.pdb"
1364 !endif
1365   RMDir  "$INSTDIR\Control Center"
1366   
1367   Delete "$SMPROGRAMS\OpenAFS\Uninstall OpenAFS.lnk"
1368   Delete "$SMPROGRAMS\OpenAFS\Client\Authentication.lnk"
1369   Delete "$SMPROGRAMS\OpenAFS\Control Center\Account Manager.lnk"
1370   Delete "$SMPROGRAMS\OpenAFS\Control Center\Server Manager.lnk"
1371   RMDIR "$SMPROGRAMS\OpenAFS\Control Center"
1372   RMDir /r "$SMPROGRAMS\OpenAFS\Client"
1373   RMDir /r "$SMPROGRAMS\OpenAFS"
1374   Delete "$SMSTARTUP\AFS Credentials.lnk"
1375   
1376   ReadRegStr $R0 HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon" "CachePath"
1377   IfErrors +2
1378   Delete "$R0\AFSCache"
1379   Delete "C:\AFSCache"
1380
1381   DeleteRegKey HKCR "*\shellex\ContextMenuHandlers\AFS Client Shell Extension"
1382   DeleteRegKey HKCR "CLSID\{DC515C27-6CAC-11D1-BAE7-00C04FD140D2}\InprocServer32"
1383   DeleteRegKey HKCR "CLSID\{DC515C27-6CAC-11D1-BAE7-00C04FD140D2}"
1384   DeleteRegKey HKCR "FOLDER\shellex\ContextMenuHandlers\AFS Client Shell Extension"
1385   DeleteRegValue HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved" "{DC515C27-6CAC-11D1-BAE7-00C04FD140D2}"
1386
1387   DeleteRegKey HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion"
1388   DeleteRegKey HKLM "${AFS_REGKEY_ROOT}\AFS Client"
1389   DeleteRegKey HKLM "${AFS_REGKEY_ROOT}\AFS Supplemental Documentation\CurrentVersion"
1390   DeleteRegKey HKLM "${AFS_REGKEY_ROOT}\AFS Supplemental Documentation"
1391   DeleteRegKey HKLM "${AFS_REGKEY_ROOT}\AFS Control Center\CurrentVersion"
1392   DeleteRegKey HKLM "${AFS_REGKEY_ROOT}\AFS Control Center"
1393   DeleteRegKey HKLM "${AFS_REGKEY_ROOT}\AFS Server\CurrentVersion"
1394   DeleteRegKey HKLM "${AFS_REGKEY_ROOT}\AFS Server"
1395   DeleteRegKey /ifempty HKLM "${AFS_REGKEY_ROOT}"
1396   DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenAFS"
1397   DeleteRegValue HKLM "SYSTEM\CurrentControlSet\Services\NetBT\Parameters" "SmbDeviceEnabled"
1398  
1399   RMDir  "$INSTDIR"
1400
1401   ;Display the Finish header
1402   !insertmacro MUI_UNFINISHHEADER
1403
1404 SectionEnd
1405
1406 ;--------------------------------
1407 ;Uninstaller Functions
1408
1409 Function un.onInit
1410
1411   ;Get language from registry
1412   ReadRegStr $LANGUAGE HKCU "Software\OpenAFS\AFS" "Installer Language"
1413
1414 FunctionEnd
1415
1416 Function un.onUninstSuccess
1417
1418    MessageBox MB_OK "Please reboot your machine to complete uninstallation of the software"
1419
1420 FunctionEnd
1421
1422 ;------------------------------
1423 ; Get the CellServDB file from the Internet
1424
1425 Function afs.GetCellServDB
1426
1427 ;Check if we should download CellServDB
1428 ;ReadINIStr $R0 $0 "Field 4" "State"
1429 ;StrCmp $R0 "0" CheckIncl
1430
1431    ReadINIStr $R0 $0 "Field 5" "State"
1432    NSISdl::download $R0 "$WINDIR\afsdcell.ini"
1433    Pop $R0 ;Get the return value
1434    StrCmp $R0 "success" +2
1435       MessageBox MB_OK|MB_ICONSTOP "Download failed: $R0"
1436    goto done
1437 CheckIncl:
1438    ReadINIStr $R0 $0 "Field 3" "State"
1439    StrCmp $R0 "0" CheckOther
1440    SetOutPath "$WINDIR"
1441    File "afsdcell.ini"
1442    goto done
1443    
1444 CheckOther:
1445    ReadINIStr $R0 $0 "Field 7" "State"
1446    CopyFiles $R0 "$WINDIR\afsdcell.ini"
1447    
1448 done:
1449
1450 FunctionEnd
1451
1452
1453
1454 ;-------------------------------
1455 ;Do the page to get the CellServDB
1456
1457 Function AFSPageGetCellServDB
1458   ; Set the install options here
1459   
1460 startOver:
1461   WriteINIStr $0 "Field 2" "Flags" "DISABLED"
1462   WriteINIStr $0 "Field 3" "State" "1"
1463   
1464   !insertmacro MUI_HEADER_TEXT "CellServDB Configuration" "Please choose a method for installing the CellServDB file:" 
1465   InstallOptions::dialog $0
1466   Pop $R1
1467   StrCmp $R1 "cancel" exit
1468   StrCmp $R1 "back" done
1469   StrCmp $R1 "success" done
1470 exit: Quit
1471 done:
1472
1473    ; Check that if a file is set, a filename is entered...
1474    ReadINIStr $R0 $0 "Field 6" "State"
1475    StrCmp $R0 "1" CheckFileName Skip
1476 CheckFileName:
1477    ReadINIStr $R0 $0 "Field 7" "State"
1478    IfFileExists $R0 Skip
1479
1480    MessageBox MB_OK|MB_ICONSTOP $(CellError)
1481    WriteINIStr $0 "Field 6" "State" "0"
1482    goto startOver
1483    
1484    Skip:
1485    
1486 FunctionEnd
1487
1488
1489 Function AFSPageGetCellName
1490    Call IsSilent
1491    Pop $R1
1492    StrCmp $R1 "/S" exit
1493   !insertmacro MUI_HEADER_TEXT "Cell Name Configuration" "Please enter the name for your default cell:" 
1494   InstallOptions::dialog $1
1495   Pop $R1
1496   StrCmp $R1 "cancel" exit
1497   StrCmp $R1 "back" done
1498   StrCmp $R1 "success" done
1499 exit: Quit
1500 done:
1501 FunctionEnd
1502
1503 ;-------------
1504 ; Common install routines for each module
1505 Function AFSCommon.Install
1506
1507 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenAFS" "DisplayName" "OpenAFS for Windows"
1508 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenAFS" "UninstallString" "$INSTDIR\uninstall.exe"
1509 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenAFS" "DisplayVersion" "${MUI_VERSION}"
1510 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenAFS" "URLInfoAbout" "http://www.openafs.org/"
1511
1512 FunctionEnd
1513
1514
1515 ; Check if install should be silent
1516 Function IsSilent
1517   Push $0
1518   Push $CMDLINE
1519   Push "/S"
1520   Call StrStr
1521   Pop $0
1522   StrCpy $0 $0 3
1523   StrCmp $0 "/S" silent
1524   StrCmp $0 "/S " silent
1525     StrCpy $0 0
1526     Goto notsilent
1527   silent: StrCpy $0 1
1528   notsilent: Exch $0
1529 FunctionEnd
1530
1531
1532
1533 ; Check if uninstall should be silent
1534 Function un.IsSilent
1535   Push $0
1536   Push $CMDLINE
1537   Push "/S"
1538   Call un.StrStr
1539   Pop $0
1540   StrCpy $0 $0 3
1541   StrCmp $0 "/S" silent
1542   StrCmp $0 "/S " silent
1543     StrCpy $0 0
1544     Goto notsilent
1545   silent: StrCpy $0 1
1546   notsilent: Exch $0
1547 FunctionEnd
1548
1549
1550
1551 ; StrStr function
1552 Function StrStr
1553   Exch $R1 ; st=haystack,old$R1, $R1=needle
1554   Exch    ; st=old$R1,haystack
1555   Exch $R2 ; st=old$R1,old$R2, $R2=haystack
1556   Push $R3
1557   Push $R4
1558   Push $R5
1559   StrLen $R3 $R1
1560   StrCpy $R4 0
1561   ; $R1=needle
1562   ; $R2=haystack
1563   ; $R3=len(needle)
1564   ; $R4=cnt
1565   ; $R5=tmp
1566   loop:
1567     StrCpy $R5 $R2 $R3 $R4
1568     StrCmp $R5 $R1 done
1569     StrCmp $R5 "" done
1570     IntOp $R4 $R4 + 1
1571     Goto loop
1572   done:
1573   StrCpy $R1 $R2 "" $R4
1574   Pop $R5
1575   Pop $R4
1576   Pop $R3
1577   Pop $R2
1578   Exch $R1
1579 FunctionEnd
1580
1581 ;-------------------
1582 ; Get the currently installed version and place it on the stack
1583 ; Modifies: Nothing
1584 Function GetInstalledVersion
1585    Push $R0
1586    Push $R1
1587    Push $R4
1588    
1589    ReadRegDWORD $R0 HKLM "Software\TransarcCorporation\$R2\CurrentVersion" "VersionString"
1590    StrCmp $R0 "" NotTransarc
1591    
1592    
1593 NotTransarc:
1594    ReadRegDWORD $R0 HKLM "${AFS_REGKEY_ROOT}\$R2\CurrentVersion" "VersionString"
1595    StrCmp $R0 "" done
1596    
1597 done:
1598    Pop $R4
1599    Pop $R1
1600    Exch $R0
1601 FunctionEnd
1602
1603
1604 ;-------------------------------
1605 ; Check if the client should be checked for default install
1606 Function ShouldClientInstall
1607    Push $R0
1608    StrCpy $R2 "Client"
1609    Call GetInstalledVersion
1610    Pop $R0
1611    
1612    StrCmp $R0 "" NotInstalled
1613    
1614    StrCpy $R0 "0"
1615    Exch $R0
1616    goto end
1617    
1618 NotInstalled:
1619    StrCpy $R0 "1"
1620    Exch $R0
1621 end:   
1622 FunctionEnd
1623
1624
1625 ; See if AFS Client is installed
1626 Function IsServerInstalled
1627    Push $R0
1628    StrCpy $R2 "AFS Server"
1629    Call GetInstalledVersion
1630    Pop $R0
1631    
1632    StrCmp $R0 "" NotInstalled
1633    
1634    StrCpy $R0 "1"
1635    Exch $R0
1636    goto end
1637    
1638 NotInstalled:
1639    StrCpy $R0 "0"
1640    Exch $R0
1641 end:   
1642 FunctionEnd
1643
1644
1645 ; See if AFS Server is installed
1646 Function IsClientInstalled
1647    Push $R0
1648    StrCpy $R2 "AFS Client"
1649    Call GetInstalledVersion
1650    Pop $R0
1651    
1652    StrCmp $R0 "" NotInstalled
1653    
1654    StrCpy $R0 "1"
1655    Exch $R0
1656    goto end
1657    
1658 NotInstalled:
1659    StrCpy $R0 "0"
1660    Exch $R0
1661 end:   
1662 FunctionEnd
1663
1664
1665
1666 ; See if AFS Documentation is installed
1667 Function IsDocumentationInstalled
1668    Push $R0
1669    StrCpy $R2 "AFS Supplemental Documentation"
1670    Call GetInstalledVersion
1671    Pop $R0
1672    
1673    StrCmp $R0 "" NotInstalled
1674    
1675    StrCpy $R0 "1"
1676    Exch $R0
1677    goto end
1678    
1679 NotInstalled:
1680    StrCpy $R0 "0"
1681    Exch $R0
1682 end:   
1683 FunctionEnd
1684
1685
1686 ; See if COntrol Center is installed
1687 Function IsControlInstalled
1688    Push $R0
1689    StrCpy $R2 "Control_Center"
1690    Call GetInstalledVersion
1691    Pop $R0
1692    
1693    StrCmp $R0 "" NotInstalled
1694    
1695    StrCpy $R0 "1"
1696    Exch $R0
1697    goto end
1698    
1699 NotInstalled:
1700    StrCpy $R0 "0"
1701    Exch $R0
1702 end:   
1703 FunctionEnd
1704
1705
1706 ; GetParameters
1707 ; input, none
1708 ; output, top of stack (replaces, with e.g. whatever)
1709 ; modifies no other variables.
1710
1711 Function GetParameters
1712   Push $R0
1713   Push $R1
1714   Push $R2
1715   StrCpy $R0 $CMDLINE 1
1716   StrCpy $R1 '"'
1717   StrCpy $R2 1
1718   StrCmp $R0 '"' loop
1719     StrCpy $R1 ' ' ; we're scanning for a space instead of a quote
1720   loop:
1721     StrCpy $R0 $CMDLINE 1 $R2
1722     StrCmp $R0 $R1 loop2
1723     StrCmp $R0 "" loop2
1724     IntOp $R2 $R2 + 1
1725     Goto loop
1726   loop2:
1727     IntOp $R2 $R2 + 1
1728     StrCpy $R0 $CMDLINE 1 $R2
1729     StrCmp $R0 " " loop2
1730   StrCpy $R0 $CMDLINE "" $R2
1731   Pop $R2
1732   Pop $R1
1733   Exch $R0
1734 FunctionEnd
1735
1736
1737 ;Check to see if any AFS component is installed
1738 Function IsAnyAFSInstalled
1739
1740 FunctionEnd
1741
1742
1743 ;Install English Language Files
1744 Function AFSLangFiles
1745    ; Common files
1746    SetOutPath "$INSTDIR\Common"
1747    File "${AFS_CLIENT_BUILDDIR}\afs_config.exe"
1748    File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext.dll"
1749    File "${AFS_SERVER_BUILDDIR}\afsadminutil.dll"
1750    File "${AFS_DESTDIR}\lib\afsauthent.dll"
1751    File "${AFS_DESTDIR}\lib\afspthread.dll"
1752    File "${AFS_DESTDIR}\lib\afsrpc.dll"
1753    File "${AFS_SERVER_BUILDDIR}\afsclientadmin.dll"
1754    File "${AFS_SERVER_BUILDDIR}\afsprocmgmt.dll"
1755    File "${AFS_SERVER_BUILDDIR}\afsvosadmin.dll"
1756    File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib.dll"
1757    File "${AFS_SERVER_BUILDDIR}\afsvosadmin.dll"
1758    File "${AFS_SERVER_BUILDDIR}\afsbosadmin.dll"
1759    File "${AFS_SERVER_BUILDDIR}\afscfgadmin.dll"
1760    File "${AFS_SERVER_BUILDDIR}\afskasadmin.dll"
1761    File "${AFS_SERVER_BUILDDIR}\afsptsadmin.dll"
1762 !IFDEF DEBUG
1763 !IFDEF CL_1310
1764    File "${AFS_WININSTALL_DIR}\msvcr71d.dll"
1765    File "${AFS_WININSTALL_DIR}\msvcr71d.pdb"
1766 !ELSE
1767    File "${AFS_WININSTALL_DIR}\msvcrtd.dll"
1768    File "${AFS_WININSTALL_DIR}\msvcrtd.pdb"
1769 !ENDIF
1770 !ELSE
1771 !IFDEF CL_1310
1772    File "${AFS_WININSTALL_DIR}\msvcr71.dll"
1773 !ELSE
1774    File "${AFS_WININSTALL_DIR}\msvcrt.dll"
1775 !ENDIF
1776 !ENDIF
1777
1778 !ifdef DEBUG
1779    File "${AFS_CLIENT_BUILDDIR}\afs_config.pdb"
1780    File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext.pdb"
1781    File "${AFS_SERVER_BUILDDIR}\afsadminutil.pdb"
1782    File "${AFS_DESTDIR}\lib\afsauthent.pdb"
1783    File "${AFS_DESTDIR}\lib\afspthread.pdb"
1784    File "${AFS_DESTDIR}\lib\afsrpc.pdb"
1785    File "${AFS_SERVER_BUILDDIR}\afsclientadmin.pdb"
1786    File "${AFS_SERVER_BUILDDIR}\afsprocmgmt.pdb"
1787    File "${AFS_SERVER_BUILDDIR}\afsvosadmin.pdb"
1788    File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib.pdb"
1789    File "${AFS_SERVER_BUILDDIR}\afsvosadmin.pdb"
1790    File "${AFS_SERVER_BUILDDIR}\afsbosadmin.pdb"
1791    File "${AFS_SERVER_BUILDDIR}\afscfgadmin.pdb"
1792    File "${AFS_SERVER_BUILDDIR}\afskasadmin.pdb"
1793    File "${AFS_SERVER_BUILDDIR}\afsptsadmin.pdb"
1794 !endif
1795
1796    StrCmp $LANGUAGE ${LANG_ENGLISH} DoEnglish
1797    StrCmp $LANGUAGE ${LANG_GERMAN} DoGerman
1798    StrCmp $LANGUAGE ${LANG_SPANISH} DoSpanish
1799    StrCmp $LANGUAGE ${LANG_JAPANESE} DoJapanese
1800    ;StrCmp $LANGUAGE ${LANG_KOREAN} DoKorean
1801    StrCmp $LANGUAGE ${LANG_PORTUGUESEBR} DoPortugueseBR
1802    StrCmp $LANGUAGE ${LANG_SIMPCHINESE} DoSimpChinese
1803    StrCmp $LANGUAGE ${LANG_TRADCHINESE} DoTradChinese
1804    
1805 DoEnglish:
1806
1807    SetOutPath "$INSTDIR\Documentation"
1808    File "..\..\doc\install\Documentation\en_US\README.TXT"
1809
1810    SetOutPath "$INSTDIR\Common"
1811    File "${AFS_CLIENT_BUILDDIR}\afs_config_1033.dll"
1812    File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1033.dll"
1813    File "${AFS_CLIENT_BUILDDIR}\afscreds_1033.dll"
1814    File "${AFS_CLIENT_BUILDDIR}\afs_cpa_1033.dll"
1815    File "${AFS_SERVER_BUILDDIR}\afseventmsg_1033.dll"
1816    ;File "${AFS_SERVER_BUILDDIR}\afs_setup_utils_1033.dll"
1817    File "${AFS_SERVER_BUILDDIR}\afsserver_1033.dll"
1818    File "${AFS_SERVER_BUILDDIR}\afssvrcfg_1033.dll"
1819    File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1033.dll"
1820    File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1033.dll"
1821    File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1033.dll"
1822    File "..\..\doc\help\en_US\afs-cc.CNT"
1823    File "..\..\doc\help\en_US\afs-cc.hlp"
1824    File "..\..\doc\help\en_US\afs-light.CNT"
1825    File "..\..\doc\help\en_US\afs-light.hlp"
1826    File "..\..\doc\help\en_US\afs-nt.CNT"
1827    File "..\..\doc\help\en_US\afs-nt.HLP"
1828    File "..\..\doc\help\en_US\taafscfg.CNT"
1829    File "..\..\doc\help\en_US\taafscfg.hlp"
1830    File "..\..\doc\help\en_US\taafssvrmgr.CNT"
1831    File "..\..\doc\help\en_US\taafssvrmgr.hlp"
1832    File "..\..\doc\help\en_US\taafsusrmgr.CNT"
1833    File "..\..\doc\help\en_US\taafsusrmgr.hlp"
1834    goto done
1835
1836 DoGerman:
1837
1838    SetOutPath "$INSTDIR\Documentation"
1839    File "..\..\doc\install\Documentation\de_DE\README.TXT"
1840
1841    SetOutPath "$INSTDIR\Common"
1842    File "${AFS_CLIENT_BUILDDIR}\afs_config_1032.dll"
1843    File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1032.dll"
1844    File "${AFS_CLIENT_BUILDDIR}\afscreds_1032.dll"
1845    File "${AFS_CLIENT_BUILDDIR}\afs_cpa_1032.dll"
1846    File "${AFS_SERVER_BUILDDIR}\afseventmsg_1032.dll"
1847    ;File "${AFS_SERVER_BUILDDIR}\afs_setup_utils_1032.dll"
1848    File "${AFS_SERVER_BUILDDIR}\afsserver_1032.dll"
1849    File "${AFS_SERVER_BUILDDIR}\afssvrcfg_1032.dll"
1850    File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1032.dll"
1851    File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1032.dll"
1852    File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1032.dll"
1853    File "..\..\doc\help\de_DE\afs-cc.CNT"
1854    File "..\..\doc\help\de_DE\afs-cc.hlp"
1855    File "..\..\doc\help\de_DE\afs-light.CNT"
1856    File "..\..\doc\help\de_DE\afs-light.hlp"
1857    File "..\..\doc\help\de_DE\afs-nt.CNT"
1858    File "..\..\doc\help\de_DE\afs-nt.HLP"
1859    File "..\..\doc\help\de_DE\taafscfg.CNT"
1860    File "..\..\doc\help\de_DE\taafscfg.hlp"
1861    File "..\..\doc\help\de_DE\taafssvrmgr.CNT"
1862    File "..\..\doc\help\de_DE\taafssvrmgr.hlp"
1863    File "..\..\doc\help\de_DE\taafsusrmgr.CNT"
1864    File "..\..\doc\help\de_DE\taafsusrmgr.hlp"
1865
1866 !ifdef DEBUG
1867    ;File "${AFS_CLIENT_BUILDDIR}\afs_config_1033.pdb"
1868    ;File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1033.pdb"
1869    ;File "${AFS_CLIENT_BUILDDIR}\afscreds_1033.pdb"
1870    ;File "${AFS_CLIENT_BUILDDIR}\afs_cpa_1033.pdb"
1871    ;File "${AFS_SERVER_BUILDDIR}\afseventmsg_1033.pdb"
1872    ;File "${AFS_SERVER_BUILDDIR}\afsserver_1033.pdb"
1873    ;File "${AFS_SERVER_BUILDDIR}\afssvrcfg_1033.pdb"
1874    ;File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1033.pdb"
1875    ;File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1033.pdb"
1876    ;File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1033.pdb"
1877 !IFDEF CL_1310
1878    File "${AFS_WININSTALL_DIR}\msvcr71d.dll"
1879    File "${AFS_WININSTALL_DIR}\msvcr71d.pdb"
1880 !ELSE
1881    File "${AFS_WININSTALL_DIR}\msvcrtd.dll"
1882    File "${AFS_WININSTALL_DIR}\msvcrtd.pdb"
1883 !ENDIF
1884 !endif
1885    goto done   
1886
1887 DoSpanish:
1888
1889    SetOutPath "$INSTDIR\Documentation"
1890    File "..\..\doc\install\Documentation\es_ES\README.TXT"
1891
1892    SetOutPath "$INSTDIR\Common"
1893    File "${AFS_CLIENT_BUILDDIR}\afs_config_1034.dll"
1894    File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1034.dll"
1895    File "${AFS_CLIENT_BUILDDIR}\afscreds_1034.dll"
1896    File "${AFS_CLIENT_BUILDDIR}\afs_cpa_1034.dll"
1897    File "${AFS_SERVER_BUILDDIR}\afseventmsg_1034.dll"
1898    ;File "${AFS_SERVER_BUILDDIR}\afs_setup_utils_1034.dll"
1899    File "${AFS_SERVER_BUILDDIR}\afsserver_1034.dll"
1900    File "${AFS_SERVER_BUILDDIR}\afssvrcfg_1034.dll"
1901    File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1034.dll"
1902    File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1034.dll"
1903    File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1034.dll"
1904    File "..\..\doc\help\es_ES\afs-cc.CNT"
1905    File "..\..\doc\help\es_ES\afs-cc.hlp"
1906    File "..\..\doc\help\es_ES\afs-light.CNT"
1907    File "..\..\doc\help\es_ES\afs-light.hlp"
1908    File "..\..\doc\help\es_ES\afs-nt.CNT"
1909    File "..\..\doc\help\es_ES\afs-nt.HLP"
1910    File "..\..\doc\help\es_ES\taafscfg.CNT"
1911    File "..\..\doc\help\es_ES\taafscfg.hlp"
1912    File "..\..\doc\help\es_ES\taafssvrmgr.CNT"
1913    File "..\..\doc\help\es_ES\taafssvrmgr.hlp"
1914    File "..\..\doc\help\es_ES\taafsusrmgr.CNT"
1915    File "..\..\doc\help\es_ES\taafsusrmgr.hlp"
1916    goto done
1917
1918 DoJapanese:
1919
1920    SetOutPath "$INSTDIR\Documentation"
1921    File "..\..\doc\install\Documentation\ja_JP\README.TXT"
1922
1923    SetOutPath "$INSTDIR\Common"
1924    File "${AFS_CLIENT_BUILDDIR}\afs_config_1041.dll"
1925    File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1041.dll"
1926    File "${AFS_CLIENT_BUILDDIR}\afscreds_1041.dll"
1927    File "${AFS_CLIENT_BUILDDIR}\afs_cpa_1041.dll"
1928    File "${AFS_SERVER_BUILDDIR}\afseventmsg_1041.dll"
1929    ;File "${AFS_SERVER_BUILDDIR}\afs_setup_utils_1041.dll"
1930    File "${AFS_SERVER_BUILDDIR}\afsserver_1041.dll"
1931    File "${AFS_SERVER_BUILDDIR}\afssvrcfg_1041.dll"
1932    File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1041.dll"
1933    File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1041.dll"
1934    File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1041.dll"
1935    File "..\..\doc\help\ja_JP\afs-cc.CNT"
1936    File "..\..\doc\help\ja_JP\afs-cc.hlp"
1937    File "..\..\doc\help\ja_JP\afs-light.CNT"
1938    File "..\..\doc\help\ja_JP\afs-light.hlp"
1939    File "..\..\doc\help\ja_JP\afs-nt.CNT"
1940    File "..\..\doc\help\ja_JP\afs-nt.HLP"
1941    File "..\..\doc\help\ja_JP\taafscfg.CNT"
1942    File "..\..\doc\help\ja_JP\taafscfg.hlp"
1943    File "..\..\doc\help\ja_JP\taafssvrmgr.CNT"
1944    File "..\..\doc\help\ja_JP\taafssvrmgr.hlp"
1945    File "..\..\doc\help\ja_JP\taafsusrmgr.CNT"
1946    File "..\..\doc\help\ja_JP\taafsusrmgr.hlp"
1947    goto done
1948    
1949 DoKorean:
1950
1951    SetOutPath "$INSTDIR\Documentation"
1952    File "..\..\doc\install\Documentation\ko_KR\README.TXT"
1953
1954    SetOutPath "$INSTDIR\Common"
1955    File "${AFS_CLIENT_BUILDDIR}\afs_config_1042.dll"
1956    File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1042.dll"
1957    File "${AFS_CLIENT_BUILDDIR}\afscreds_1042.dll"
1958    File "${AFS_CLIENT_BUILDDIR}\afs_cpa_1042.dll"
1959    File "${AFS_SERVER_BUILDDIR}\afseventmsg_1042.dll"
1960    ;File "${AFS_SERVER_BUILDDIR}\afs_setup_utils_1042.dll"
1961    File "${AFS_SERVER_BUILDDIR}\afsserver_1042.dll"
1962    File "${AFS_SERVER_BUILDDIR}\afssvrcfg_1042.dll"
1963    File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1042.dll"
1964    File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1042.dll"
1965    File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1042.dll"
1966    File "..\..\doc\help\ko_KR\afs-cc.CNT"
1967    File "..\..\doc\help\ko_KR\afs-cc.hlp"
1968    File "..\..\doc\help\ko_KR\afs-light.CNT"
1969    File "..\..\doc\help\ko_KR\afs-light.hlp"
1970    File "..\..\doc\help\ko_KR\afs-nt.CNT"
1971    File "..\..\doc\help\ko_KR\afs-nt.HLP"
1972    File "..\..\doc\help\ko_KR\taafscfg.CNT"
1973    File "..\..\doc\help\ko_KR\taafscfg.hlp"
1974    File "..\..\doc\help\ko_KR\taafssvrmgr.CNT"
1975    File "..\..\doc\help\ko_KR\taafssvrmgr.hlp"
1976    File "..\..\doc\help\ko_KR\taafsusrmgr.CNT"
1977    File "..\..\doc\help\ko_KR\taafsusrmgr.hlp"
1978    goto done
1979
1980
1981 DoPortugueseBR:
1982
1983    SetOutPath "$INSTDIR\Documentation"
1984    File "..\..\doc\install\Documentation\pt_BR\README.TXT"
1985
1986    SetOutPath "$INSTDIR\Common"
1987    File "${AFS_CLIENT_BUILDDIR}\afs_config_1046.dll"
1988    File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1046.dll"
1989    File "${AFS_CLIENT_BUILDDIR}\afscreds_1046.dll"
1990    File "${AFS_CLIENT_BUILDDIR}\afs_cpa_1046.dll"
1991    File "${AFS_SERVER_BUILDDIR}\afseventmsg_1046.dll"
1992    ;File "${AFS_SERVER_BUILDDIR}\afs_setup_utils_1046.dll"
1993    File "${AFS_SERVER_BUILDDIR}\afsserver_1046.dll"
1994    File "${AFS_SERVER_BUILDDIR}\afssvrcfg_1046.dll"
1995    File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1046.dll"
1996    File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1046.dll"
1997    File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1046.dll"
1998    File "..\..\doc\help\pt_BR\afs-cc.CNT"
1999    File "..\..\doc\help\pt_BR\afs-cc.hlp"
2000    File "..\..\doc\help\pt_BR\afs-light.CNT"
2001    File "..\..\doc\help\pt_BR\afs-light.hlp"
2002    File "..\..\doc\help\pt_BR\afs-nt.CNT"
2003    File "..\..\doc\help\pt_BR\afs-nt.HLP"
2004    File "..\..\doc\help\pt_BR\taafscfg.CNT"
2005    File "..\..\doc\help\pt_BR\taafscfg.hlp"
2006    File "..\..\doc\help\pt_BR\taafssvrmgr.CNT"
2007    File "..\..\doc\help\pt_BR\taafssvrmgr.hlp"
2008    File "..\..\doc\help\pt_BR\taafsusrmgr.CNT"
2009    File "..\..\doc\help\pt_BR\taafsusrmgr.hlp"
2010    goto done
2011    
2012 DoSimpChinese:
2013
2014    SetOutPath "$INSTDIR\Documentation"
2015    File "..\..\doc\install\Documentation\zh_CN\README.TXT"
2016
2017    SetOutPath "$INSTDIR\Common"
2018    File "${AFS_CLIENT_BUILDDIR}\afs_config_2052.dll"
2019    File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_2052.dll"
2020    File "${AFS_CLIENT_BUILDDIR}\afscreds_2052.dll"
2021    File "${AFS_CLIENT_BUILDDIR}\afs_cpa_2052.dll"
2022    File "${AFS_SERVER_BUILDDIR}\afseventmsg_2052.dll"
2023    ;File "${AFS_SERVER_BUILDDIR}\afs_setup_utils_2052.dll"
2024    File "${AFS_SERVER_BUILDDIR}\afsserver_2052.dll"
2025    File "${AFS_SERVER_BUILDDIR}\afssvrcfg_2052.dll"
2026    File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_2052.dll"
2027    File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_2052.dll"
2028    File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_2052.dll"
2029    File "..\..\doc\help\zh_CN\afs-cc.CNT"
2030    File "..\..\doc\help\zh_CN\afs-cc.hlp"
2031    File "..\..\doc\help\zh_CN\afs-light.CNT"
2032    File "..\..\doc\help\zh_CN\afs-light.hlp"
2033    File "..\..\doc\help\zh_CN\afs-nt.CNT"
2034    File "..\..\doc\help\zh_CN\afs-nt.HLP"
2035    File "..\..\doc\help\zh_CN\taafscfg.CNT"
2036    File "..\..\doc\help\zh_CN\taafscfg.hlp"
2037    File "..\..\doc\help\zh_CN\taafssvrmgr.CNT"
2038    File "..\..\doc\help\zh_CN\taafssvrmgr.hlp"
2039    File "..\..\doc\help\zh_CN\taafsusrmgr.CNT"
2040    File "..\..\doc\help\zh_CN\taafsusrmgr.hlp"
2041    goto done
2042    
2043 DoTradChinese:
2044
2045    SetOutPath "$INSTDIR\Documentation"
2046    File "..\..\doc\install\Documentation\zh_TW\README.TXT"
2047
2048    SetOutPath "$INSTDIR\Common"
2049    File "${AFS_CLIENT_BUILDDIR}\afs_config_1028.dll"
2050    File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1028.dll"
2051    File "${AFS_CLIENT_BUILDDIR}\afscreds_1028.dll"
2052    File "${AFS_CLIENT_BUILDDIR}\afs_cpa_1028.dll"
2053    File "${AFS_SERVER_BUILDDIR}\afseventmsg_1028.dll"
2054    ;File "${AFS_SERVER_BUILDDIR}\afs_setup_utils_1028.dll"
2055    File "${AFS_SERVER_BUILDDIR}\afsserver_1028.dll"
2056    File "${AFS_SERVER_BUILDDIR}\afssvrcfg_1028.dll"
2057    File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1028.dll"
2058    File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1028.dll"
2059    File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1028.dll"
2060    File "..\..\doc\help\zh_TW\afs-cc.CNT"
2061    File "..\..\doc\help\zh_TW\afs-cc.hlp"
2062    File "..\..\doc\help\zh_TW\afs-light.CNT"
2063    File "..\..\doc\help\zh_TW\afs-light.hlp"
2064    File "..\..\doc\help\zh_TW\afs-nt.CNT"
2065    File "..\..\doc\help\zh_TW\afs-nt.HLP"
2066    File "..\..\doc\help\zh_TW\taafscfg.CNT"
2067    File "..\..\doc\help\zh_TW\taafscfg.hlp"
2068    File "..\..\doc\help\zh_TW\taafssvrmgr.CNT"
2069    File "..\..\doc\help\zh_TW\taafssvrmgr.hlp"
2070    File "..\..\doc\help\zh_TW\taafsusrmgr.CNT"
2071    File "..\..\doc\help\zh_TW\taafsusrmgr.hlp"
2072    goto done
2073    
2074 done:
2075 FunctionEnd
2076
2077
2078
2079 ;====================================================
2080 ; AddToPath - Adds the given dir to the search path.
2081 ;        Input - head of the stack
2082 ;        Note - Win9x systems requires reboot
2083 ;====================================================
2084 Function AddToPath
2085   Exch $0
2086   Push $1
2087   
2088   Call IsNT
2089   Pop $1
2090   StrCmp $1 1 AddToPath_NT
2091     ; Not on NT
2092     StrCpy $1 $WINDIR 2
2093     FileOpen $1 "$1\autoexec.bat" a
2094     FileSeek $1 0 END
2095     GetFullPathName /SHORT $0 $0
2096     FileWrite $1 "$\r$\nSET PATH=%PATH%;$0$\r$\n"
2097     FileClose $1
2098     Goto AddToPath_done
2099
2100   AddToPath_NT:
2101     ReadRegStr $1 HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "PATH"
2102     StrCmp $1 "" AddToPath_NTdoIt
2103       StrCpy $0 "$1;$0"
2104       Goto AddToPath_NTdoIt
2105     AddToPath_NTdoIt:
2106       WriteRegExpandStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "PATH" $0
2107       SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
2108   
2109   AddToPath_done:
2110     Pop $1
2111     Pop $0
2112 FunctionEnd
2113
2114 ;====================================================
2115 ; RemoveFromPath - Remove a given dir from the path
2116 ;     Input: head of the stack
2117 ;====================================================
2118 Function un.RemoveFromPath
2119   Exch $0
2120   Push $1
2121   Push $2
2122   Push $3
2123   Push $4
2124   
2125   Call un.IsNT
2126   Pop $1
2127   StrCmp $1 1 unRemoveFromPath_NT
2128     ; Not on NT
2129     StrCpy $1 $WINDIR 2
2130     FileOpen $1 "$1\autoexec.bat" r
2131     GetTempFileName $4
2132     FileOpen $2 $4 w
2133     GetFullPathName /SHORT $0 $0
2134     StrCpy $0 "SET PATH=%PATH%;$0"
2135     SetRebootFlag true
2136     Goto unRemoveFromPath_dosLoop
2137     
2138     unRemoveFromPath_dosLoop:
2139       FileRead $1 $3
2140       StrCmp $3 "$0$\r$\n" unRemoveFromPath_dosLoop
2141       StrCmp $3 "$0$\n" unRemoveFromPath_dosLoop
2142       StrCmp $3 "$0" unRemoveFromPath_dosLoop
2143       StrCmp $3 "" unRemoveFromPath_dosLoopEnd
2144       FileWrite $2 $3
2145       Goto unRemoveFromPath_dosLoop
2146     
2147     unRemoveFromPath_dosLoopEnd:
2148       FileClose $2
2149       FileClose $1
2150       StrCpy $1 $WINDIR 2
2151       Delete "$1\autoexec.bat"
2152       CopyFiles /SILENT $4 "$1\autoexec.bat"
2153       Delete $4
2154       Goto unRemoveFromPath_done
2155
2156   unRemoveFromPath_NT:
2157     StrLen $2 $0
2158     ReadRegStr $1 HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "PATH"
2159     Push $1
2160     Push $0
2161     Call un.StrStr ; Find $0 in $1
2162     Pop $0 ; pos of our dir
2163     IntCmp $0 -1 unRemoveFromPath_done
2164       ; else, it is in path
2165       StrCpy $3 $1 $0 ; $3 now has the part of the path before our dir
2166       IntOp $2 $2 + $0 ; $2 now contains the pos after our dir in the path (';')
2167       IntOp $2 $2 + 1 ; $2 now containts the pos after our dir and the semicolon.
2168       StrLen $0 $1
2169       StrCpy $1 $1 $0 $2
2170       StrCpy $3 "$3$1"
2171
2172       WriteRegExpandStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "PATH" $3
2173       SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
2174   
2175   unRemoveFromPath_done:
2176     Pop $4
2177     Pop $3
2178     Pop $2
2179     Pop $1
2180     Pop $0
2181 FunctionEnd
2182
2183 ;====================================================
2184 ; IsNT - Returns 1 if the current system is NT, 0
2185 ;        otherwise.
2186 ;     Output: head of the stack
2187 ;====================================================
2188 Function IsNT
2189   Push $0
2190   ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
2191   StrCmp $0 "" 0 IsNT_yes
2192   ; we are not NT.
2193   Pop $0
2194   Push 0
2195   Return
2196
2197   IsNT_yes:
2198     ; NT!!!
2199     Pop $0
2200     Push 1
2201 FunctionEnd
2202
2203 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2204 ; Uninstall sutff
2205 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2206
2207
2208 ;====================================================
2209 ; StrStr - Finds a given string in another given string.
2210 ;               Returns -1 if not found and the pos if found.
2211 ;          Input: head of the stack - string to find
2212 ;                      second in the stack - string to find in
2213 ;          Output: head of the stack
2214 ;====================================================
2215 Function un.StrStr
2216   Push $0
2217   Exch
2218   Pop $0 ; $0 now have the string to find
2219   Push $1
2220   Exch 2
2221   Pop $1 ; $1 now have the string to find in
2222   Exch
2223   Push $2
2224   Push $3
2225   Push $4
2226   Push $5
2227
2228   StrCpy $2 -1
2229   StrLen $3 $0
2230   StrLen $4 $1
2231   IntOp $4 $4 - $3
2232
2233   unStrStr_loop:
2234     IntOp $2 $2 + 1
2235     IntCmp $2 $4 0 0 unStrStrReturn_notFound
2236     StrCpy $5 $1 $3 $2
2237     StrCmp $5 $0 unStrStr_done unStrStr_loop
2238
2239   unStrStrReturn_notFound:
2240     StrCpy $2 -1
2241
2242   unStrStr_done:
2243     Pop $5
2244     Pop $4
2245     Pop $3
2246     Exch $2
2247     Exch 2
2248     Pop $0
2249     Pop $1
2250 FunctionEnd
2251
2252 ;====================================================
2253 ; IsNT - Returns 1 if the current system is NT, 0
2254 ;        otherwise.
2255 ;     Output: head of the stack
2256 ;====================================================
2257 Function un.IsNT
2258   Push $0
2259   ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
2260   StrCmp $0 "" 0 unIsNT_yes
2261   ; we are not NT.
2262   Pop $0
2263   Push 0
2264   Return
2265
2266   unIsNT_yes:
2267     ; NT!!!
2268     Pop $0
2269     Push 1
2270 FunctionEnd
2271
2272 ; AddSharedDLL
2273  ;
2274  ; Increments a shared DLLs reference count.
2275  ; Use by passing one item on the stack (the full path of the DLL).
2276  ;
2277  ; Usage:
2278  ;   Push $SYSDIR\myDll.dll
2279  ;   Call AddSharedDLL
2280  ;
2281
2282  Function AddSharedDLL
2283    Exch $R1
2284    Push $R0
2285    ReadRegDword $R0 HKLM Software\Microsoft\Windows\CurrentVersion\SharedDLLs $R1
2286    IntOp $R0 $R0 + 1
2287    WriteRegDWORD HKLM Software\Microsoft\Windows\CurrentVersion\SharedDLLs $R1 $R0
2288    Pop $R0
2289    Pop $R1
2290  FunctionEnd
2291
2292  
2293 ; un.RemoveSharedDLL
2294  ;
2295  ; Decrements a shared DLLs reference count, and removes if necessary.
2296  ; Use by passing one item on the stack (the full path of the DLL).
2297  ; Note: for use in the main installer (not the uninstaller), rename the
2298  ; function to RemoveSharedDLL.
2299  ;
2300  ; Usage:
2301  ;   Push $SYSDIR\myDll.dll
2302  ;   Call un.RemoveSharedDLL
2303  ;
2304
2305  Function un.RemoveSharedDLL
2306    Exch $R1
2307    Push $R0
2308    ReadRegDword $R0 HKLM Software\Microsoft\Windows\CurrentVersion\SharedDLLs $R1
2309    StrCmp $R0 "" remove
2310      IntOp $R0 $R0 - 1
2311      IntCmp $R0 0 rk rk uk
2312      rk:
2313        DeleteRegValue HKLM Software\Microsoft\Windows\CurrentVersion\SharedDLLs $R1
2314      goto Remove
2315      uk:
2316        WriteRegDWORD HKLM Software\Microsoft\Windows\CurrentVersion\SharedDLLs $R1 $R0
2317      Goto noremove
2318    remove:
2319      Delete /REBOOTOK $R1
2320    noremove:
2321    Pop $R0
2322    Pop $R1
2323  FunctionEnd
2324
2325  Function afs.InstallMSLoopback
2326    ;GetTempFileName $R0
2327    ;File /oname=$R0 "loopback_install.dll"
2328    ;nsExec::Exec "rundll32.exe $R0 doLoopBackEntry quiet"
2329    ;Call GetWindowsVersion
2330    ;Pop $R1
2331    ;StrCmp $R1 "2000" +1 +2
2332    ;nsExec::Exec "rundll32.exe $R0 disableLoopBackEntry"
2333    ;Delete $R0
2334 FunctionEnd
2335
2336
2337
2338 ; GetWindowsVersion
2339 ;
2340 ; Based on Yazno's function, http://yazno.tripod.com/powerpimpit/
2341 ; Updated by Joost Verburg
2342 ;
2343 ; Returns on top of stack
2344 ;
2345 ; Windows Version (95, 98, ME, NT x.x, 2000, XP, 2003)
2346 ; or
2347 ; '' (Unknown Windows Version)
2348 ;
2349 ; Usage:
2350 ;   Call GetWindowsVersion
2351 ;   Pop $R0
2352 ;   ; at this point $R0 is "NT 4.0" or whatnot
2353
2354 Function GetWindowsVersion
2355
2356   Push $R0
2357   Push $R1
2358
2359   ClearErrors
2360
2361   ReadRegStr $R0 HKLM \
2362   "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
2363
2364   IfErrors 0 lbl_winnt
2365   
2366   ; we are not NT
2367   ReadRegStr $R0 HKLM \
2368   "SOFTWARE\Microsoft\Windows\CurrentVersion" VersionNumber
2369
2370   StrCpy $R1 $R0 1
2371   StrCmp $R1 '4' 0 lbl_error
2372
2373   StrCpy $R1 $R0 3
2374
2375   StrCmp $R1 '4.0' lbl_win32_95
2376   StrCmp $R1 '4.9' lbl_win32_ME lbl_win32_98
2377
2378   lbl_win32_95:
2379     StrCpy $R0 '95'
2380   Goto lbl_done
2381
2382   lbl_win32_98:
2383     StrCpy $R0 '98'
2384   Goto lbl_done
2385
2386   lbl_win32_ME:
2387     StrCpy $R0 'ME'
2388   Goto lbl_done
2389
2390   lbl_winnt:
2391
2392   StrCpy $R1 $R0 1
2393
2394   StrCmp $R1 '3' lbl_winnt_x
2395   StrCmp $R1 '4' lbl_winnt_x
2396
2397   StrCpy $R1 $R0 3
2398
2399   StrCmp $R1 '5.0' lbl_winnt_2000
2400   StrCmp $R1 '5.1' lbl_winnt_XP
2401   StrCmp $R1 '5.2' lbl_winnt_2003 lbl_error
2402
2403   lbl_winnt_x:
2404     StrCpy $R0 "NT $R0" 6
2405   Goto lbl_done
2406
2407   lbl_winnt_2000:
2408     Strcpy $R0 '2000'
2409   Goto lbl_done
2410
2411   lbl_winnt_XP:
2412     Strcpy $R0 'XP'
2413   Goto lbl_done
2414
2415   lbl_winnt_2003:
2416     Strcpy $R0 '2003'
2417   Goto lbl_done
2418
2419   lbl_error:
2420     Strcpy $R0 ''
2421   lbl_done:
2422
2423   Pop $R1
2424   Exch $R0
2425
2426 FunctionEnd
2427
2428
2429 ; Author: Lilla (lilla@earthlink.net) 2003-06-13
2430 ; function IsUserAdmin uses plugin \NSIS\PlusgIns\UserInfo.dll
2431 ; This function is based upon code in \NSIS\Contrib\UserInfo\UserInfo.nsi
2432 ; This function was tested under NSIS 2 beta 4 (latest CVS as of this writing).
2433 ;
2434 ; Usage:
2435 ;   Call IsUserAdmin
2436 ;   Pop $R0   ; at this point $R0 is "true" or "false"
2437 ;
2438 Function IsUserAdmin
2439 Push $R0
2440 Push $R1
2441 Push $R2
2442
2443 ClearErrors
2444 UserInfo::GetName
2445 IfErrors Win9x
2446 Pop $R1
2447 UserInfo::GetAccountType
2448 Pop $R2
2449
2450 StrCmp $R2 "Admin" 0 Continue
2451 ; Observation: I get here when running Win98SE. (Lilla)
2452 ; The functions UserInfo.dll looks for are there on Win98 too, 
2453 ; but just don't work. So UserInfo.dll, knowing that admin isn't required
2454 ; on Win98, returns admin anyway. (per kichik)
2455 ; MessageBox MB_OK 'User "$R1" is in the Administrators group'
2456 StrCpy $R0 "true"
2457 Goto Done
2458
2459 Continue:
2460 ; You should still check for an empty string because the functions
2461 ; UserInfo.dll looks for may not be present on Windows 95. (per kichik)
2462 StrCmp $R2 "" Win9x
2463 StrCpy $R0 "false"
2464 ;MessageBox MB_OK 'User "$R1" is in the "$R2" group'
2465 Goto Done
2466
2467 Win9x:
2468 ; comment/message below is by UserInfo.nsi author:
2469 ; This one means you don't need to care about admin or
2470 ; not admin because Windows 9x doesn't either
2471 ;MessageBox MB_OK "Error! This DLL can't run under Windows 9x!"
2472 StrCpy $R0 "false"
2473
2474 Done:
2475 ;MessageBox MB_OK 'User= "$R1"  AccountType= "$R2"  IsUserAdmin= "$R0"'
2476
2477 Pop $R2
2478 Pop $R1
2479 Exch $R0
2480 FunctionEnd