add-pdb-files-to-server-nsis-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   ; Include Kerberos for Windows files in the installer...
585   ;SetOutPath "$INSTDIR\kfw\bin\"
586   ;File "${KFW_SOURCE}\bin\*"
587   ;SetOutPath "$INSTDIR\kfw\doc"
588   ;File "${KFW_SOURCE}\doc\*"
589   
590   ReadINIStr $R0 $0 "Field 2" "State"
591   StrCmp $R0 "1" UsePkg DontUsePkg
592  UsePkg:
593    SetOutPath "$WINDIR"
594    File "afsdcell.ini"
595 DontUsePkg:
596    ReadINIStr $R0 $0 "Field 6" "State"
597    StrCmp $R0 "1" UseFile DontUseFile
598 UseFile:
599    ReadINIStr $R0 $0 "Field 7" "State"
600    CopyFiles $R0 "$WINDIR\afsdcell.ini"
601 DontUseFile:
602    
603   ;Store install folder
604   WriteRegStr HKCU "${AFS_REGKEY_ROOT}\Client" "" $INSTDIR
605   Call AFSCommon.Install
606   
607   ; Write registry entries
608   WriteRegStr HKCR "*\shellex\ContextMenuHandlers\AFS Client Shell Extension" "" "{DC515C27-6CAC-11D1-BAE7-00C04FD140D2}"
609   WriteRegStr HKCR "CLSID\{DC515C27-6CAC-11D1-BAE7-00C04FD140D2}" "" "AFS Client Shell Extension"
610   WriteRegStr HKCR "CLSID\{DC515C27-6CAC-11D1-BAE7-00C04FD140D2}\InprocServer32" "" "$INSTDIR\Client\Program\afs_shl_ext.dll"
611   WriteRegStr HKCR "CLSID\{DC515C27-6CAC-11D1-BAE7-00C04FD140D2}\InprocServer32" "ThreadingModel" "Apartment"
612   WriteRegStr HKCR "FOLDER\shellex\ContextMenuHandlers\AFS Client Shell Extension" "" "{DC515C27-6CAC-11D1-BAE7-00C04FD140D2}"
613   WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved" "{DC515C27-6CAC-11D1-BAE7-00C04FD140D2}" "AFS Client Shell Extension"
614   
615   ; AFS Reg entries
616   DeleteRegKey HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion"
617   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion" "VersionString" ${MUI_VERSION}
618   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion" "Title" "AFS Client"
619   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion" "Description" "AFS Client"
620   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion" "PathName" "$INSTDIR\Client\Program"
621   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion" "Software Type" "File System"
622   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion" "MajorVersion" ${MUI_MAJORVERSION}
623   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion" "MinorVersion" ${MUI_MINORVERSION}
624   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion" "PatchLevel" ${MUI_PATCHLEVEL}
625   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Client\${MUI_VERSION}" "VersionString" ${MUI_VERSION}
626   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Client\${MUI_VERSION}" "Title" "AFS Client"
627   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Client\${MUI_VERSION}" "Description" "AFS Client"
628   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Client\${MUI_VERSION}" "Software Type" "File System"
629   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Client\${MUI_VERSION}" "PathName" "$INSTDIR\Client\Program"
630   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Client\${MUI_VERSION}" "MajorVersion" ${MUI_MAJORVERSION}
631   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Client\${MUI_VERSION}" "MinorVersion" ${MUI_MINORVERSION}
632   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Client\${MUI_VERSION}" "PatchLevel" ${MUI_PATCHLEVEL}
633
634    ; Set network settings
635   WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\NetBT\Parameters" "SmbDeviceEnabled" 0
636   
637   ;Write start menu entries
638   CreateDirectory "$SMPROGRAMS\OpenAFS\Client"
639   CreateShortCut "$SMPROGRAMS\OpenAFS\Uninstall OpenAFS.lnk" "$INSTDIR\Uninstall.exe"
640   CreateShortCut "$SMPROGRAMS\OpenAFS\Client\Authentication.lnk" "$INSTDIR\Client\Program\afscreds.exe" 
641   CreateShortCut "$SMSTARTUP\AFS Credentials.lnk" "$INSTDIR\Client\Program\afscreds.exe" 
642
643   Push "$INSTDIR\Client\Program"
644   Call AddToPath
645   Push "$INSTDIR\Common"
646   Call AddToPath
647   
648   ; Add kfw to path too
649   Push "$INSTDIR\kfw\bin"
650   Call AddToPath
651    
652   ; Create the AFS service
653   SetOutPath "$INSTDIR\Common"
654   File "${AFS_WININSTALL_DIR}\Service.exe"
655   nsExec::Exec "net stop TransarcAFSDaemon"
656   ;IMPORTANT!  If we are not refreshing the config files, do NOT remove the service
657   ;Don't re-install because it must be present or we wouldn't have passed the Reg check
658   ReadINIStr $R2 $1 "Field 2" "State"
659
660   StrCmp $R2 "" skipremove
661   nsExec::Exec '$INSTDIR\Common\Service.exe u TransarcAFSDaemon'
662   nsExec::Exec '$INSTDIR\Common\Service.exe TransarcAFSDaemon "$INSTDIR\Client\Program\afsd_service.exe" "OpenAFS Client Service"'
663 skipremove:
664   Delete "$INSTDIR\Common\service.exe"
665
666   ; Daemon entries
667   WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon" "(Default)" ""
668   WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider" "AuthentProviderPath" "$INSTDIR\Client\Program\afslogon.dll"
669   WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider" "Class" 2
670   WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider" "LogonOptions" 2
671   WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider" "LogonScript" "$INSTDIR\Client\Program\afscreds.exe -:%s -x"
672   WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider" "Name" "OpenAFSDaemon"
673   WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider" "ProviderPath" "$INSTDIR\Client\Program\afslogon.dll"
674
675   ;Write cell name
676   ReadINIStr $R0 $1 "Field 2" "State"
677   WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters" "Cell" $R0
678   WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters" "ShowTrayIcon" 1
679   WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters" "SecurityLevel" 1  
680   SetRebootFlag true
681   
682   WriteUninstaller "$INSTDIR\Uninstall.exe"
683   
684 SectionEnd
685
686 ;------------------------
687 ; OpenAFS SERVER  
688 Section "AFS Server" SecServer
689
690   SetShellVarContext all
691
692   CreateDirectory "$INSTDIR\Server\usr\afs\etc"
693   CreateDirectory "$INSTDIR\Server\usr\afs\local"
694   CreateDirectory "$INSTDIR\Server\usr\afs\logs"
695   
696   SetOutPath "$INSTDIR\Server\usr\afs\bin"  
697   File "${AFS_SERVER_BUILDDIR}\afskill.exe"
698   File "${AFS_SERVER_BUILDDIR}\afssvrcfg.exe"
699   File "${AFS_SERVER_BUILDDIR}\bosctlsvc.exe"
700   File "${AFS_SERVER_BUILDDIR}\bosserver.exe"
701   File "${AFS_SERVER_BUILDDIR}\buserver.exe"
702   File "${AFS_ETC_BUILDDIR}\butc.exe"
703   File "${AFS_SERVER_BUILDDIR}\fileserver.exe"
704   File "${AFS_ETC_BUILDDIR}\fms.exe"
705   File "${AFS_SERVER_BUILDDIR}\kaserver.exe"
706   File "${AFS_SERVER_BUILDDIR}\ptserver.exe"
707   File "${AFS_SERVER_BUILDDIR}\salvager.exe"
708   File "${AFS_SERVER_BUILDDIR}\upclient.exe"
709   File "${AFS_SERVER_BUILDDIR}\upserver.exe"
710   File "${AFS_SERVER_BUILDDIR}\vlserver.exe"
711   File "${AFS_SERVER_BUILDDIR}\volinfo.exe"
712   File "${AFS_SERVER_BUILDDIR}\volserver.exe"
713
714 !ifdef DEBUG
715   File "${AFS_SERVER_BUILDDIR}\afskill.pdb"
716   File "${AFS_SERVER_BUILDDIR}\afssvrcfg.pdb"
717   File "${AFS_SERVER_BUILDDIR}\bosctlsvc.pdb"
718   File "${AFS_SERVER_BUILDDIR}\bosserver.pdb"
719   File "${AFS_SERVER_BUILDDIR}\buserver.pdb"
720   File "${AFS_ETC_BUILDDIR}\butc.pdb"
721   File "${AFS_SERVER_BUILDDIR}\fileserver.pdb"
722   File "${AFS_ETC_BUILDDIR}\fms.pdb"
723   File "${AFS_SERVER_BUILDDIR}\kaserver.pdb"
724   File "${AFS_SERVER_BUILDDIR}\ptserver.pdb"
725   File "${AFS_SERVER_BUILDDIR}\salvager.pdb"
726   File "${AFS_SERVER_BUILDDIR}\upclient.pdb"
727   File "${AFS_SERVER_BUILDDIR}\upserver.pdb"
728   File "${AFS_SERVER_BUILDDIR}\vlserver.pdb"
729   File "${AFS_SERVER_BUILDDIR}\volinfo.pdb"
730   File "${AFS_SERVER_BUILDDIR}\volserver.pdb"
731 !endif
732  
733  ;AFS Server common files
734  SetOutPath "$INSTDIR\Common"
735  File "${AFS_SERVER_BUILDDIR}\afsvosadmin.dll"
736  File "${AFS_SERVER_BUILDDIR}\afsbosadmin.dll"
737  File "${AFS_SERVER_BUILDDIR}\afscfgadmin.dll"
738  File "${AFS_SERVER_BUILDDIR}\afskasadmin.dll"
739  File "${AFS_SERVER_BUILDDIR}\afsptsadmin.dll"
740
741 !ifdef DEBUG
742  File "${AFS_SERVER_BUILDDIR}\afsvosadmin.pdb"
743  File "${AFS_SERVER_BUILDDIR}\afsbosadmin.pdb"
744  File "${AFS_SERVER_BUILDDIR}\afscfgadmin.pdb"
745  File "${AFS_SERVER_BUILDDIR}\afskasadmin.pdb"
746  File "${AFS_SERVER_BUILDDIR}\afsptsadmin.pdb"
747 !endif
748  SetOutPath "$INSTDIR\Common"
749    Call AFSLangFiles
750    
751    SetOutPath "$WINDIR"
752    File "${AFS_SERVER_BUILDDIR}\afsserver.cpl"
753
754 !ifdef DEBUG
755    File "${AFS_SERVER_BUILDDIR}\afsserver.pdb"
756 !endif
757    
758   ;Store install folder
759   WriteRegStr HKCU "${AFS_REGKEY_ROOT}\AFS Server" "" $INSTDIR
760   
761   DeleteRegKey HKLM "${AFS_REGKEY_ROOT}\AFS Server\CurrentVersion"
762   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Server\CurrentVersion" "VersionString" ${MUI_VERSION}
763   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Server\CurrentVersion" "Title" "AFS Server"
764   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Server\CurrentVersion" "Description" "AFS Server for Windows"
765   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Server\CurrentVersion" "PathName" "$INSTDIR\Server"
766   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Server\CurrentVersion" "Software Type" "File System"
767   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Server\CurrentVersion" "MajorVersion" ${MUI_MAJORVERSION}
768   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Server\CurrentVersion" "MinorVersion" ${MUI_MINORVERSION}
769   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Server\CurrentVersion" "PatchLevel" ${MUI_PATCHLEVEL}
770   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Server\${MUI_VERSION}" "VersionString" ${MUI_VERSION}
771   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Server\${MUI_VERSION}" "Title" "AFS Server"
772   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Server\${MUI_VERSION}" "Description" "AFS Server for Windows"
773   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Server\${MUI_VERSION}" "Software Type" "File System"
774   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Server\${MUI_VERSION}" "PathName" "$INSTDIR\Server"
775   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Server\${MUI_VERSION}" "MajorVersion" ${MUI_MAJORVERSION}
776   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Server\${MUI_VERSION}" "MinorVersion" ${MUI_MINORVERSION}
777   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Server\${MUI_VERSION}" "PatchLevel" ${MUI_PATCHLEVEL}
778
779   ; Install the service
780   SetOutPath "$INSTDIR\Common"
781   File "${AFS_WININSTALL_DIR}\Service.exe"
782 !ifdef DEBUG
783   File "${AFS_WININSTALL_DIR}\Service.pdb"
784 !endif
785   nsExec::Exec "net stop TransarcAFSServer"
786   nsExec::Exec '$INSTDIR\Common\service.exe u TransarcAFSServer'
787   nsExec::Exec '$INSTDIR\Common\service.exe TransarcAFSServer "$INSTDIR\Server\usr\afs\bin\bosctlsvc.exe" "OpenAFS AFS Server"'
788   Delete "$INSTDIR\Common\service.exe"
789   
790   CreateDirectory "$SMPROGRAMS\OpenAFS\Server"
791   CreateShortCut "$SMPROGRAMS\OpenAFS\Server\Configuration Wizard.lnk" "$INSTDIR\Server\usr\afs\bin\afssvrcfg.exe" "/wizard"
792   
793   WriteUninstaller "$INSTDIR\Uninstall.exe"
794
795 SectionEnd
796
797
798 ;----------------------------
799 ; OpenAFS Control Center
800 Section "AFS Control Center" SecControl
801
802   SetShellVarContext all
803
804    SetOutPath "$INSTDIR\Control Center"
805   File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager.exe"
806   File "${AFS_SERVER_BUILDDIR}\TaAfsAdmSvr.exe"
807   File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager.exe"
808    
809 !ifdef DEBUG
810   File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager.pdb"
811   File "${AFS_SERVER_BUILDDIR}\TaAfsAdmSvr.pdb"
812   File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager.pdb"
813 !endif
814
815  ;AFS Server common files
816  Call AFSCommon.Install
817  Call AFSLangFiles
818  SetOutPath "$INSTDIR\Common"
819
820   SetOutPath "$INSTDIR\Common"
821 !IFDEF DEBUG
822 !IFDEF CL1310
823   File "${AFS_WININSTALL_DIR}\msvcr71d.dll"
824   File "${AFS_WININSTALL_DIR}\msvcr71d.pdb"
825   File "${AFS_WININSTALL_DIR}\msvcrtd.dll"
826   File "${AFS_WININSTALL_DIR}\msvcrtd.pdb"
827 !ELSE
828 !IFDEF CL1300
829   File "${AFS_WININSTALL_DIR}\msvcr70d.dll"
830   File "${AFS_WININSTALL_DIR}\msvcr70d.pdb"
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 CL1310
840   File "${AFS_WININSTALL_DIR}\msvcr71.dll"
841   File "${AFS_WININSTALL_DIR}\msvcrt.dll"
842 !ELSE
843 !IFDEF CL1300
844   File "${AFS_WININSTALL_DIR}\msvcr70.dll"
845   File "${AFS_WININSTALL_DIR}\msvcrt.dll"
846 !ELSE
847   File "${AFS_WININSTALL_DIR}\msvcrt.dll"
848 !ENDIF
849 !ENDIF
850 !ENDIF
851    
852    ;Store install folder
853   WriteRegStr HKCU "${AFS_REGKEY_ROOT}\AFS Control Center\CurrentVersion" "PathName" $INSTDIR
854   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Control Center\CurrentVersion" "VersionString" ${MUI_VERSION}
855   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Control Center\CurrentVersion" "MajorVersion" ${MUI_MAJORVERSION}
856   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Control Center\CurrentVersion" "MinorVersion" ${MUI_MINORVERSION}
857   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Control Center\CurrentVersion" "PatchLevel" ${MUI_PATCHLEVEL}
858   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Control Center\${MUI_VERSION}" "VersionString" ${MUI_VERSION}
859   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Control Center\${MUI_VERSION}" "MajorVersion" ${MUI_MAJORVERSION}
860   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Control Center\${MUI_VERSION}" "MinorVersion" ${MUI_MINORVERSION}
861   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Control Center\${MUI_VERSION}" "PatchLevel" ${MUI_PATCHLEVEL}
862   
863
864   ;Write start menu entries
865   CreateDirectory "$SMPROGRAMS\OpenAFS\Control Center"
866   CreateShortCut "$SMPROGRAMS\OpenAFS\Control Center\Account Manager.lnk" "$INSTDIR\Control Center\TaAfsAccountManager.exe"
867   CreateShortCut "$SMPROGRAMS\OpenAFS\Control Center\Server Manager.lnk" "$INSTDIR\Control Center\TaAfsServerManager.exe"
868   
869   WriteUninstaller "$INSTDIR\Uninstall.exe"
870
871 SectionEnd   
872
873
874 ;----------------------------
875 ; OpenAFS Supplemental Documentation
876 Section "Supplemental Documentation" SecDocs
877   SetShellVarContext all
878
879    StrCmp $LANGUAGE ${LANG_ENGLISH} DoEnglish
880    StrCmp $LANGUAGE ${LANG_GERMAN} DoGerman
881    StrCmp $LANGUAGE ${LANG_SPANISH} DoSpanish
882    StrCmp $LANGUAGE ${LANG_JAPANESE} DoJapanese
883    ;StrCmp $LANGUAGE ${LANG_KOREAN} DoKorean
884    StrCmp $LANGUAGE ${LANG_PORTUGUESEBR} DoPortugueseBR
885    StrCmp $LANGUAGE ${LANG_SIMPCHINESE} DoSimpChinese
886    StrCmp $LANGUAGE ${LANG_TRADCHINESE} DoTradChinese
887    
888    
889 DoEnglish:
890    SetOutPath "$INSTDIR\Documentation\html"
891    File "..\..\doc\install\Documentation\en_US\html\*"
892    SetOutPath "$INSTDIR\Documentation\html\CmdRef"
893    File "..\..\doc\install\Documentation\en_US\html\CmdRef\*"
894    SetOutPath "$INSTDIR\Documentation\html\InstallGd"
895    File "..\..\doc\install\Documentation\en_US\html\InstallGd\*"
896    SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes"
897    File "..\..\doc\install\Documentation\en_US\html\ReleaseNotes\*"
898    SetOutPath "$INSTDIR\Documentation\html\SysAdminGd"
899    File "..\..\doc\install\Documentation\en_US\html\SysAdminGd\*"
900    goto DoneLanguage
901    
902 DoGerman:
903    SetOutPath "$INSTDIR\Documentation"
904    File "..\..\doc\install\Documentation\de_DE\README.TXT"
905    SetOutPath "$INSTDIR\Documentation\html"
906    File "..\..\doc\install\Documentation\de_DE\html\*"
907    SetOutPath "$INSTDIR\Documentation\html\CmdRef"
908    ;File "..\..\doc\install\Documentation\de_DE\html\CmdRef\*"
909    SetOutPath "$INSTDIR\Documentation\html\InstallGd"
910    File "..\..\doc\install\Documentation\de_DE\html\InstallGd\*"
911    ;SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes"
912    ;File "..\..\doc\install\Documentation\de_DE\html\ReleaseNotes\*"
913    ;SetOutPath "$INSTDIR\Documentation\html\SysAdminGd"
914    ;File "..\..\doc\install\Documentation\de_DE\html\SysAdminGd\*"
915    goto DoneLanguage
916    
917 DoSpanish:
918    SetOutPath "$INSTDIR\Documentation"
919    File "..\..\doc\install\Documentation\es_ES\README.TXT"
920    SetOutPath "$INSTDIR\Documentation\html"
921    File "..\..\doc\install\Documentation\es_ES\html\*"
922    SetOutPath "$INSTDIR\Documentation\html\CmdRef"
923    ;File "..\..\doc\install\Documentation\es_ES\html\CmdRef\*"
924    SetOutPath "$INSTDIR\Documentation\html\InstallGd"
925    ;File "..\..\doc\install\Documentation\es_ES\html\InstallGd\*"
926    SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes"
927    ;File "..\..\doc\install\Documentation\es_ES\html\ReleaseNotes\*"
928    SetOutPath "$INSTDIR\Documentation\html\SysAdminGd"
929    ;File "..\..\doc\install\Documentation\es_ES\html\SysAdminGd\*"
930    goto DoneLanguage
931
932 DoJapanese:
933    SetOutPath "$INSTDIR\Documentation"
934    File "..\..\doc\install\Documentation\ja_JP\README.TXT"
935    SetOutPath "$INSTDIR\Documentation\html"
936    File "..\..\doc\install\Documentation\ja_JP\html\*"
937    SetOutPath "$INSTDIR\Documentation\html\CmdRef"
938    File "..\..\doc\install\Documentation\ja_JP\html\CmdRef\*"
939    SetOutPath "$INSTDIR\Documentation\html\InstallGd"
940    File "..\..\doc\install\Documentation\ja_JP\html\InstallGd\*"
941    SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes"
942    ;File "..\..\doc\install\Documentation\ja_JP\html\ReleaseNotes\*"
943    SetOutPath "$INSTDIR\Documentation\html\SysAdminGd"
944    ;File "..\..\doc\install\Documentation\ja_JP\html\SysAdminGd\*"
945    goto DoneLanguage
946    
947 DoKorean:
948    SetOutPath "$INSTDIR\Documentation"
949    File "..\..\doc\install\Documentation\ko_KR\README.TXT"
950    SetOutPath "$INSTDIR\Documentation\html"
951    File "..\..\doc\install\Documentation\ko_KR\html\*"
952    ;SetOutPath "$INSTDIR\Documentation\html\CmdRef"
953    ;File "..\..\doc\install\Documentation\ko_KR\html\CmdRef\*"
954    SetOutPath "$INSTDIR\Documentation\html\InstallGd"
955    File "..\..\doc\install\Documentation\ko_KR\html\InstallGd\*"
956    SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes"
957    File "..\..\doc\install\Documentation\ko_KR\html\ReleaseNotes\*"
958    SetOutPath "$INSTDIR\Documentation\html\SysAdminGd"
959    File "..\..\doc\install\Documentation\ko_KR\html\SysAdminGd\*"
960    goto DoneLanguage
961    
962 DoPortugueseBR:
963    SetOutPath "$INSTDIR\Documentation"
964    File "..\..\doc\install\Documentation\pt_BR\README.TXT"
965    SetOutPath "$INSTDIR\Documentation\html"
966    File "..\..\doc\install\Documentation\pt_BR\html\*"
967    ;SetOutPath "$INSTDIR\Documentation\html\CmdRef"
968    ;File "..\..\doc\install\Documentation\pt_BR\html\CmdRef\*"
969    SetOutPath "$INSTDIR\Documentation\html\InstallGd"
970    File "..\..\doc\install\Documentation\pt_BR\html\InstallGd\*"
971    SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes"
972    File "..\..\doc\install\Documentation\pt_BR\html\ReleaseNotes\*"
973    ;SetOutPath "$INSTDIR\Documentation\html\SysAdminGd"
974    ;File "..\..\doc\install\Documentation\pt_BR\html\SysAdminGd\*"
975    goto DoneLanguage
976
977 DoSimpChinese:
978    SetOutPath "$INSTDIR\Documentation"
979    File "..\..\doc\install\Documentation\zh_CN\README.TXT"
980    SetOutPath "$INSTDIR\Documentation\html"
981    File "..\..\doc\install\Documentation\zh_CN\html\*"
982    ;SetOutPath "$INSTDIR\Documentation\html\CmdRef"
983    ;File "..\..\doc\install\Documentation\zh_CN\html\CmdRef\*"
984    SetOutPath "$INSTDIR\Documentation\html\InstallGd"
985    File "..\..\doc\install\Documentation\zh_CN\html\InstallGd\*"
986    SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes"
987    File "..\..\doc\install\Documentation\zh_CN\html\ReleaseNotes\*"
988    ;SetOutPath "$INSTDIR\Documentation\html\SysAdminGd"
989    ;File "..\..\doc\install\Documentation\zh_CN\html\SysAdminGd\*"
990    goto DoneLanguage
991    
992 DoTradChinese:
993    SetOutPath "$INSTDIR\Documentation"
994    File "..\..\doc\install\Documentation\zh_TW\README.TXT"
995    SetOutPath "$INSTDIR\Documentation\html"
996    File "..\..\doc\install\Documentation\zh_TW\html\*"
997    ;SetOutPath "$INSTDIR\Documentation\html\CmdRef"
998    ;File "..\..\doc\install\Documentation\zh_TW\html\CmdRef\*"
999    SetOutPath "$INSTDIR\Documentation\html\InstallGd"
1000    File "..\..\doc\install\Documentation\zh_TW\html\InstallGd\*"
1001    SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes"
1002    File "..\..\doc\install\Documentation\zh_TW\html\ReleaseNotes\*"
1003    ;SetOutPath "$INSTDIR\Documentation\html\SysAdminGd"
1004    ;File "..\..\doc\install\Documentation\zh_TW\html\SysAdminGd\*"
1005    goto DoneLanguage
1006    
1007    
1008 DoneLanguage:
1009    ;Store install folder
1010   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Supplemental Documentation" "" $INSTDIR
1011   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Supplemental Documentation\CurrentVersion" "VersionString" ${MUI_VERSION}
1012   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Supplemental Documentation\CurrentVersion" "MajorVersion" ${MUI_MAJORVERSION}
1013   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Supplemental Documentation\CurrentVersion" "MinorVersion" ${MUI_MINORVERSION}
1014   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Supplemental Documentation\CurrentVersion" "PatchLevel" ${MUI_PATCHLEVEL}
1015   WriteRegStr HKLM "${AFS_REGKEY_ROOT}\AFS Supplemental Documentation\${MUI_VERSION}" "VersionString" ${MUI_VERSION}
1016   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Supplemental Documentation\${MUI_VERSION}" "MajorVersion" ${MUI_MAJORVERSION}
1017   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Supplemental Documentation\${MUI_VERSION}" "MinorVersion" ${MUI_MINORVERSION}
1018   WriteRegDWORD HKLM "${AFS_REGKEY_ROOT}\AFS Supplemental Documentation\${MUI_VERSION}" "PatchLevel" ${MUI_PATCHLEVEL}
1019
1020   ; Write start menu shortcut
1021   SetOutPath "$SMPROGRAMS\OpenAFS"
1022   CreateShortCut "$SMPROGRAMS\OpenAFS\Documentation.lnk" "$INSTDIR\Documentation\html\index.htm"
1023   
1024   
1025   WriteUninstaller "$INSTDIR\Uninstall.exe"
1026   CreateShortCut "$SMPROGRAMS\OpenAFS\Uninstall OpenAFS.lnk" "$INSTDIR\Uninstall.exe"
1027 SectionEnd  
1028   
1029 ;Display the Finish header
1030 ;Insert this macro after the sections if you are not using a finish page
1031 ;!insertmacro MUI_SECTIONS_FINISHHEADER
1032
1033 ;--------------------------------
1034 ;Installer Functions
1035
1036 Function .onInit
1037
1038   !insertmacro MUI_LANGDLL_DISPLAY
1039   
1040   ; Set the default install options
1041         Push $0
1042
1043    Call IsUserAdmin
1044    Pop $R0
1045    StrCmp $R0 "true" contInstall
1046
1047    MessageBox MB_OK|MB_ICONSTOP|MB_TOPMOST "You must be an administrator of this machine to install this software."
1048    Abort
1049    
1050 contInstall:
1051    Call ShouldClientInstall
1052    Pop $R2
1053    
1054    StrCmp $R2 "0" NoClient
1055    StrCmp $R2 "2" UpgradeClient
1056    
1057         StrCpy $1 ${secClient} ; Gotta remember which section we are at now...
1058         SectionGetFlags ${secClient} $0
1059         IntOp $0 $0 | ${SF_SELECTED}
1060         SectionSetFlags ${secClient} $0
1061     ;# !insertmacro SelectSection ${secClient}
1062    goto skipClient
1063 NoClient:
1064         StrCpy $1 ${secClient} ; Gotta remember which section we are at now...
1065         SectionGetFlags ${secClient} $0
1066         IntOp $0 $0 | ${SECTION_OFF}
1067         SectionSetFlags ${secClient} $0
1068    goto skipClient
1069 UpgradeClient:
1070         SectionGetFlags ${secClient} $0
1071         IntOp $0 $0 | ${SF_SELECTED}
1072         SectionSetFlags ${secClient} $0
1073    SectionSetText ${secClient} $(UPGRADE_CLIENT)
1074    goto skipClient
1075
1076    
1077 skipClient:   
1078    
1079    
1080    Call IsServerInstalled
1081    Pop $R2
1082    StrCmp $R2 "0" NoServer
1083    
1084         SectionGetFlags ${secServer} $0
1085         IntOp $0 $0 & ${SF_SELECTED}
1086         SectionSetFlags ${secServer} $0
1087         ;# !insertmacro UnselectSection ${secServer}
1088    goto skipServer
1089
1090 NoServer:
1091         SectionGetFlags ${secServer} $0
1092         IntOp $0 $0 & ${SECTION_OFF}
1093         SectionSetFlags ${secServer} $0
1094         ;# !insertmacro UnselectSection ${secServer}
1095    
1096 skipServer:   
1097         SectionGetFlags ${secControl} $0
1098         IntOp $0 $0 & ${SECTION_OFF}
1099         SectionSetFlags ${secControl} $0
1100         ;# !insertmacro UnselectSection ${secControl}
1101
1102         SectionGetFlags ${secDocs} $0
1103         IntOp $0 $0 | ${SF_SELECTED}
1104         SectionSetFlags ${secDocs} $0
1105         ;# !insertmacro UnselectSection ${secDocs}
1106
1107         Pop $0
1108   
1109   
1110   
1111   GetTempFilename $0
1112   File /oname=$0 CellServPage.ini
1113   GetTempFilename $1
1114   File /oname=$1 AFSCell.ini
1115   ;File /oname=$1 ConfigURL.ini
1116   
1117 FunctionEnd
1118
1119
1120
1121
1122
1123 ;--------------------------------
1124 ; These are our cleanup functions
1125 Function .onInstFailed
1126 Delete $0
1127
1128 FunctionEnd
1129
1130 Function .onInstSuccess
1131 Delete $0
1132
1133 FunctionEnd
1134
1135
1136 ;--------------------------------
1137 ;Descriptions
1138
1139 !insertmacro MUI_FUNCTIONS_DESCRIPTION_BEGIN
1140   !insertmacro MUI_DESCRIPTION_TEXT ${SecServer} $(DESC_SecServer)
1141   !insertmacro MUI_DESCRIPTION_TEXT ${SecClient} $(DESC_SecClient)
1142   !insertmacro MUI_DESCRIPTION_TEXT ${SecControl} $(DESC_SecControl)
1143   !insertmacro MUI_DESCRIPTION_TEXT ${SecDocs} $(DESC_SecDocs)
1144 !insertmacro MUI_FUNCTIONS_DESCRIPTION_END
1145  
1146 ;--------------------------------
1147 ;Uninstaller Section
1148
1149 Section "Uninstall"
1150   
1151   SetShellVarContext all
1152   ; Stop the running processes
1153   GetTempFileName $R0
1154   File /oname=$R0 "${AFS_WININSTALL_DIR}\Killer.exe"
1155   nsExec::Exec '$R0 afscreds.exe'
1156   nsExec::Exec '$R0 krbcc32s.exe'
1157
1158   ; Delete the AFS service
1159   GetTempFileName $R0
1160   File /oname=$R0 "${AFS_WININSTALL_DIR}\Service.exe"
1161   nsExec::Exec "net stop TransarcAFSDaemon"
1162   nsExec::Exec "net stop TransarcAFSServer"
1163   nsExec::Exec '$R0 u TransarcAFSDaemon'
1164   nsExec::Exec '$R0 u TransarcAFSServer'
1165   Delete $R0
1166   
1167   Push "$INSTDIR\Client\Program"
1168   Call un.RemoveFromPath
1169   Push "$INSTDIR\Common"
1170   Call un.RemoveFromPath
1171   Push "$INSTDIR\kfw\bin"
1172   Call un.RemoveFromPath
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 CL1310
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 CL1310
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 CL1310
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 CL1310
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   ;Remove KfW files
1345   Delete /REBOOTOK "$INSTDIR\kfw\bin\*"
1346   RMDIR  /r "$INSTDIR\kfw\bin"
1347   Delete /REBOOTOK "$INSTDIR\kfw\doc\*"
1348   RMDIR  /r "$INSTDIR\kfw\doc"
1349   RMDIR  /r "$INSTDIR\kfw"
1350
1351   Delete "$SMPROGRAMS\OpenAFS\Documentation.lnk"
1352
1353   ; Remove control center
1354   Delete /REBOOTOK "$INSTDIR\Control Center\TaAfsAccountManager.exe"
1355   Delete /REBOOTOK "$INSTDIR\Control Center\TaAfsAdmSvr.exe"
1356   Delete /REBOOTOK "$INSTDIR\Control Center\TaAfsServerManager.exe"
1357   Delete /REBOOTOK "$INSTDIR\Control Center\CCUninst.dll"
1358 !ifdef DEBUG
1359   Delete /REBOOTOK "$INSTDIR\Control Center\TaAfsAccountManager.pdb"
1360   Delete /REBOOTOK "$INSTDIR\Control Center\TaAfsAdmSvr.pdb"
1361   Delete /REBOOTOK "$INSTDIR\Control Center\TaAfsServerManager.pdb"
1362 !endif
1363   RMDir  "$INSTDIR\Control Center"
1364   
1365   Delete "$SMPROGRAMS\OpenAFS\Uninstall OpenAFS.lnk"
1366   Delete "$SMPROGRAMS\OpenAFS\Client\Authentication.lnk"
1367   Delete "$SMPROGRAMS\OpenAFS\Control Center\Account Manager.lnk"
1368   Delete "$SMPROGRAMS\OpenAFS\Control Center\Server Manager.lnk"
1369   RMDIR "$SMPROGRAMS\OpenAFS\Control Center"
1370   RMDir /r "$SMPROGRAMS\OpenAFS\Client"
1371   RMDir /r "$SMPROGRAMS\OpenAFS"
1372   Delete "$SMSTARTUP\AFS Credentials.lnk"
1373   
1374   ReadRegStr $R0 HKLM "SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon" "CachePath"
1375   IfErrors +2
1376   Delete "$R0\AFSCache"
1377   Delete "C:\AFSCache"
1378
1379   DeleteRegKey HKCR "*\shellex\ContextMenuHandlers\AFS Client Shell Extension"
1380   DeleteRegKey HKCR "CLSID\{DC515C27-6CAC-11D1-BAE7-00C04FD140D2}\InprocServer32"
1381   DeleteRegKey HKCR "CLSID\{DC515C27-6CAC-11D1-BAE7-00C04FD140D2}"
1382   DeleteRegKey HKCR "FOLDER\shellex\ContextMenuHandlers\AFS Client Shell Extension"
1383   DeleteRegValue HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved" "{DC515C27-6CAC-11D1-BAE7-00C04FD140D2}"
1384
1385   DeleteRegKey HKLM "${AFS_REGKEY_ROOT}\AFS Client\CurrentVersion"
1386   DeleteRegKey HKLM "${AFS_REGKEY_ROOT}\AFS Client"
1387   DeleteRegKey HKLM "${AFS_REGKEY_ROOT}\AFS Supplemental Documentation\CurrentVersion"
1388   DeleteRegKey HKLM "${AFS_REGKEY_ROOT}\AFS Supplemental Documentation"
1389   DeleteRegKey HKLM "${AFS_REGKEY_ROOT}\AFS Control Center\CurrentVersion"
1390   DeleteRegKey HKLM "${AFS_REGKEY_ROOT}\AFS Control Center"
1391   DeleteRegKey HKLM "${AFS_REGKEY_ROOT}\AFS Server\CurrentVersion"
1392   DeleteRegKey HKLM "${AFS_REGKEY_ROOT}\AFS Server"
1393   DeleteRegKey /ifempty HKLM "${AFS_REGKEY_ROOT}"
1394   DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenAFS"
1395   DeleteRegValue HKLM "SYSTEM\CurrentControlSet\Services\NetBT\Parameters" "SmbDeviceEnabled"
1396  
1397   RMDir  "$INSTDIR"
1398
1399   ;Display the Finish header
1400   !insertmacro MUI_UNFINISHHEADER
1401
1402 SectionEnd
1403
1404 ;--------------------------------
1405 ;Uninstaller Functions
1406
1407 Function un.onInit
1408
1409   ;Get language from registry
1410   ReadRegStr $LANGUAGE HKCU "Software\OpenAFS\AFS" "Installer Language"
1411
1412 FunctionEnd
1413
1414 Function un.onUninstSuccess
1415
1416    MessageBox MB_OK "Please reboot your machine to complete uninstallation of the software"
1417
1418 FunctionEnd
1419
1420 ;------------------------------
1421 ; Get the CellServDB file from the Internet
1422
1423 Function afs.GetCellServDB
1424
1425 ;Check if we should download CellServDB
1426 ;ReadINIStr $R0 $0 "Field 4" "State"
1427 ;StrCmp $R0 "0" CheckIncl
1428
1429    ReadINIStr $R0 $0 "Field 5" "State"
1430    NSISdl::download $R0 "$WINDIR\afsdcell.ini"
1431    Pop $R0 ;Get the return value
1432    StrCmp $R0 "success" +2
1433       MessageBox MB_OK|MB_ICONSTOP "Download failed: $R0"
1434    goto done
1435 CheckIncl:
1436    ReadINIStr $R0 $0 "Field 3" "State"
1437    StrCmp $R0 "0" CheckOther
1438    SetOutPath "$WINDIR"
1439    File "afsdcell.ini"
1440    goto done
1441    
1442 CheckOther:
1443    ReadINIStr $R0 $0 "Field 7" "State"
1444    CopyFiles $R0 "$WINDIR\afsdcell.ini"
1445    
1446 done:
1447
1448 FunctionEnd
1449
1450
1451
1452 ;-------------------------------
1453 ;Do the page to get the CellServDB
1454
1455 Function AFSPageGetCellServDB
1456   ; Set the install options here
1457   
1458 startOver:
1459   WriteINIStr $0 "Field 2" "Flags" "DISABLED"
1460   WriteINIStr $0 "Field 3" "State" "1"
1461   
1462   !insertmacro MUI_HEADER_TEXT "CellServDB Configuration" "Please choose a method for installing the CellServDB file:" 
1463   InstallOptions::dialog $0
1464   Pop $R1
1465   StrCmp $R1 "cancel" exit
1466   StrCmp $R1 "back" done
1467   StrCmp $R1 "success" done
1468 exit: Quit
1469 done:
1470
1471    ; Check that if a file is set, a filename is entered...
1472    ReadINIStr $R0 $0 "Field 6" "State"
1473    StrCmp $R0 "1" CheckFileName Skip
1474 CheckFileName:
1475    ReadINIStr $R0 $0 "Field 7" "State"
1476    IfFileExists $R0 Skip
1477
1478    MessageBox MB_OK|MB_ICONSTOP $(CellError)
1479    WriteINIStr $0 "Field 6" "State" "0"
1480    goto startOver
1481    
1482    Skip:
1483    
1484 FunctionEnd
1485
1486
1487 Function AFSPageGetCellName
1488    Call IsSilent
1489    Pop $R1
1490    StrCmp $R1 "/S" exit
1491   !insertmacro MUI_HEADER_TEXT "Cell Name Configuration" "Please enter the name for your default cell:" 
1492   InstallOptions::dialog $1
1493   Pop $R1
1494   StrCmp $R1 "cancel" exit
1495   StrCmp $R1 "back" done
1496   StrCmp $R1 "success" done
1497 exit: Quit
1498 done:
1499 FunctionEnd
1500
1501 ;-------------
1502 ; Common install routines for each module
1503 Function AFSCommon.Install
1504
1505 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenAFS" "DisplayName" "OpenAFS for Windows"
1506 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenAFS" "UninstallString" "$INSTDIR\uninstall.exe"
1507 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenAFS" "DisplayVersion" "${MUI_VERSION}"
1508 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenAFS" "URLInfoAbout" "http://www.openafs.org/"
1509
1510 FunctionEnd
1511
1512
1513 ; Check if install should be silent
1514 Function IsSilent
1515   Push $0
1516   Push $CMDLINE
1517   Push "/S"
1518   Call StrStr
1519   Pop $0
1520   StrCpy $0 $0 3
1521   StrCmp $0 "/S" silent
1522   StrCmp $0 "/S " silent
1523     StrCpy $0 0
1524     Goto notsilent
1525   silent: StrCpy $0 1
1526   notsilent: Exch $0
1527 FunctionEnd
1528
1529
1530
1531 ; Check if uninstall should be silent
1532 Function un.IsSilent
1533   Push $0
1534   Push $CMDLINE
1535   Push "/S"
1536   Call un.StrStr
1537   Pop $0
1538   StrCpy $0 $0 3
1539   StrCmp $0 "/S" silent
1540   StrCmp $0 "/S " silent
1541     StrCpy $0 0
1542     Goto notsilent
1543   silent: StrCpy $0 1
1544   notsilent: Exch $0
1545 FunctionEnd
1546
1547
1548
1549 ; StrStr function
1550 Function StrStr
1551   Exch $R1 ; st=haystack,old$R1, $R1=needle
1552   Exch    ; st=old$R1,haystack
1553   Exch $R2 ; st=old$R1,old$R2, $R2=haystack
1554   Push $R3
1555   Push $R4
1556   Push $R5
1557   StrLen $R3 $R1
1558   StrCpy $R4 0
1559   ; $R1=needle
1560   ; $R2=haystack
1561   ; $R3=len(needle)
1562   ; $R4=cnt
1563   ; $R5=tmp
1564   loop:
1565     StrCpy $R5 $R2 $R3 $R4
1566     StrCmp $R5 $R1 done
1567     StrCmp $R5 "" done
1568     IntOp $R4 $R4 + 1
1569     Goto loop
1570   done:
1571   StrCpy $R1 $R2 "" $R4
1572   Pop $R5
1573   Pop $R4
1574   Pop $R3
1575   Pop $R2
1576   Exch $R1
1577 FunctionEnd
1578
1579 ;-------------------
1580 ; Get the currently installed version and place it on the stack
1581 ; Modifies: Nothing
1582 Function GetInstalledVersion
1583    Push $R0
1584    Push $R1
1585    Push $R4
1586    
1587    ReadRegDWORD $R0 HKLM "Software\TransarcCorporation\$R2\CurrentVersion" "VersionString"
1588    StrCmp $R0 "" NotTransarc
1589    
1590    
1591 NotTransarc:
1592    ReadRegDWORD $R0 HKLM "${AFS_REGKEY_ROOT}\$R2\CurrentVersion" "VersionString"
1593    StrCmp $R0 "" done
1594    
1595 done:
1596    Pop $R4
1597    Pop $R1
1598    Exch $R0
1599 FunctionEnd
1600
1601
1602 ;-------------------------------
1603 ; Check if the client should be checked for default install
1604 Function ShouldClientInstall
1605    Push $R0
1606    StrCpy $R2 "Client"
1607    Call GetInstalledVersion
1608    Pop $R0
1609    
1610    StrCmp $R0 "" NotInstalled
1611    
1612    StrCpy $R0 "0"
1613    Exch $R0
1614    goto end
1615    
1616 NotInstalled:
1617    StrCpy $R0 "1"
1618    Exch $R0
1619 end:   
1620 FunctionEnd
1621
1622
1623 ; See if AFS Client is installed
1624 Function IsServerInstalled
1625    Push $R0
1626    StrCpy $R2 "AFS Server"
1627    Call GetInstalledVersion
1628    Pop $R0
1629    
1630    StrCmp $R0 "" NotInstalled
1631    
1632    StrCpy $R0 "1"
1633    Exch $R0
1634    goto end
1635    
1636 NotInstalled:
1637    StrCpy $R0 "0"
1638    Exch $R0
1639 end:   
1640 FunctionEnd
1641
1642
1643 ; See if AFS Server is installed
1644 Function IsClientInstalled
1645    Push $R0
1646    StrCpy $R2 "AFS Client"
1647    Call GetInstalledVersion
1648    Pop $R0
1649    
1650    StrCmp $R0 "" NotInstalled
1651    
1652    StrCpy $R0 "1"
1653    Exch $R0
1654    goto end
1655    
1656 NotInstalled:
1657    StrCpy $R0 "0"
1658    Exch $R0
1659 end:   
1660 FunctionEnd
1661
1662
1663
1664 ; See if AFS Documentation is installed
1665 Function IsDocumentationInstalled
1666    Push $R0
1667    StrCpy $R2 "AFS Supplemental Documentation"
1668    Call GetInstalledVersion
1669    Pop $R0
1670    
1671    StrCmp $R0 "" NotInstalled
1672    
1673    StrCpy $R0 "1"
1674    Exch $R0
1675    goto end
1676    
1677 NotInstalled:
1678    StrCpy $R0 "0"
1679    Exch $R0
1680 end:   
1681 FunctionEnd
1682
1683
1684 ; See if COntrol Center is installed
1685 Function IsControlInstalled
1686    Push $R0
1687    StrCpy $R2 "Control_Center"
1688    Call GetInstalledVersion
1689    Pop $R0
1690    
1691    StrCmp $R0 "" NotInstalled
1692    
1693    StrCpy $R0 "1"
1694    Exch $R0
1695    goto end
1696    
1697 NotInstalled:
1698    StrCpy $R0 "0"
1699    Exch $R0
1700 end:   
1701 FunctionEnd
1702
1703
1704 ; GetParameters
1705 ; input, none
1706 ; output, top of stack (replaces, with e.g. whatever)
1707 ; modifies no other variables.
1708
1709 Function GetParameters
1710   Push $R0
1711   Push $R1
1712   Push $R2
1713   StrCpy $R0 $CMDLINE 1
1714   StrCpy $R1 '"'
1715   StrCpy $R2 1
1716   StrCmp $R0 '"' loop
1717     StrCpy $R1 ' ' ; we're scanning for a space instead of a quote
1718   loop:
1719     StrCpy $R0 $CMDLINE 1 $R2
1720     StrCmp $R0 $R1 loop2
1721     StrCmp $R0 "" loop2
1722     IntOp $R2 $R2 + 1
1723     Goto loop
1724   loop2:
1725     IntOp $R2 $R2 + 1
1726     StrCpy $R0 $CMDLINE 1 $R2
1727     StrCmp $R0 " " loop2
1728   StrCpy $R0 $CMDLINE "" $R2
1729   Pop $R2
1730   Pop $R1
1731   Exch $R0
1732 FunctionEnd
1733
1734
1735 ;Check to see if any AFS component is installed
1736 Function IsAnyAFSInstalled
1737
1738 FunctionEnd
1739
1740
1741 ;Install English Language Files
1742 Function AFSLangFiles
1743    ; Common files
1744    SetOutPath "$INSTDIR\Common"
1745    File "${AFS_CLIENT_BUILDDIR}\afs_config.exe"
1746    File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext.dll"
1747    File "${AFS_SERVER_BUILDDIR}\afsadminutil.dll"
1748    File "${AFS_DESTDIR}\lib\afsauthent.dll"
1749    File "${AFS_DESTDIR}\lib\afspthread.dll"
1750    File "${AFS_DESTDIR}\lib\afsrpc.dll"
1751    File "${AFS_SERVER_BUILDDIR}\afsclientadmin.dll"
1752    File "${AFS_SERVER_BUILDDIR}\afsprocmgmt.dll"
1753    File "${AFS_SERVER_BUILDDIR}\afsvosadmin.dll"
1754    File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib.dll"
1755    File "${AFS_SERVER_BUILDDIR}\afsvosadmin.dll"
1756    File "${AFS_SERVER_BUILDDIR}\afsbosadmin.dll"
1757    File "${AFS_SERVER_BUILDDIR}\afscfgadmin.dll"
1758    File "${AFS_SERVER_BUILDDIR}\afskasadmin.dll"
1759    File "${AFS_SERVER_BUILDDIR}\afsptsadmin.dll"
1760 !IFDEF DEBUG
1761 !IFDEF CL1310
1762    File "${AFS_WININSTALL_DIR}\msvcr71d.dll"
1763    File "${AFS_WININSTALL_DIR}\msvcr71d.pdb"
1764 !ELSE
1765    File "${AFS_WININSTALL_DIR}\msvcrtd.dll"
1766    File "${AFS_WININSTALL_DIR}\msvcrtd.pdb"
1767 !ENDIF
1768 !ELSE
1769 !IFDEF CL1310
1770    File "${AFS_WININSTALL_DIR}\msvcr71.dll"
1771 !ELSE
1772    File "${AFS_WININSTALL_DIR}\msvcrt.dll"
1773 !ENDIF
1774 !ENDIF
1775
1776 !ifdef DEBUG
1777    File "${AFS_CLIENT_BUILDDIR}\afs_config.pdb"
1778    File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext.pdb"
1779    File "${AFS_SERVER_BUILDDIR}\afsadminutil.pdb"
1780    File "${AFS_DESTDIR}\lib\afsauthent.pdb"
1781    File "${AFS_DESTDIR}\lib\afspthread.pdb"
1782    File "${AFS_DESTDIR}\lib\afsrpc.pdb"
1783    File "${AFS_SERVER_BUILDDIR}\afsclientadmin.pdb"
1784    File "${AFS_SERVER_BUILDDIR}\afsprocmgmt.pdb"
1785    File "${AFS_SERVER_BUILDDIR}\afsvosadmin.pdb"
1786    File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib.pdb"
1787    File "${AFS_SERVER_BUILDDIR}\afsvosadmin.pdb"
1788    File "${AFS_SERVER_BUILDDIR}\afsbosadmin.pdb"
1789    File "${AFS_SERVER_BUILDDIR}\afscfgadmin.pdb"
1790    File "${AFS_SERVER_BUILDDIR}\afskasadmin.pdb"
1791    File "${AFS_SERVER_BUILDDIR}\afsptsadmin.pdb"
1792 !endif
1793
1794    StrCmp $LANGUAGE ${LANG_ENGLISH} DoEnglish
1795    StrCmp $LANGUAGE ${LANG_GERMAN} DoGerman
1796    StrCmp $LANGUAGE ${LANG_SPANISH} DoSpanish
1797    StrCmp $LANGUAGE ${LANG_JAPANESE} DoJapanese
1798    ;StrCmp $LANGUAGE ${LANG_KOREAN} DoKorean
1799    StrCmp $LANGUAGE ${LANG_PORTUGUESEBR} DoPortugueseBR
1800    StrCmp $LANGUAGE ${LANG_SIMPCHINESE} DoSimpChinese
1801    StrCmp $LANGUAGE ${LANG_TRADCHINESE} DoTradChinese
1802    
1803 DoEnglish:
1804
1805    SetOutPath "$INSTDIR\Documentation"
1806    File "..\..\doc\install\Documentation\en_US\README.TXT"
1807
1808    SetOutPath "$INSTDIR\Common"
1809    File "${AFS_CLIENT_BUILDDIR}\afs_config_1033.dll"
1810    File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1033.dll"
1811    File "${AFS_CLIENT_BUILDDIR}\afscreds_1033.dll"
1812    File "${AFS_CLIENT_BUILDDIR}\afs_cpa_1033.dll"
1813    File "${AFS_SERVER_BUILDDIR}\afseventmsg_1033.dll"
1814    ;File "${AFS_SERVER_BUILDDIR}\afs_setup_utils_1033.dll"
1815    File "${AFS_SERVER_BUILDDIR}\afsserver_1033.dll"
1816    File "${AFS_SERVER_BUILDDIR}\afssvrcfg_1033.dll"
1817    File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1033.dll"
1818    File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1033.dll"
1819    File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1033.dll"
1820    File "..\..\doc\help\en_US\afs-cc.CNT"
1821    File "..\..\doc\help\en_US\afs-cc.hlp"
1822    File "..\..\doc\help\en_US\afs-light.CNT"
1823    File "..\..\doc\help\en_US\afs-light.hlp"
1824    File "..\..\doc\help\en_US\afs-nt.CNT"
1825    File "..\..\doc\help\en_US\afs-nt.HLP"
1826    File "..\..\doc\help\en_US\taafscfg.CNT"
1827    File "..\..\doc\help\en_US\taafscfg.hlp"
1828    File "..\..\doc\help\en_US\taafssvrmgr.CNT"
1829    File "..\..\doc\help\en_US\taafssvrmgr.hlp"
1830    File "..\..\doc\help\en_US\taafsusrmgr.CNT"
1831    File "..\..\doc\help\en_US\taafsusrmgr.hlp"
1832    goto done
1833
1834 DoGerman:
1835
1836    SetOutPath "$INSTDIR\Documentation"
1837    File "..\..\doc\install\Documentation\de_DE\README.TXT"
1838
1839    SetOutPath "$INSTDIR\Common"
1840    File "${AFS_CLIENT_BUILDDIR}\afs_config_1032.dll"
1841    File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1032.dll"
1842    File "${AFS_CLIENT_BUILDDIR}\afscreds_1032.dll"
1843    File "${AFS_CLIENT_BUILDDIR}\afs_cpa_1032.dll"
1844    File "${AFS_SERVER_BUILDDIR}\afseventmsg_1032.dll"
1845    ;File "${AFS_SERVER_BUILDDIR}\afs_setup_utils_1032.dll"
1846    File "${AFS_SERVER_BUILDDIR}\afsserver_1032.dll"
1847    File "${AFS_SERVER_BUILDDIR}\afssvrcfg_1032.dll"
1848    File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1032.dll"
1849    File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1032.dll"
1850    File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1032.dll"
1851    File "..\..\doc\help\de_DE\afs-cc.CNT"
1852    File "..\..\doc\help\de_DE\afs-cc.hlp"
1853    File "..\..\doc\help\de_DE\afs-light.CNT"
1854    File "..\..\doc\help\de_DE\afs-light.hlp"
1855    File "..\..\doc\help\de_DE\afs-nt.CNT"
1856    File "..\..\doc\help\de_DE\afs-nt.HLP"
1857    File "..\..\doc\help\de_DE\taafscfg.CNT"
1858    File "..\..\doc\help\de_DE\taafscfg.hlp"
1859    File "..\..\doc\help\de_DE\taafssvrmgr.CNT"
1860    File "..\..\doc\help\de_DE\taafssvrmgr.hlp"
1861    File "..\..\doc\help\de_DE\taafsusrmgr.CNT"
1862    File "..\..\doc\help\de_DE\taafsusrmgr.hlp"
1863
1864 !ifdef DEBUG
1865    ;File "${AFS_CLIENT_BUILDDIR}\afs_config_1033.pdb"
1866    ;File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1033.pdb"
1867    ;File "${AFS_CLIENT_BUILDDIR}\afscreds_1033.pdb"
1868    ;File "${AFS_CLIENT_BUILDDIR}\afs_cpa_1033.pdb"
1869    ;File "${AFS_SERVER_BUILDDIR}\afseventmsg_1033.pdb"
1870    ;File "${AFS_SERVER_BUILDDIR}\afsserver_1033.pdb"
1871    ;File "${AFS_SERVER_BUILDDIR}\afssvrcfg_1033.pdb"
1872    ;File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1033.pdb"
1873    ;File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1033.pdb"
1874    ;File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1033.pdb"
1875 !IFDEF CL1310
1876    File "${AFS_WININSTALL_DIR}\msvcr71d.dll"
1877    File "${AFS_WININSTALL_DIR}\msvcr71d.pdb"
1878 !ELSE
1879    File "${AFS_WININSTALL_DIR}\msvcrtd.dll"
1880    File "${AFS_WININSTALL_DIR}\msvcrtd.pdb"
1881 !ENDIF
1882 !endif
1883    goto done   
1884
1885 DoSpanish:
1886
1887    SetOutPath "$INSTDIR\Documentation"
1888    File "..\..\doc\install\Documentation\es_ES\README.TXT"
1889
1890    SetOutPath "$INSTDIR\Common"
1891    File "${AFS_CLIENT_BUILDDIR}\afs_config_1034.dll"
1892    File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1034.dll"
1893    File "${AFS_CLIENT_BUILDDIR}\afscreds_1034.dll"
1894    File "${AFS_CLIENT_BUILDDIR}\afs_cpa_1034.dll"
1895    File "${AFS_SERVER_BUILDDIR}\afseventmsg_1034.dll"
1896    ;File "${AFS_SERVER_BUILDDIR}\afs_setup_utils_1034.dll"
1897    File "${AFS_SERVER_BUILDDIR}\afsserver_1034.dll"
1898    File "${AFS_SERVER_BUILDDIR}\afssvrcfg_1034.dll"
1899    File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1034.dll"
1900    File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1034.dll"
1901    File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1034.dll"
1902    File "..\..\doc\help\es_ES\afs-cc.CNT"
1903    File "..\..\doc\help\es_ES\afs-cc.hlp"
1904    File "..\..\doc\help\es_ES\afs-light.CNT"
1905    File "..\..\doc\help\es_ES\afs-light.hlp"
1906    File "..\..\doc\help\es_ES\afs-nt.CNT"
1907    File "..\..\doc\help\es_ES\afs-nt.HLP"
1908    File "..\..\doc\help\es_ES\taafscfg.CNT"
1909    File "..\..\doc\help\es_ES\taafscfg.hlp"
1910    File "..\..\doc\help\es_ES\taafssvrmgr.CNT"
1911    File "..\..\doc\help\es_ES\taafssvrmgr.hlp"
1912    File "..\..\doc\help\es_ES\taafsusrmgr.CNT"
1913    File "..\..\doc\help\es_ES\taafsusrmgr.hlp"
1914    goto done
1915
1916 DoJapanese:
1917
1918    SetOutPath "$INSTDIR\Documentation"
1919    File "..\..\doc\install\Documentation\ja_JP\README.TXT"
1920
1921    SetOutPath "$INSTDIR\Common"
1922    File "${AFS_CLIENT_BUILDDIR}\afs_config_1041.dll"
1923    File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1041.dll"
1924    File "${AFS_CLIENT_BUILDDIR}\afscreds_1041.dll"
1925    File "${AFS_CLIENT_BUILDDIR}\afs_cpa_1041.dll"
1926    File "${AFS_SERVER_BUILDDIR}\afseventmsg_1041.dll"
1927    ;File "${AFS_SERVER_BUILDDIR}\afs_setup_utils_1041.dll"
1928    File "${AFS_SERVER_BUILDDIR}\afsserver_1041.dll"
1929    File "${AFS_SERVER_BUILDDIR}\afssvrcfg_1041.dll"
1930    File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1041.dll"
1931    File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1041.dll"
1932    File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1041.dll"
1933    File "..\..\doc\help\ja_JP\afs-cc.CNT"
1934    File "..\..\doc\help\ja_JP\afs-cc.hlp"
1935    File "..\..\doc\help\ja_JP\afs-light.CNT"
1936    File "..\..\doc\help\ja_JP\afs-light.hlp"
1937    File "..\..\doc\help\ja_JP\afs-nt.CNT"
1938    File "..\..\doc\help\ja_JP\afs-nt.HLP"
1939    File "..\..\doc\help\ja_JP\taafscfg.CNT"
1940    File "..\..\doc\help\ja_JP\taafscfg.hlp"
1941    File "..\..\doc\help\ja_JP\taafssvrmgr.CNT"
1942    File "..\..\doc\help\ja_JP\taafssvrmgr.hlp"
1943    File "..\..\doc\help\ja_JP\taafsusrmgr.CNT"
1944    File "..\..\doc\help\ja_JP\taafsusrmgr.hlp"
1945    goto done
1946    
1947 DoKorean:
1948
1949    SetOutPath "$INSTDIR\Documentation"
1950    File "..\..\doc\install\Documentation\ko_KR\README.TXT"
1951
1952    SetOutPath "$INSTDIR\Common"
1953    File "${AFS_CLIENT_BUILDDIR}\afs_config_1042.dll"
1954    File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1042.dll"
1955    File "${AFS_CLIENT_BUILDDIR}\afscreds_1042.dll"
1956    File "${AFS_CLIENT_BUILDDIR}\afs_cpa_1042.dll"
1957    File "${AFS_SERVER_BUILDDIR}\afseventmsg_1042.dll"
1958    ;File "${AFS_SERVER_BUILDDIR}\afs_setup_utils_1042.dll"
1959    File "${AFS_SERVER_BUILDDIR}\afsserver_1042.dll"
1960    File "${AFS_SERVER_BUILDDIR}\afssvrcfg_1042.dll"
1961    File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1042.dll"
1962    File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1042.dll"
1963    File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1042.dll"
1964    File "..\..\doc\help\ko_KR\afs-cc.CNT"
1965    File "..\..\doc\help\ko_KR\afs-cc.hlp"
1966    File "..\..\doc\help\ko_KR\afs-light.CNT"
1967    File "..\..\doc\help\ko_KR\afs-light.hlp"
1968    File "..\..\doc\help\ko_KR\afs-nt.CNT"
1969    File "..\..\doc\help\ko_KR\afs-nt.HLP"
1970    File "..\..\doc\help\ko_KR\taafscfg.CNT"
1971    File "..\..\doc\help\ko_KR\taafscfg.hlp"
1972    File "..\..\doc\help\ko_KR\taafssvrmgr.CNT"
1973    File "..\..\doc\help\ko_KR\taafssvrmgr.hlp"
1974    File "..\..\doc\help\ko_KR\taafsusrmgr.CNT"
1975    File "..\..\doc\help\ko_KR\taafsusrmgr.hlp"
1976    goto done
1977
1978
1979 DoPortugueseBR:
1980
1981    SetOutPath "$INSTDIR\Documentation"
1982    File "..\..\doc\install\Documentation\pt_BR\README.TXT"
1983
1984    SetOutPath "$INSTDIR\Common"
1985    File "${AFS_CLIENT_BUILDDIR}\afs_config_1046.dll"
1986    File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1046.dll"
1987    File "${AFS_CLIENT_BUILDDIR}\afscreds_1046.dll"
1988    File "${AFS_CLIENT_BUILDDIR}\afs_cpa_1046.dll"
1989    File "${AFS_SERVER_BUILDDIR}\afseventmsg_1046.dll"
1990    ;File "${AFS_SERVER_BUILDDIR}\afs_setup_utils_1046.dll"
1991    File "${AFS_SERVER_BUILDDIR}\afsserver_1046.dll"
1992    File "${AFS_SERVER_BUILDDIR}\afssvrcfg_1046.dll"
1993    File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1046.dll"
1994    File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1046.dll"
1995    File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1046.dll"
1996    File "..\..\doc\help\pt_BR\afs-cc.CNT"
1997    File "..\..\doc\help\pt_BR\afs-cc.hlp"
1998    File "..\..\doc\help\pt_BR\afs-light.CNT"
1999    File "..\..\doc\help\pt_BR\afs-light.hlp"
2000    File "..\..\doc\help\pt_BR\afs-nt.CNT"
2001    File "..\..\doc\help\pt_BR\afs-nt.HLP"
2002    File "..\..\doc\help\pt_BR\taafscfg.CNT"
2003    File "..\..\doc\help\pt_BR\taafscfg.hlp"
2004    File "..\..\doc\help\pt_BR\taafssvrmgr.CNT"
2005    File "..\..\doc\help\pt_BR\taafssvrmgr.hlp"
2006    File "..\..\doc\help\pt_BR\taafsusrmgr.CNT"
2007    File "..\..\doc\help\pt_BR\taafsusrmgr.hlp"
2008    goto done
2009    
2010 DoSimpChinese:
2011
2012    SetOutPath "$INSTDIR\Documentation"
2013    File "..\..\doc\install\Documentation\zh_CN\README.TXT"
2014
2015    SetOutPath "$INSTDIR\Common"
2016    File "${AFS_CLIENT_BUILDDIR}\afs_config_2052.dll"
2017    File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_2052.dll"
2018    File "${AFS_CLIENT_BUILDDIR}\afscreds_2052.dll"
2019    File "${AFS_CLIENT_BUILDDIR}\afs_cpa_2052.dll"
2020    File "${AFS_SERVER_BUILDDIR}\afseventmsg_2052.dll"
2021    ;File "${AFS_SERVER_BUILDDIR}\afs_setup_utils_2052.dll"
2022    File "${AFS_SERVER_BUILDDIR}\afsserver_2052.dll"
2023    File "${AFS_SERVER_BUILDDIR}\afssvrcfg_2052.dll"
2024    File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_2052.dll"
2025    File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_2052.dll"
2026    File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_2052.dll"
2027    File "..\..\doc\help\zh_CN\afs-cc.CNT"
2028    File "..\..\doc\help\zh_CN\afs-cc.hlp"
2029    File "..\..\doc\help\zh_CN\afs-light.CNT"
2030    File "..\..\doc\help\zh_CN\afs-light.hlp"
2031    File "..\..\doc\help\zh_CN\afs-nt.CNT"
2032    File "..\..\doc\help\zh_CN\afs-nt.HLP"
2033    File "..\..\doc\help\zh_CN\taafscfg.CNT"
2034    File "..\..\doc\help\zh_CN\taafscfg.hlp"
2035    File "..\..\doc\help\zh_CN\taafssvrmgr.CNT"
2036    File "..\..\doc\help\zh_CN\taafssvrmgr.hlp"
2037    File "..\..\doc\help\zh_CN\taafsusrmgr.CNT"
2038    File "..\..\doc\help\zh_CN\taafsusrmgr.hlp"
2039    goto done
2040    
2041 DoTradChinese:
2042
2043    SetOutPath "$INSTDIR\Documentation"
2044    File "..\..\doc\install\Documentation\zh_TW\README.TXT"
2045
2046    SetOutPath "$INSTDIR\Common"
2047    File "${AFS_CLIENT_BUILDDIR}\afs_config_1028.dll"
2048    File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1028.dll"
2049    File "${AFS_CLIENT_BUILDDIR}\afscreds_1028.dll"
2050    File "${AFS_CLIENT_BUILDDIR}\afs_cpa_1028.dll"
2051    File "${AFS_SERVER_BUILDDIR}\afseventmsg_1028.dll"
2052    ;File "${AFS_SERVER_BUILDDIR}\afs_setup_utils_1028.dll"
2053    File "${AFS_SERVER_BUILDDIR}\afsserver_1028.dll"
2054    File "${AFS_SERVER_BUILDDIR}\afssvrcfg_1028.dll"
2055    File "${AFS_SERVER_BUILDDIR}\TaAfsAccountManager_1028.dll"
2056    File "${AFS_SERVER_BUILDDIR}\TaAfsAppLib_1028.dll"
2057    File "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1028.dll"
2058    File "..\..\doc\help\zh_TW\afs-cc.CNT"
2059    File "..\..\doc\help\zh_TW\afs-cc.hlp"
2060    File "..\..\doc\help\zh_TW\afs-light.CNT"
2061    File "..\..\doc\help\zh_TW\afs-light.hlp"
2062    File "..\..\doc\help\zh_TW\afs-nt.CNT"
2063    File "..\..\doc\help\zh_TW\afs-nt.HLP"
2064    File "..\..\doc\help\zh_TW\taafscfg.CNT"
2065    File "..\..\doc\help\zh_TW\taafscfg.hlp"
2066    File "..\..\doc\help\zh_TW\taafssvrmgr.CNT"
2067    File "..\..\doc\help\zh_TW\taafssvrmgr.hlp"
2068    File "..\..\doc\help\zh_TW\taafsusrmgr.CNT"
2069    File "..\..\doc\help\zh_TW\taafsusrmgr.hlp"
2070    goto done
2071    
2072 done:
2073 FunctionEnd
2074
2075
2076
2077 ;====================================================
2078 ; AddToPath - Adds the given dir to the search path.
2079 ;        Input - head of the stack
2080 ;        Note - Win9x systems requires reboot
2081 ;====================================================
2082 Function AddToPath
2083   Exch $0
2084   Push $1
2085   
2086   Call IsNT
2087   Pop $1
2088   StrCmp $1 1 AddToPath_NT
2089     ; Not on NT
2090     StrCpy $1 $WINDIR 2
2091     FileOpen $1 "$1\autoexec.bat" a
2092     FileSeek $1 0 END
2093     GetFullPathName /SHORT $0 $0
2094     FileWrite $1 "$\r$\nSET PATH=%PATH%;$0$\r$\n"
2095     FileClose $1
2096     Goto AddToPath_done
2097
2098   AddToPath_NT:
2099     ReadRegStr $1 HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "PATH"
2100     StrCmp $1 "" AddToPath_NTdoIt
2101       StrCpy $0 "$1;$0"
2102       Goto AddToPath_NTdoIt
2103     AddToPath_NTdoIt:
2104       WriteRegExpandStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "PATH" $0
2105       SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
2106   
2107   AddToPath_done:
2108     Pop $1
2109     Pop $0
2110 FunctionEnd
2111
2112 ;====================================================
2113 ; RemoveFromPath - Remove a given dir from the path
2114 ;     Input: head of the stack
2115 ;====================================================
2116 Function un.RemoveFromPath
2117   Exch $0
2118   Push $1
2119   Push $2
2120   Push $3
2121   Push $4
2122   
2123   Call un.IsNT
2124   Pop $1
2125   StrCmp $1 1 unRemoveFromPath_NT
2126     ; Not on NT
2127     StrCpy $1 $WINDIR 2
2128     FileOpen $1 "$1\autoexec.bat" r
2129     GetTempFileName $4
2130     FileOpen $2 $4 w
2131     GetFullPathName /SHORT $0 $0
2132     StrCpy $0 "SET PATH=%PATH%;$0"
2133     SetRebootFlag true
2134     Goto unRemoveFromPath_dosLoop
2135     
2136     unRemoveFromPath_dosLoop:
2137       FileRead $1 $3
2138       StrCmp $3 "$0$\r$\n" unRemoveFromPath_dosLoop
2139       StrCmp $3 "$0$\n" unRemoveFromPath_dosLoop
2140       StrCmp $3 "$0" unRemoveFromPath_dosLoop
2141       StrCmp $3 "" unRemoveFromPath_dosLoopEnd
2142       FileWrite $2 $3
2143       Goto unRemoveFromPath_dosLoop
2144     
2145     unRemoveFromPath_dosLoopEnd:
2146       FileClose $2
2147       FileClose $1
2148       StrCpy $1 $WINDIR 2
2149       Delete "$1\autoexec.bat"
2150       CopyFiles /SILENT $4 "$1\autoexec.bat"
2151       Delete $4
2152       Goto unRemoveFromPath_done
2153
2154   unRemoveFromPath_NT:
2155     StrLen $2 $0
2156     ReadRegStr $1 HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "PATH"
2157     Push $1
2158     Push $0
2159     Call un.StrStr ; Find $0 in $1
2160     Pop $0 ; pos of our dir
2161     IntCmp $0 -1 unRemoveFromPath_done
2162       ; else, it is in path
2163       StrCpy $3 $1 $0 ; $3 now has the part of the path before our dir
2164       IntOp $2 $2 + $0 ; $2 now contains the pos after our dir in the path (';')
2165       IntOp $2 $2 + 1 ; $2 now containts the pos after our dir and the semicolon.
2166       StrLen $0 $1
2167       StrCpy $1 $1 $0 $2
2168       StrCpy $3 "$3$1"
2169
2170       WriteRegExpandStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "PATH" $3
2171       SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
2172   
2173   unRemoveFromPath_done:
2174     Pop $4
2175     Pop $3
2176     Pop $2
2177     Pop $1
2178     Pop $0
2179 FunctionEnd
2180
2181 ;====================================================
2182 ; IsNT - Returns 1 if the current system is NT, 0
2183 ;        otherwise.
2184 ;     Output: head of the stack
2185 ;====================================================
2186 Function IsNT
2187   Push $0
2188   ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
2189   StrCmp $0 "" 0 IsNT_yes
2190   ; we are not NT.
2191   Pop $0
2192   Push 0
2193   Return
2194
2195   IsNT_yes:
2196     ; NT!!!
2197     Pop $0
2198     Push 1
2199 FunctionEnd
2200
2201 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2202 ; Uninstall sutff
2203 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2204
2205
2206 ;====================================================
2207 ; StrStr - Finds a given string in another given string.
2208 ;               Returns -1 if not found and the pos if found.
2209 ;          Input: head of the stack - string to find
2210 ;                      second in the stack - string to find in
2211 ;          Output: head of the stack
2212 ;====================================================
2213 Function un.StrStr
2214   Push $0
2215   Exch
2216   Pop $0 ; $0 now have the string to find
2217   Push $1
2218   Exch 2
2219   Pop $1 ; $1 now have the string to find in
2220   Exch
2221   Push $2
2222   Push $3
2223   Push $4
2224   Push $5
2225
2226   StrCpy $2 -1
2227   StrLen $3 $0
2228   StrLen $4 $1
2229   IntOp $4 $4 - $3
2230
2231   unStrStr_loop:
2232     IntOp $2 $2 + 1
2233     IntCmp $2 $4 0 0 unStrStrReturn_notFound
2234     StrCpy $5 $1 $3 $2
2235     StrCmp $5 $0 unStrStr_done unStrStr_loop
2236
2237   unStrStrReturn_notFound:
2238     StrCpy $2 -1
2239
2240   unStrStr_done:
2241     Pop $5
2242     Pop $4
2243     Pop $3
2244     Exch $2
2245     Exch 2
2246     Pop $0
2247     Pop $1
2248 FunctionEnd
2249
2250 ;====================================================
2251 ; IsNT - Returns 1 if the current system is NT, 0
2252 ;        otherwise.
2253 ;     Output: head of the stack
2254 ;====================================================
2255 Function un.IsNT
2256   Push $0
2257   ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
2258   StrCmp $0 "" 0 unIsNT_yes
2259   ; we are not NT.
2260   Pop $0
2261   Push 0
2262   Return
2263
2264   unIsNT_yes:
2265     ; NT!!!
2266     Pop $0
2267     Push 1
2268 FunctionEnd
2269
2270 ; AddSharedDLL
2271  ;
2272  ; Increments a shared DLLs reference count.
2273  ; Use by passing one item on the stack (the full path of the DLL).
2274  ;
2275  ; Usage:
2276  ;   Push $SYSDIR\myDll.dll
2277  ;   Call AddSharedDLL
2278  ;
2279
2280  Function AddSharedDLL
2281    Exch $R1
2282    Push $R0
2283    ReadRegDword $R0 HKLM Software\Microsoft\Windows\CurrentVersion\SharedDLLs $R1
2284    IntOp $R0 $R0 + 1
2285    WriteRegDWORD HKLM Software\Microsoft\Windows\CurrentVersion\SharedDLLs $R1 $R0
2286    Pop $R0
2287    Pop $R1
2288  FunctionEnd
2289
2290  
2291 ; un.RemoveSharedDLL
2292  ;
2293  ; Decrements a shared DLLs reference count, and removes if necessary.
2294  ; Use by passing one item on the stack (the full path of the DLL).
2295  ; Note: for use in the main installer (not the uninstaller), rename the
2296  ; function to RemoveSharedDLL.
2297  ;
2298  ; Usage:
2299  ;   Push $SYSDIR\myDll.dll
2300  ;   Call un.RemoveSharedDLL
2301  ;
2302
2303  Function un.RemoveSharedDLL
2304    Exch $R1
2305    Push $R0
2306    ReadRegDword $R0 HKLM Software\Microsoft\Windows\CurrentVersion\SharedDLLs $R1
2307    StrCmp $R0 "" remove
2308      IntOp $R0 $R0 - 1
2309      IntCmp $R0 0 rk rk uk
2310      rk:
2311        DeleteRegValue HKLM Software\Microsoft\Windows\CurrentVersion\SharedDLLs $R1
2312      goto Remove
2313      uk:
2314        WriteRegDWORD HKLM Software\Microsoft\Windows\CurrentVersion\SharedDLLs $R1 $R0
2315      Goto noremove
2316    remove:
2317      Delete /REBOOTOK $R1
2318    noremove:
2319    Pop $R0
2320    Pop $R1
2321  FunctionEnd
2322
2323  Function afs.InstallMSLoopback
2324    ;GetTempFileName $R0
2325    ;File /oname=$R0 "loopback_install.dll"
2326    ;nsExec::Exec "rundll32.exe $R0 doLoopBackEntry quiet"
2327    ;Call GetWindowsVersion
2328    ;Pop $R1
2329    ;StrCmp $R1 "2000" +1 +2
2330    ;nsExec::Exec "rundll32.exe $R0 disableLoopBackEntry"
2331    ;Delete $R0
2332 FunctionEnd
2333
2334
2335
2336 ; GetWindowsVersion
2337 ;
2338 ; Based on Yazno's function, http://yazno.tripod.com/powerpimpit/
2339 ; Updated by Joost Verburg
2340 ;
2341 ; Returns on top of stack
2342 ;
2343 ; Windows Version (95, 98, ME, NT x.x, 2000, XP, 2003)
2344 ; or
2345 ; '' (Unknown Windows Version)
2346 ;
2347 ; Usage:
2348 ;   Call GetWindowsVersion
2349 ;   Pop $R0
2350 ;   ; at this point $R0 is "NT 4.0" or whatnot
2351
2352 Function GetWindowsVersion
2353
2354   Push $R0
2355   Push $R1
2356
2357   ClearErrors
2358
2359   ReadRegStr $R0 HKLM \
2360   "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
2361
2362   IfErrors 0 lbl_winnt
2363   
2364   ; we are not NT
2365   ReadRegStr $R0 HKLM \
2366   "SOFTWARE\Microsoft\Windows\CurrentVersion" VersionNumber
2367
2368   StrCpy $R1 $R0 1
2369   StrCmp $R1 '4' 0 lbl_error
2370
2371   StrCpy $R1 $R0 3
2372
2373   StrCmp $R1 '4.0' lbl_win32_95
2374   StrCmp $R1 '4.9' lbl_win32_ME lbl_win32_98
2375
2376   lbl_win32_95:
2377     StrCpy $R0 '95'
2378   Goto lbl_done
2379
2380   lbl_win32_98:
2381     StrCpy $R0 '98'
2382   Goto lbl_done
2383
2384   lbl_win32_ME:
2385     StrCpy $R0 'ME'
2386   Goto lbl_done
2387
2388   lbl_winnt:
2389
2390   StrCpy $R1 $R0 1
2391
2392   StrCmp $R1 '3' lbl_winnt_x
2393   StrCmp $R1 '4' lbl_winnt_x
2394
2395   StrCpy $R1 $R0 3
2396
2397   StrCmp $R1 '5.0' lbl_winnt_2000
2398   StrCmp $R1 '5.1' lbl_winnt_XP
2399   StrCmp $R1 '5.2' lbl_winnt_2003 lbl_error
2400
2401   lbl_winnt_x:
2402     StrCpy $R0 "NT $R0" 6
2403   Goto lbl_done
2404
2405   lbl_winnt_2000:
2406     Strcpy $R0 '2000'
2407   Goto lbl_done
2408
2409   lbl_winnt_XP:
2410     Strcpy $R0 'XP'
2411   Goto lbl_done
2412
2413   lbl_winnt_2003:
2414     Strcpy $R0 '2003'
2415   Goto lbl_done
2416
2417   lbl_error:
2418     Strcpy $R0 ''
2419   lbl_done:
2420
2421   Pop $R1
2422   Exch $R0
2423
2424 FunctionEnd
2425
2426
2427 ; Author: Lilla (lilla@earthlink.net) 2003-06-13
2428 ; function IsUserAdmin uses plugin \NSIS\PlusgIns\UserInfo.dll
2429 ; This function is based upon code in \NSIS\Contrib\UserInfo\UserInfo.nsi
2430 ; This function was tested under NSIS 2 beta 4 (latest CVS as of this writing).
2431 ;
2432 ; Usage:
2433 ;   Call IsUserAdmin
2434 ;   Pop $R0   ; at this point $R0 is "true" or "false"
2435 ;
2436 Function IsUserAdmin
2437 Push $R0
2438 Push $R1
2439 Push $R2
2440
2441 ClearErrors
2442 UserInfo::GetName
2443 IfErrors Win9x
2444 Pop $R1
2445 UserInfo::GetAccountType
2446 Pop $R2
2447
2448 StrCmp $R2 "Admin" 0 Continue
2449 ; Observation: I get here when running Win98SE. (Lilla)
2450 ; The functions UserInfo.dll looks for are there on Win98 too, 
2451 ; but just don't work. So UserInfo.dll, knowing that admin isn't required
2452 ; on Win98, returns admin anyway. (per kichik)
2453 ; MessageBox MB_OK 'User "$R1" is in the Administrators group'
2454 StrCpy $R0 "true"
2455 Goto Done
2456
2457 Continue:
2458 ; You should still check for an empty string because the functions
2459 ; UserInfo.dll looks for may not be present on Windows 95. (per kichik)
2460 StrCmp $R2 "" Win9x
2461 StrCpy $R0 "false"
2462 ;MessageBox MB_OK 'User "$R1" is in the "$R2" group'
2463 Goto Done
2464
2465 Win9x:
2466 ; comment/message below is by UserInfo.nsi author:
2467 ; This one means you don't need to care about admin or
2468 ; not admin because Windows 9x doesn't either
2469 ;MessageBox MB_OK "Error! This DLL can't run under Windows 9x!"
2470 StrCpy $R0 "false"
2471
2472 Done:
2473 ;MessageBox MB_OK 'User= "$R1"  AccountType= "$R2"  IsUserAdmin= "$R0"'
2474
2475 Pop $R2
2476 Pop $R1
2477 Exch $R0
2478 FunctionEnd