[FileKeyedClasses]
    Ntoskrnl       = ntoskrnl.exe
[FilesKeyedSections]
    FilesNtoskrnl  = $(STF_WINDOWSSYSPATH)
[FilesNtoskrnl]
    NTKRNLMP = 1, NTKRNLMP.EXE , RENAME=$(NEWFILE), NOLOG, UNDO
    NTOSKRNL = 1, NTOSKRNL.EXE , RENAME=$(NEWFILE), NOLOG, UNDO
[FileSections]
; IF CITRIX
    FilesPrimary        = $(STF_PRIMARY)
; ELSE  CITRIX
;   FilesPrimary        = C:
; ENDIF CITRIX
    FilesPal            = $(STF_HALDEST)
    FilesWinnt          = $(STF_WINDOWSPATH)
    FilesSystem32       = $(STF_WINDOWSSYSPATH)
; IF CITRIX
    FilesRas            = $(STF_WINDOWSSYSPATH)\ras
; ENDIF CITRIX
    FilesSystem         = $(STF_WINDOWSPATH)\system
    FilesDrivers        = $(STF_WINDOWSSYSPATH)\drivers
    FilesConfig         = $(STF_WINDOWSSYSPATH)\config
    FilesWinspool       = $(STF_WINDOWSSYSPATH)\spool
    FilesPrnDriver      = $(STF_WINDOWSSYSPATH)\spool\drivers\$(!STF_PRNPLATFORM)\1
    FilesPrnProc        = $(STF_WINDOWSSYSPATH)\spool\prtprocs\$(!STF_PRNPLATFORM)
    FilesDbgCom         = $(STF_WINDOWSPATH)\symbols\com
    FilesDbgCpl         = $(STF_WINDOWSPATH)\symbols\cpl
    FilesDbgDll         = $(STF_WINDOWSPATH)\symbols\dll
    FilesDbgDrv         = $(STF_WINDOWSPATH)\symbols\drv
    FilesDbgExe         = $(STF_WINDOWSPATH)\symbols\exe
    FilesDbgScr         = $(STF_WINDOWSPATH)\symbols\scr
    FilesDbgSys         = $(STF_WINDOWSPATH)\symbols\sys
[FileSectionsWFClients]
    FilesWFCDOSDisk1    = $(STF_WINDOWSSYSPATH)\clients\wfcdos\disks\disk1
    FilesWFC16Disk1     = $(STF_WINDOWSSYSPATH)\clients\wfc16\disks\disk1
    FilesWFC32Disk1     = $(STF_WINDOWSSYSPATH)\clients\wfc32\disks\disk1
    FilesWFC32Disk2     = $(STF_WINDOWSSYSPATH)\clients\wfc32\disks\disk2
    FilesICAEditDisk1   = $(STF_WINDOWSSYSPATH)\clients\icaedit\disks\disk1
    FilesActiveXDisk1   = $(STF_WINDOWSSYSPATH)\clients\wfcweb\disks\disk1\activex
    FilesNSPlugDisk1    = $(STF_WINDOWSSYSPATH)\clients\wfcweb\disks\disk1\nsplugin
[FileSectionsWFClients2]
    FilesAllClients     = $(STF_WINDOWSSYSPATH)\clients
[FileSectionsOsLoader]
    FilesOsLoader       = $(STF_OSLDEST)
[FileSectionsFPNW]
    FilesFpNwLogin      = $(STF_FPNWSYSPATH)\login
    FilesFpNwPublic     = $(STF_FPNWSYSPATH)\public
[FileSectionsIIS]
    FilesIIS            = $(STF_IISPATH)
[FileSectionsSSL]
    FilesSSL            = $(STF_WINDOWSSYSPATH)
[FileSectionsCopyAlways]
    FilesSystem32CopyAlways = $(STF_WINDOWSSYSPATH)
    FilesDriversCopyAlways  = $(STF_WINDOWSSYSPATH)\drivers
[FileSectionsWINNT]
    FilesInfWinnt       = $(STF_WINDOWSSYSPATH)
[FileSectionsLANMANNT]
    FilesInfLanmanNT    = $(STF_WINDOWSSYSPATH)
[FileSectionsCopyAlwaysWINNT]
    FilesSystem32CopyAlwaysWinnt = $(STF_WINDOWSSYSPATH)
[FileSectionsCopyAlwaysLANMANNT]
    FilesSystem32CopyAlwaysLanmanNT = $(STF_WINDOWSSYSPATH)
[FilesPrimary]
[FilesOsLoader]
[FilesPal]
[FilesWinnt]
[FilesSystem32]
1 = 1, APPCFG.EXE  , RENAME=$(NEWFILE), NOLOG, UNDO
2 = 1, AUDITLOG.EXE, RENAME=$(NEWFILE), NOLOG, UNDO
3 = 1, CDMPROV.DLL , RENAME=$(NEWFILE), NOLOG, UNDO
4 = 1, CPMMON.DLL  , RENAME=$(NEWFILE), NOLOG, UNDO
5 = 1, CTXSKU.DLL  , RENAME=$(NEWFILE), NOLOG, UNDO
6 = 1, CXERROR.DLL , RENAME=$(NEWFILE), NOLOG, UNDO
7 = 1, CXSTATUS.DLL, RENAME=$(NEWFILE), NOLOG, UNDO
8 = 1, IBROWSER.EXE, RENAME=$(NEWFILE), NOLOG, UNDO
9 = 1, ICASRV.EXE  , RENAME=$(NEWFILE), NOLOG, UNDO
10 = 1, KERNEL32.DLL, RENAME=$(NEWFILE), NOLOG, UNDO
11 = 1, LSASRV.DLL  , RENAME=$(NEWFILE), NOLOG, UNDO
12 = 1, LSASS.EXE   , RENAME=$(NEWFILE), NOLOG, UNDO
13 = 1, MSAUDITE.DLL, RENAME=$(NEWFILE), NOLOG, UNDO
14 = 1, MSGINA.DLL  , RENAME=$(NEWFILE), NOLOG, UNDO
15 = 1, MSGSVC.DLL  , RENAME=$(NEWFILE), NOLOG, UNDO
16 = 1, NASICALL.DLL, RENAME=$(NEWFILE), NOLOG, UNDO
17 = 1, PDCOMP.DLL  , RENAME=$(NEWFILE), NOLOG, UNDO
18 = 1, PDCRYPT1.DLL, RENAME=$(NEWFILE), NOLOG, UNDO
19 = 1, PDFRAME.DLL , RENAME=$(NEWFILE), NOLOG, UNDO
20 = 1, PDMODEM.DLL , RENAME=$(NEWFILE), NOLOG, UNDO
21 = 1, PDRELI.DLL  , RENAME=$(NEWFILE), NOLOG, UNDO
22 = 1, PDRFRAME.DLL, RENAME=$(NEWFILE), NOLOG, UNDO
23 = 1, PLICENSE.CNT, RENAME=$(NEWFILE), NOLOG, UNDO
24 = 1, PLICENSE.EXE, RENAME=$(NEWFILE), NOLOG, UNDO
25 = 1, PLICENSE.HLP, RENAME=$(NEWFILE), NOLOG, UNDO
26 = 1, PLIPX.DLL   , RENAME=$(NEWFILE), NOLOG, UNDO
27 = 1, QSERVER.EXE , RENAME=$(NEWFILE), NOLOG, UNDO
28 = 1, REGAPI.DLL  , RENAME=$(NEWFILE), NOLOG, UNDO
29 = 1, SCM.EXE     , RENAME=$(NEWFILE), NOLOG, UNDO
30 = 1, SETUPDLL.DLL, RENAME=$(NEWFILE), NOLOG, UNDO
31 = 1, TDASYNC.DLL , RENAME=$(NEWFILE), NOLOG, UNDO
32 = 1, TDIPX.DLL   , RENAME=$(NEWFILE), NOLOG, UNDO
33 = 1, TDNASI.DLL  , RENAME=$(NEWFILE), NOLOG, UNDO
34 = 1, TDNETB.DLL  , RENAME=$(NEWFILE), NOLOG, UNDO
35 = 1, TDSPX.DLL   , RENAME=$(NEWFILE), NOLOG, UNDO
36 = 1, TDTCP.DLL   , RENAME=$(NEWFILE), NOLOG, UNDO
37 = 1, ULMFLPY.DLL , RENAME=$(NEWFILE), NOLOG, UNDO
38 = 1, ULMREG.DLL  , RENAME=$(NEWFILE), NOLOG, UNDO
39 = 1, USERINIT.EXE, RENAME=$(NEWFILE), NOLOG, UNDO
40 = 1, UTILDLL.DLL , RENAME=$(NEWFILE), NOLOG, UNDO
41 = 1, VDTW30.DLL  , RENAME=$(NEWFILE), NOLOG, UNDO
42 = 1, WDCON.DLL   , RENAME=$(NEWFILE), NOLOG, UNDO
43 = 1, WDIBM.DLL   , RENAME=$(NEWFILE), NOLOG, UNDO
44 = 1, WDICA.DLL   , RENAME=$(NEWFILE), NOLOG, UNDO
45 = 1, WDTECO.DLL  , RENAME=$(NEWFILE), NOLOG, UNDO
46 = 1, WDVT420.DLL , RENAME=$(NEWFILE), NOLOG, UNDO
47 = 1, WF2REG.EXE  , RENAME=$(NEWFILE), NOLOG, UNDO
48 = 1, WFREADME.CNT, RENAME=$(NEWFILE), NOLOG, UNDO
49 = 1, WFREADME.HLP, RENAME=$(NEWFILE), NOLOG, UNDO
50 = 1, WINLOGON.EXE, RENAME=$(NEWFILE), NOLOG, UNDO
51 = 1, WINSRV.DLL  , RENAME=$(NEWFILE), NOLOG, UNDO
52 = 1, WINSTA.DLL  , RENAME=$(NEWFILE), NOLOG, UNDO
53 = 1, XACTSRV.DLL , RENAME=$(NEWFILE), NOLOG, UNDO
54 = 1, USER32.DLL  , RENAME=$(NEWFILE), NOLOG, UNDO
55 = 1, WINADMIN.EXE, RENAME=$(NEWFILE), NOLOG, UNDO
56 = 1, WINSPOOL.DRV, RENAME=$(NEWFILE), NOLOG, UNDO
57 = 1, PRINTER.INF , RENAME=$(NEWFILE), NOLOG, UNDO
58 = 1, SMSS.EXE    , RENAME=$(NEWFILE), NOLOG, UNDO
59 = 1, SHUTDOWN.EXE, RENAME=$(NEWFILE), NOLOG, UNDO
60 = 1, USRMGR.EXE  , RENAME=$(NEWFILE), NOLOG, UNDO
61 = 1, WOW32.DLL   , RENAME=$(NEWFILE), NOLOG, UNDO
62 = 1, QUSER.EXE   , RENAME=$(NEWFILE), NOLOG, UNDO
63 = 1, EVENTLOG.DLL, RENAME=$(NEWFILE), NOLOG, UNDO
64 = 1, NETUI2.DLL  , RENAME=$(NEWFILE), NOLOG, UNDO
64 = 1, RPCRT4.DLL  , RENAME=$(NEWFILE), NOLOG, UNDO
65 = 1, OEMNSVSV.INF, RENAME=$(NEWFILE), NOLOG, UNDO
66 = 1, SOLG.CNT    , RENAME=$(NEWFILE), NOLOG, UNDO
67 = 1, SOLG.HLP    , RENAME=$(NEWFILE), NOLOG, UNDO
68 = 1, TCPIP.SYS   , RENAME=$(NEWFILE), NOLOG, UNDO

; IF CITRIX
[FilesRas]
1 = 1, CTXMODEM.INF, RENAME=$(NEWFILE), NOLOG, UNDO

[FilesAllClients]
1 = 1, NCADMIN.INF, RENAME=$(NEWFILE), NOLOG, UNDO 

[FilesWFCDOSDisk1]
1 = 1, APPSRV.SRC , RENAME=$(NEWFILE), NOLOG, UNDO 
2 = 1, EXPAND.EXE , RENAME=$(NEWFILE), NOLOG, UNDO 
3 = 1, INSTALL.EXE , RENAME=$(NEWFILE), NOLOG, UNDO 
4 = 1, M3OPEN.EX_ , RENAME=$(NEWFILE), NOLOG, UNDO 
5 = 1, MBW.EX_ , RENAME=$(NEWFILE), NOLOG, UNDO 
6 = 1, MFTP.EX_ , RENAME=$(NEWFILE), NOLOG, UNDO 
7 = 1, MFTP22.EX_ , RENAME=$(NEWFILE), NOLOG, UNDO 
8 = 1, MIBMTCP.EX_ , RENAME=$(NEWFILE), NOLOG, UNDO 
9 = 1, MIGRATE.EXE , RENAME=$(NEWFILE), NOLOG, UNDO 
10 = 1, MLOCUS2.EX_ , RENAME=$(NEWFILE), NOLOG, UNDO 
11 = 1, MNETONE.EX_ , RENAME=$(NEWFILE), NOLOG, UNDO 
12 = 1, MNOVLWP.EX_ , RENAME=$(NEWFILE), NOLOG, UNDO 
13 = 1, MODEM.DD_ , RENAME=$(NEWFILE), NOLOG, UNDO 
14 = 1, MODEM.SR_ , RENAME=$(NEWFILE), NOLOG, UNDO 
15 = 1, MODULE.SRC , RENAME=$(NEWFILE), NOLOG, UNDO 
16 = 1, MPATHWAY.EX_ , RENAME=$(NEWFILE), NOLOG, UNDO 
17 = 1, MPCNFS2.EX_ , RENAME=$(NEWFILE), NOLOG, UNDO 
18 = 1, MWINTCP.EX_ , RENAME=$(NEWFILE), NOLOG, UNDO 
19 = 1, NEIPX.DD_ , RENAME=$(NEWFILE), NOLOG, UNDO 
20 = 1, NENETB.DD_ , RENAME=$(NEWFILE), NOLOG, UNDO 
21 = 1, NENUM.DD_ , RENAME=$(NEWFILE), NOLOG, UNDO 
22 = 1, NETCPFTP.DD_ , RENAME=$(NEWFILE), NOLOG, UNDO 
23 = 1, NETCPMS.DD_ , RENAME=$(NEWFILE), NOLOG, UNDO 
24 = 1, NETCPNOV.DD_ , RENAME=$(NEWFILE), NOLOG, UNDO 
25 = 1, NRIPX.DD_ , RENAME=$(NEWFILE), NOLOG, UNDO 
26 = 1, NRNETB.DD_ , RENAME=$(NEWFILE), NOLOG, UNDO 
27 = 1, NRNETW.DD_ , RENAME=$(NEWFILE), NOLOG, UNDO 
28 = 1, NRTCPFTP.DD_ , RENAME=$(NEWFILE), NOLOG, UNDO 
29 = 1, NRTCPMS.DD_ , RENAME=$(NEWFILE), NOLOG, UNDO 
30 = 1, NRTCPNOV.DD_ , RENAME=$(NEWFILE), NOLOG, UNDO 
31 = 1, PDCOMP.DD_ , RENAME=$(NEWFILE), NOLOG, UNDO 
32 = 1, PDCRYPT.DD_ , RENAME=$(NEWFILE), NOLOG, UNDO 
33 = 1, PDFRAME.DD_ , RENAME=$(NEWFILE), NOLOG, UNDO 
34 = 1, PDMODEM.DD_ , RENAME=$(NEWFILE), NOLOG, UNDO 
35 = 1, PDRELI.DD_ , RENAME=$(NEWFILE), NOLOG, UNDO 
36 = 1, PDRFRAM.DD_ , RENAME=$(NEWFILE), NOLOG, UNDO 
37 = 1, README.TXT , RENAME=$(NEWFILE), NOLOG, UNDO 
38 = 1, SCRIPT.DD_ , RENAME=$(NEWFILE), NOLOG, UNDO 
39 = 1, TDASYNC.DD_ , RENAME=$(NEWFILE), NOLOG, UNDO 
40 = 1, TDDIGI.DD_ , RENAME=$(NEWFILE), NOLOG, UNDO 
41 = 1, TDINT14.DD_ , RENAME=$(NEWFILE), NOLOG, UNDO 
42 = 1, TDIPX.DD_ , RENAME=$(NEWFILE), NOLOG, UNDO 
43 = 1, TDNETB.DD_ , RENAME=$(NEWFILE), NOLOG, UNDO 
44 = 1, TDSPX.DD_ , RENAME=$(NEWFILE), NOLOG, UNDO 
45 = 1, TDSST.DD_ , RENAME=$(NEWFILE), NOLOG, UNDO 
46 = 1, TDTCPFTP.DD_ , RENAME=$(NEWFILE), NOLOG, UNDO 
47 = 1, TDTCPMS.DD_ , RENAME=$(NEWFILE), NOLOG, UNDO 
48 = 1, TDTCPNOV.DD_ , RENAME=$(NEWFILE), NOLOG, UNDO 
49 = 1, TDTCPVSL.DD_ , RENAME=$(NEWFILE), NOLOG, UNDO 
50 = 1, UICWIN.DD_ , RENAME=$(NEWFILE), NOLOG, UNDO 
51 = 1, UIERROR.DD_ , RENAME=$(NEWFILE), NOLOG, UNDO 
52 = 1, UIHELP.DD_ , RENAME=$(NEWFILE), NOLOG, UNDO 
53 = 1, UIINIW.DD_ , RENAME=$(NEWFILE), NOLOG, UNDO 
54 = 1, VDCDM30.DD_ , RENAME=$(NEWFILE), NOLOG, UNDO 
55 = 1, VDCOM30.DD_ , RENAME=$(NEWFILE), NOLOG, UNDO 
56 = 1, VDCPM30.DD_ , RENAME=$(NEWFILE), NOLOG, UNDO 
57 = 1, VDTW30.DD_ , RENAME=$(NEWFILE), NOLOG, UNDO 
58 = 1, VSL.COM , RENAME=$(NEWFILE), NOLOG, UNDO 
59 = 1, WDICA30.DD_ , RENAME=$(NEWFILE), NOLOG, UNDO 
60 = 1, WFCDOS.DAT , RENAME=$(NEWFILE), NOLOG, UNDO 
61 = 1, WFCLIENT.EXE , RENAME=$(NEWFILE), NOLOG, UNDO 
62 = 1, WFCLIENT.HLP , RENAME=$(NEWFILE), NOLOG, UNDO 
63 = 1, WFCLIENT.ICO , RENAME=$(NEWFILE), NOLOG, UNDO 
64 = 1, WFCLIENT.PIF , RENAME=$(NEWFILE), NOLOG, UNDO 
65 = 1, WFCLIENT.SRC , RENAME=$(NEWFILE), NOLOG, UNDO 
66 = 1, WFCSETUP.INI , RENAME=$(NEWFILE), NOLOG, UNDO 
67 = 1, WFENG.DD_ , RENAME=$(NEWFILE), NOLOG, UNDO 

[FilesWFC16Disk1] 
1 = 1, ALLWFC16.INF , RENAME=$(NEWFILE), NOLOG, UNDO 
2 = 1, APPSRV.SRC , RENAME=$(NEWFILE), NOLOG, UNDO 
3 = 1, EXIT.EXE , RENAME=$(NEWFILE), NOLOG, UNDO 
4 = 1, MIGRATEW.EX_ , RENAME=$(NEWFILE), NOLOG, UNDO 
5 = 1, MODEM.SR_ , RENAME=$(NEWFILE), NOLOG, UNDO 
6 = 1, MODEMW.DL_ , RENAME=$(NEWFILE), NOLOG, UNDO 
7 = 1, MODULE.SR_ , RENAME=$(NEWFILE), NOLOG, UNDO 
8 = 1, MSCOMSTF.DL_ , RENAME=$(NEWFILE), NOLOG, UNDO 
9 = 1, MSCUISTF.DL_ , RENAME=$(NEWFILE), NOLOG, UNDO 
10 = 1, MSDETECT.IN_ , RENAME=$(NEWFILE), NOLOG, UNDO 
11 = 1, MSDETSTF.DL_ , RENAME=$(NEWFILE), NOLOG, UNDO 
12 = 1, MSINSSTF.DL_ , RENAME=$(NEWFILE), NOLOG, UNDO 
13 = 1, MSSHLSTF.DL_ , RENAME=$(NEWFILE), NOLOG, UNDO 
14 = 1, MSUILSTF.DL_ , RENAME=$(NEWFILE), NOLOG, UNDO 
15 = 1, NEIPXW.DL_ , RENAME=$(NEWFILE), NOLOG, UNDO 
16 = 1, NENETBW.DL_ , RENAME=$(NEWFILE), NOLOG, UNDO 
17 = 1, NENUMW.DL_ , RENAME=$(NEWFILE), NOLOG, UNDO 
18 = 1, NETCPW.DL_ , RENAME=$(NEWFILE), NOLOG, UNDO 
19 = 1, NRIPXW.DL_ , RENAME=$(NEWFILE), NOLOG, UNDO 
20 = 1, NRNETBW.DL_ , RENAME=$(NEWFILE), NOLOG, UNDO 
21 = 1, NRNETWW.DL_ , RENAME=$(NEWFILE), NOLOG, UNDO 
22 = 1, NWIPXSPX.DL_ , RENAME=$(NEWFILE), NOLOG, UNDO 
23 = 1, PDCOMPW.DL_ , RENAME=$(NEWFILE), NOLOG, UNDO 
24 = 1, PDFRAMEW.DL_ , RENAME=$(NEWFILE), NOLOG, UNDO 
25 = 1, PDMODEMW.DL_ , RENAME=$(NEWFILE), NOLOG, UNDO 
26 = 1, PDRELIW.DL_ , RENAME=$(NEWFILE), NOLOG, UNDO 
27 = 1, SCRIPTW.DL_ , RENAME=$(NEWFILE), NOLOG, UNDO 
28 = 1, SETUP.EXE , RENAME=$(NEWFILE), NOLOG, UNDO 
29 = 1, SETUP.LST , RENAME=$(NEWFILE), NOLOG, UNDO 
30 = 1, SETUPAPI.IN_ , RENAME=$(NEWFILE), NOLOG, UNDO 
31 = 1, STRINGS.IN_ , RENAME=$(NEWFILE), NOLOG, UNDO 
32 = 1, TDCOMMW.DL_ , RENAME=$(NEWFILE), NOLOG, UNDO 
33 = 1, TDIPXW.DL_ , RENAME=$(NEWFILE), NOLOG, UNDO 
34 = 1, TDNETBW.DL_ , RENAME=$(NEWFILE), NOLOG, UNDO 
35 = 1, TDSPXW.DL_ , RENAME=$(NEWFILE), NOLOG, UNDO 
36 = 1, VDCPM30W.DL_ , RENAME=$(NEWFILE), NOLOG, UNDO 
37 = 1, WFC16.MS_ , RENAME=$(NEWFILE), NOLOG, UNDO 
38 = 1, WFCDIAL.HL_ , RENAME=$(NEWFILE), NOLOG, UNDO 
39 = 1, WFCLIENT.SR_ , RENAME=$(NEWFILE), NOLOG, UNDO 
40 = 1, WFCMGR.EX_ , RENAME=$(NEWFILE), NOLOG, UNDO 
41 = 1, WFCMGR.HL_ , RENAME=$(NEWFILE), NOLOG, UNDO 
42 = 1, WFCMODM.HL_ , RENAME=$(NEWFILE), NOLOG, UNDO 
43 = 1, WFCPUB.HL_ , RENAME=$(NEWFILE), NOLOG, UNDO 
44 = 1, WFCRUN.EX_ , RENAME=$(NEWFILE), NOLOG, UNDO 
45 = 1, WFCRUN.HL_ , RENAME=$(NEWFILE), NOLOG, UNDO 
46 = 1, WFCSETUP.EX_ , RENAME=$(NEWFILE), NOLOG, UNDO 
47 = 1, WFCSETUP.INI , RENAME=$(NEWFILE), NOLOG, UNDO 
48 = 1, WFCWINW.DL_ , RENAME=$(NEWFILE), NOLOG, UNDO 
49 = 1, WFICA16.EX_ , RENAME=$(NEWFILE), NOLOG, UNDO 
50 = 1, _MSSETUP.EX_ , RENAME=$(NEWFILE), NOLOG, UNDO 
51 = 1, _MSTEST.EX_ , RENAME=$(NEWFILE), NOLOG, UNDO 

[FilesWFC32Disk1] 
1 = 1, APPSRV.SRC , RENAME=$(NEWFILE), NOLOG, UNDO 
2 = 1, DATA.1 , RENAME=$(NEWFILE), NOLOG, UNDO 
3 = 1, DISK1.ID , RENAME=$(NEWFILE), NOLOG, UNDO 
4 = 1, MODULE.SRC , RENAME=$(NEWFILE), NOLOG, UNDO 
5 = 1, SETUP.EXE , RENAME=$(NEWFILE), NOLOG, UNDO 
6 = 1, SETUP.INS , RENAME=$(NEWFILE), NOLOG, UNDO 
7 = 1, SETUP.PKG , RENAME=$(NEWFILE), NOLOG, UNDO 
8 = 1, WFCLIENT.SRC , RENAME=$(NEWFILE), NOLOG, UNDO 
9 = 1, WFCSETUP.INI , RENAME=$(NEWFILE), NOLOG, UNDO 
10 = 1, _INST32I.EX_ , RENAME=$(NEWFILE), NOLOG, UNDO 
11 = 1, _SETUP.DLL , RENAME=$(NEWFILE), NOLOG, UNDO 
12 = 1, _SETUP.LIB , RENAME=$(NEWFILE), NOLOG, UNDO 

[FilesWFC32Disk2] 
1 = 1, DATA.2 , RENAME=$(NEWFILE), NOLOG, UNDO 
2 = 1, DISK2.ID , RENAME=$(NEWFILE), NOLOG, UNDO 

[FilesICAEditDisk1]
1 = 1, BRAPI.DLL , RENAME=$(NEWFILE), NOLOG, UNDO  
2 = 1, ICASHELL.DLL , RENAME=$(NEWFILE), NOLOG, UNDO  
3 = 1, ICASHELL.HLP , RENAME=$(NEWFILE), NOLOG, UNDO  
4 = 1, SETUP.EXE , RENAME=$(NEWFILE), NOLOG, UNDO  
5 = 1, SETUP.INF , RENAME=$(NEWFILE), NOLOG, UNDO  

[FilesActiveXDisk1]
1 = 1, WFICA.CAB , RENAME=$(NEWFILE), NOLOG, UNDO  
2 = 1, WFICA.OCX , RENAME=$(NEWFILE), NOLOG, UNDO  
3 = 1, WFICA32.EXE , RENAME=$(NEWFILE), NOLOG, UNDO  

[FilesNSPlugDisk1]
1 = 1, WFPLUG16.EXE , RENAME=$(NEWFILE), NOLOG, UNDO  
2 = 1, WFPLUG32.EXE , RENAME=$(NEWFILE), NOLOG, UNDO  

; ENDIF CITRIX

[FilesSystem]

[FilesDrivers]
1 = 1, CDM.SYS     , RENAME=$(NEWFILE), NOLOG, UNDO
2 = 1, NTFS.SYS    , RENAME=$(NEWFILE), NOLOG, UNDO
3 = 1, NWRDR.SYS   , RENAME=$(NEWFILE), NOLOG, UNDO
4 = 1, SFMSRV.SYS  , RENAME=$(NEWFILE), NOLOG, UNDO

[FilesConfig]
[FilesWinspool]
[FilesPrnDriver]
1 = 1, RASDD.DLL   , RENAME=$(NEWFILE), NOLOG, UNDO

[FilesPrnProc]
[FilesDbgCom]
[FilesDbgCpl]
[FilesDbgDll]
[FilesDbgDrv]
[FilesDbgExe]
[FilesDbgScr]
[FilesDbgSys]
[FilesInfWinnt]
[FilesInfLanmanNT]
[FilesSystem32CopyAlways]
1 = 1, PRFLBMSG.DLL, RENAME=$(NEWFILE), NOLOG, UNDO
2 = 1, HOTFIX.EXE  , RENAME=$(NEWFILE), NOLOG, UNDO
3 = 1, ALTADDR.EXE , RENAME=$(NEWFILE), NOLOG, UNDO
4 = 1, CLTPRINT.EXE, RENAME=$(NEWFILE), NOLOG, UNDO
5 = 1, WF2REG.CNT  , RENAME=$(NEWFILE), NOLOG, UNDO
6 = 1, WF2REG.HLP  , RENAME=$(NEWFILE), NOLOG, UNDO
7 = 1, WFAPI.DLL   , RENAME=$(NEWFILE), NOLOG, UNDO
8 = 1, CTXPRNT.INF , RENAME=$(NEWFILE), NOLOG, UNDO
9 = 1, CTXUPRN.TXT , RENAME=$(NEWFILE), NOLOG, UNDO
10 = 1, FTPSVC.DLL  , RENAME=$(NEWFILE), NOLOG, UNDO

[FilesDriversCopyAlways]
[FilesSystem32CopyAlwaysWINNT]
[FilesSystem32CopyAlwaysLANMANNT]
[FilesFpNwLogin]
[FilesFpNwPublic]
[FilesIIS]
[FilesSSL]
[FileAttributes]
[ProcessorID]
    ProcessorID_I386  = I386
    ProcessorID_I486  = I486
    ProcessorID_I586  = I586
    ProcessorID_R4000 = R4000
[UiVars]
    STF_PLATFORMDET    = "" ? $(!LIBHANDLE) GetPlatform
    STF_CSDVER         = 1282
    STF_BUILDVER       = 1057
    STF_CSD1_NT35      = 256
    STF_NT31_BUILDVER  = 528
    STF_NT35_BUILDVER  = 807
    STF_NT351_BUILDVER = 1057
; IF CITRIX
    STF_WF15_BUILDVER  = 217
; ENDIF CITRIX
    STF_NT351_MAJORVER = 3
    STF_NT351_MINORVER = 51
; IF !CITRIX
;   STF_PRIMARY        = "C:"
; ENDIF !CITRIX
    STF_NTDRIVE        = ""
    STF_WINDOWSPATH    = "" ? $(!LIBHANDLE) GetWindowsNtDir
    STF_WINDOWSSYSPATH = "" ? $(!LIBHANDLE) GetWindowsNtSysDir
    STF_CONTROLSET     = CurrentControlSet
    VolumeList         = {} ? $(!LIBHANDLE) GetHardDriveLetters
    VolumeFSList       = {} ? $(!LIBHANDLE) GetHardDriveFileSystems
    VolumeFreeList     = {} ? $(!LIBHANDLE) GetHardDriveFreeSpace
    DisketteList       = {} ? $(!LIBHANDLE) GetFloppyDriveLetters
[FreeSpaceI386]
    RequiredFreeWinnt  = 25
[FreeSpaceMips]
    RequiredFreeWinnt  = 32
[FreeSpaceppc]
    RequiredFreeWinnt  = 32
[FreeSpaceAlpha]
    RequiredFreeWinnt  = 27
[NVRAMVars]
    SystemPartition = "" ? $(!LIBHANDLE) GetNVRAMVar SYSTEMPARTITION
    OsLoader        = "" ? $(!LIBHANDLE) GetNVRAMVar OSLOADER
    OsLoadPartition = "" ? $(!LIBHANDLE) GetNVRAMVar OSLOADPARTITION
    OsLoadFilename  = "" ? $(!LIBHANDLE) GetNVRAMVar OSLOADFILENAME
[Shell Commands]
    set-title "Windows NT Setup"
    set-subst CR = "\r"
    set-subst LF = "\n"
    set STF_LANGUAGE = ENG
    set STF_LANGUAGE_TYPE = 9
    read-syms Strings
    shell "subroutn.inf" PushBillboard STATUSDLG $(Billboard1)
    set BillboardPushed = TRUE
    set IISPathFound = FALSE
    set CopySSL = TRUE
    set CopyLoader = TRUE
    set FPNWSysPathFound = FALSE
    set !LIBHANDLE      = ""
    set !PATCHLIBHANDLE = ""
    install   LoadSetupLibrary
    read-syms ProductType
    ifstr(i) $(!STF_PLATFORM) == I386
        set STF_PRNPLATFORM = "w32x86"
        set SamsrvChksum = "2D17C"
    else-ifstr(i) $(!STF_PLATFORM) == Mips
        set STF_PRNPLATFORM = "w32mips"
        set SamsrvChksum = "40CF2"
    else-ifstr(i) $(!STF_PLATFORM) == ppc
        set STF_PRNPLATFORM = "w32ppc"
        set SamsrvChksum = "435C0"
    else-ifstr(i) $(!STF_PLATFORM) == Alpha
        set STF_PRNPLATFORM = "w32alpha"
        set SamsrvChksum = "3FA62"
    endif
    read-syms UiVars
    detect    UiVars
; IF CITRIX
    set STF_PRIMARY = *($(VolumeList), 1)
; ENDIF CITRIX
    install   LoadPatchLibrary
    read-syms FreeSpace$(!STF_PLATFORM)
    ifstr(i) $(STF_PLATFORM) != $(STF_PLATFORMDET)
         ifstr(i) $(BillboardPushed) == TRUE
             shell "subroutn.inf" PopBillboard
             set BillboardPushed = FALSE
         endif
         shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "FATAL" $(String1)
         goto patchnotdone
    endif
    shell "registry.inf" CheckSetupModify
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
        ifstr(i) $(BillboardPushed) == TRUE
            shell "subroutn.inf" PopBillboard
            set BillboardPushed = FALSE
        endif
        Debug-Output "shelling CheckSetupModify failed"
        goto patchnotdone
    else-ifstr(i) $($R0) != STATUS_SUCCESSFUL
        ifstr(i) $(BillboardPushed) == TRUE
            shell "subroutn.inf" PopBillboard
            set BillboardPushed = FALSE
        endif
        shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "FATAL" $(String4)
        goto patchnotdone
    endif
    shell "" GetCheckedFree
    ifint $($ShellCode) == $(!SHELL_CODE_OK)
        ifstr(i) $($R0) == "STATUS_SUCCESSFUL"
            ifstr(i) $($R1) == "checked"
                shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "FATAL" $(String15)
                goto patchnotdone
            endif
        endif
    endif
    LibraryProcedure STATUS,$(!PATCHLIBHANDLE), CheckWindowsMajorVersion
    ifint $(STATUS) > $(STF_NT351_MAJORVER)
        shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String18)
        goto patchnotdone
    else-ifint $(STATUS) = $(STF_NT351_MAJORVER)
        LibraryProcedure STATUS,$(!PATCHLIBHANDLE), CheckWindowsMinorVersion
        ifint $(STATUS) > $(STF_NT351_MINORVER)
            shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String18)
            goto patchnotdone
        endif
    endif
    LibraryProcedure STATUS,$(!PATCHLIBHANDLE), CheckBuildVersion
; IFDEF CITRIX
    ifint $(STATUS) < $(STF_WF15_BUILDVER)
        shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String17)
        goto patchnotdone
    else-ifint $(STATUS) > $(STF_WF15_BUILDVER)
	ifint $(STATUS) == $(STF_NT35_BUILDVER)
	    shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String18a)
            goto patchnotdone
        endif
	ifint $(STATUS) == $(STF_NT351_BUILDVER)
	    shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String18a)
            goto patchnotdone
        endif
        shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String18b)
        goto patchnotdone
    endif
; ELSE  CITRIX
;   ifint $(STATUS) <= $(STF_NT35_BUILDVER)
;       shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String16)
;       goto patchnotdone
;   else-ifint $(STATUS) < $(STF_NT351_BUILDVER)
;       shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String17)
;       goto patchnotdone
;   else-ifint $(STATUS) > $(STF_NT351_BUILDVER)
;       shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String18)
;       goto patchnotdone
;   endif
; ENDIF CITRIX
    shell "" GetCSDVersion
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
        ifstr(i) $(BillboardPushed) == TRUE
            shell "subroutn.inf" PopBillboard
            set BillboardPushed = FALSE
        endif
        goto patchnotdone
    endif
    ifstr(i) $($R0) != "STATUS_SUCCESSFUL"
        goto patchnotdone
    else
        ifint $($R1) > $(!STF_CSDVER)
            ifstr(i) $(BillboardPushed) == TRUE
                shell "subroutn.inf" PopBillboard
                set BillboardPushed = FALSE
            endif
            shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String8)
            goto patchnotdone
        endif
    endif
    ifstr(i) $(!STF_PLATFORM) == ppc
        OpenRegKey $(!REG_H_LOCAL) "" "Software\Microsoft\Windows NT\CurrentVersion" 33554432 KeyCurrentVersion
        ifstr(i) $(KeyCurrentVersion) != ""
            GetRegValue $(KeyCurrentVersion) "CSDVersion" CSDVersionList
            ifstr(i) $(CSDVersionList) == "Power Managed Version X"
                shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String19)
                goto patchnotdone
            endif
            GetRegValue $(KeyCurrentVersion) "PowerManagedVersion" PMVersionList
            ifstr(i) $(PMVersionList) != ""
                shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String19)
                goto patchnotdone
            endif
        endif
    endif
    LibraryProcedure STATUS,$(!PATCHLIBHANDLE), GetLanguageType
    ifstr(i) $(STATUS) == ERROR
        goto patchnotdone
    else
        ifstr(i) $(STATUS) != $(STF_LANGUAGE_TYPE)
            shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String20)
            goto patchnotdone
        endif
    endif
    LibraryProcedure STATUS,$(!PATCHLIBHANDLE), FixFPNWFiles
    LibraryProcedure STATUS,$(!PATCHLIBHANDLE), GetFPNWPathName
    ifstr(i) $(STATUS) != "FAILURE"
        set STF_FPNWSYSPATH = $(STATUS)
        set FPNWSysPathFound = TRUE
    endif
skip_patchvercheck = +
    GetDriveInPath !STF_NTDRIVE $(!STF_WINDOWSSYSPATH)
    ifint *($(VolumeFreeList), ~($(VolumeList), $(!STF_NTDRIVE))) < $(RequiredFreeWinnt)
        shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String13a)$(RequiredFreeWinnt)$(String13b)$(!STF_NTDRIVE)$(String13c)
        goto patchnotdone
    endif
    set STF_PRODUCT = ""
    OpenRegKey $(!REG_H_LOCAL) "" "System\CurrentControlSet\Control\ProductOptions" 33554432 KeyProductOption
    ifstr(i) $(KeyProductOption) != ""
        GetRegValue $(KeyProductOption) "ProductType" ProductTypeList
        set TempProductType = *($(ProductTypeList),4)
        ifstr(i) $(TempProductType) == "winnt"
            set !STF_PRODUCT = WINNT
            set !PRODUCT_DIR = WINNT
        else-ifstr(i) $(TempProductType) == "lanmannt"
            set !STF_PRODUCT = LANMANNT
            set !PRODUCT_DIR = NTAS
        else-ifstr(i) $(TempProductType) == "servernt"
            set !STF_PRODUCT = SERVERNT
            set !PRODUCT_DIR = NTAS
        endif
        CloseRegKey $(KeyProductOptions)
    endif
    ifstr(i) $(STF_PRODUCT) == ""
        shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String14)
        goto patchnotdone
    endif
    ifstr(i) $(!STF_PLATFORM) == I386
        set STF_HALDEST = $(!STF_WINDOWSSYSPATH)
        LibraryProcedure STATUS,$(!PATCHLIBHANDLE), GetOsLoaderDest
        ifstr(i) $(STATUS) == ERROR
            goto patchnotdone
        else
            set STF_OSLDEST = $(STATUS)
        endif
        set NtLdrName = $(STF_OSLDEST)"ntldr"
        LibraryProcedure STATUS,$(!PATCHLIBHANDLE), IsNTLDRVersionNewer $(NtLdrName)
        ifstr(i) $(STATUS) == "YES"
            set CopyLoader = FALSE
        endif
    else
        read-syms NVRAMVars
        detect    NVRAMVars
        LibraryProcedure STATUS,$(!PATCHLIBHANDLE), GetOsLoaderDest         +
                                                         $(SystemPartition) +
                                                         $(OsLoader)        +
                                                         $(OsLoadPartition) +
                                                         $(OsLoadFilename)
        ifstr(i) $(STATUS) == ERROR
            goto patchnotdone
        else
            set STF_OSLDEST = $(STATUS)
            set STF_HALDEST = $(STATUS)
        endif
    endif
    OpenRegKey $(!REG_H_LOCAL) "" "Software\Microsoft\INetStp" 33554432 KeySvc
    ifstr(i) $(KeySvc) != ""
        GetRegValue $(KeySvc) "InstallPath" DestPathValue
        set !STF_IISPATH0 = *($(DestPathValue), 4)
        ifstr(i) $(STF_IISPATH0) != ""
            set IISPathFound = TRUE
            set STF_IISPATH = $(STF_IISPATH0)\Server
        endif
    endif
    CloseRegKey $(KeySvc)
    set FileToCheck = $(STF_WINDOWSSYSPATH)\sslsspi.dll
    LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FileToCheck)
    ifstr(i) $(STATUS) == YES
        LibraryProcedure Result $(!PATCHLIBHANDLE) GetSslFileDesc $(FileToCheck)
        ifstr(i) $(Result) == "128"
            shell "" QueryOkCancel $(String22)
            ifstr(i) $($R1) == "CANCEL"
                set CopySSL = FALSE
            endif
        endif
    endif
    read-syms FilesKeyedSections
    set KeyedClassKeys  = ^(FileKeyedClasses, 0)
    set KeyedClassFiles = ^(FileKeyedClasses, 1)
    set KeyedClassFilesList = {}
    ForListDo $(KeyedClassKeys)
        set TmpKey       = Files$($)
        set TmpFile      = #(FileKeyedClasses, $($), 1)
        set TmpFilePath  = $($(TmpKey))\$(TmpFile)
        set KeyedClassFilesList = >($(KeyedClassFilesList), $(TmpFilePath))
    EndForListDo
    LibraryProcedure STATUS,$(!PATCHLIBHANDLE), GetFileTypes $(KeyedClassFilesList)
    ifstr(i) $(STATUS) == ERROR
        goto patchnotdone
    else-ifstr(i) $(STATUS) == SETUPLOGNOTPRESENT
        shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String11)
        goto patchnotdone
    else
        ForListDo $(KeyedClassKeys)
            set $($)Type = *($(STATUS), $(#))
        EndForListDo
    endif
    ifstr(i) $(BillboardPushed) == TRUE
        shell "subroutn.inf" PopBillboard
        set BillboardPushed = FALSE
    endif
    ifstr(i) $(Unattended) != TRUE
        shell "" QueryOkCancel $(String9)
        ifstr(i) $($R1) == "OK"
        else
            set String = $(String12)
            goto finish2
        endif
    endif
    shell "subroutn.inf" PushBillboard STATUSDLG $(Billboard2)
    set BillboardPushed = TRUE
    set MoveFileExList  = {}
    read-syms FileSections
    set FileSectionsList = ^(FileSections, 0)
    set FileSource  = $(!STF_SRCDIR)
    ForListDo $(FileSectionsList)
        set FileSection = $($)
        set FileDest    = $($($))
        set FileList    = ^($(FileSection), 0)
        ForListDo $(FileList)
            set FileKey          = $($)
            set File             = #($(FileSection), $(FileKey), 2)
            set FileDestFullPath = $(FileDest)\$(File)
            LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FileDestFullPath)
            ifstr(i) $(STATUS) == YES
                LibraryProcedure STATUS, $(!PATCHLIBHANDLE), IsFileOpenedExclusive $(FileDestFullPath)
                ifstr(i) $(STATUS) == ERROR
                    goto patchnotdone
                else
                    ifstr(i) $(STATUS) == "YES"
                        LibraryProcedure NEWFILE, $(!PATCHLIBHANDLE), GenerateTemporary $(FileDest)
                        ifstr(i) $(NEWFILE) == ERROR
                            goto patchnotdone
                        else
                            set FileComp = {$(FileDest)\$(NEWFILE), $(FileDestFullPath)}
                            set MoveFileExList = >($(MoveFileExList), $(FileComp))
                        endif
                    else
                        set NEWFILE = $(File)
                    endif
                    install Install-File
                endif
            endif
        EndForListDo
    EndForListDO
    set FileSource  = $(!STF_SRCDIR)
    ForListDo $(KeyedClassKeys)
        set FileSection = Files$($)
        set FileDest    = $($(FileSection))
        set FileKey     = $($($)Type)
        set KeyedClassChoices = ^(Files$($), 0)
        ifcontains(i) $(FileKey) in $(KeyedClassChoices)
            set File             = #(FileKeyedClasses, $($), 1)
            set FileDestFullPath = $(FileDest)\$(File)
            LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FileDestFullPath)
            ifstr(i) $(STATUS) == YES
                LibraryProcedure STATUS, $(!PATCHLIBHANDLE), IsFileOpenedExclusive $(FileDestFullPath)
                ifstr(i) $(STATUS) == ERROR
                    goto patchnotdone
                else
                    ifstr(i) $(STATUS) == "YES"
                        LibraryProcedure NEWFILE, $(!PATCHLIBHANDLE), GenerateTemporary $(FileDest)
                        ifstr(i) $(NEWFILE) == ERROR
                            goto patchnotdone
                        else
                            set FileComp = {$(FileDest)\$(NEWFILE), $(FileDestFullPath)}
                            set MoveFileExList = >($(MoveFileExList), $(FileComp))
                        endif
                    else
                        set NEWFILE = $(File)
                    endif
                    install Install-File
                endif
            endif
        endif
    EndForListDo
    ifstr(i) $(STF_PRODUCT) == "WINNT"
        set TEMP_PRODUCT = WINNT
    else
        set TEMP_PRODUCT = LANMANNT
    endif
    read-syms FileSections$(TEMP_PRODUCT)
    set FileSectionsList = ^(FileSections$(TEMP_PRODUCT), 0)
; IF CITRIX
    set FileSource  = $(!STF_SRCDIR)
; ELSE  CITRIX
;   set FileSource  = $(!STF_SRCDIR)$(PRODUCT_DIR)
; ENDIF CITRIX
    ForListDo $(FileSectionsList)
        set FileSection = $($)
        set FileDest    = $($($))
        set FileList    = ^($(FileSection), 0)
        ForListDo $(FileList)
            set FileKey      = $($)
            set File         = #($(FileSection), $(FileKey), 2)
            set FileDestFullPath = $(FileDest)\$(File)
            LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FileDestFullPath)
            ifstr(i) $(STATUS) == YES
                LibraryProcedure STATUS, $(!PATCHLIBHANDLE), IsFileOpenedExclusive $(FileDestFullPath)
                ifstr(i) $(STATUS) == ERROR
                    goto patchnotdone
                else
                    ifstr(i) $(STATUS) == "YES"
                        LibraryProcedure NEWFILE, $(!PATCHLIBHANDLE), GenerateTemporary $(FileDest)
                        ifstr(i) $(NEWFILE) == ERROR
                            goto patchnotdone
                        else
                            set FileComp = {$(FileDest)\$(NEWFILE), $(FileDestFullPath)}
                            set MoveFileExList = >($(MoveFileExList), $(FileComp))
                        endif
                    else
                        set NEWFILE = $(File)
                    endif
                    install Install-File
                endif
            endif
        EndForListDo
    EndForListDO

;IFDEF CITRIX
    SET STF_DECOMPRESS_SAVE = $(STF_DECOMPRESS)
    SET STF_DECOMPRESS = ""
    read-syms FileSectionsWFClients
    set FileSectionsList = ^(FileSectionsWFClients, 0)
    ForListDo $(FileSectionsList)
        set FileSection = $($)
        ifstr(i) $(FileSection) == "FilesWFCDOSDisk1"
            set FileSource  = $(!STF_SRCDIR)WFCDOS
        else-ifstr(i) $(FileSection) == "FilesWFC16Disk1"
            set FileSource  = $(!STF_SRCDIR)WFC16
        else-ifstr(i) $(FileSection) == "FilesWFC32Disk1" 
            set FileSource  = $(!STF_SRCDIR)WFC32
        else-ifstr(i) $(FileSection) == "FilesWFC32Disk2"
            set FileSource  = $(!STF_SRCDIR)WFC32
        else-ifstr(i) $(FileSection) == "FilesICAEditDisk1"
            set FileSource  = $(!STF_SRCDIR)ICAEDIT
        else-ifstr(i) $(FileSection) == "FilesActiveXDisk1"
            set FileSource  = $(!STF_SRCDIR)WFCWEB
        else-ifstr(i) $(FileSection) == "FilesNSPlugDisk1"
            set FileSource  = $(!STF_SRCDIR)WFCWEB
        endif
        set FileDest    = $($($))
        RunProgramMin STATUS "" "" "makedir.exe" $(FileDest)
        set FileList    = ^($(FileSection), 0)
        ForListDo $(FileList)
            set FileKey = $($)
            set File    = #($(FileSection), $(FileKey), 2)
            set NEWFILE = $(File)
            set FileDestFullPath = $(FileDest)\$(File)
            install Install-File
        EndForListDo
    EndForListDO
; Now do the file NCADMIN.INF (which should NOT be copied if it already exists,
; as that may step on an installed SecureICA NCADMIN.INF).
    read-syms FileSectionsWFClients2
    set FileSectionsList = ^(FileSectionsWFClients2, 0)
    ForListDo $(FileSectionsList)
        set FileSection = $($)
        ifstr(i) $(FileSection) == "FilesAllClients"
            set FileSource  = $(!STF_SRCDIR)
        endif
        set FileDest    = $($($))
        RunProgramMin STATUS "" "" "makedir.exe" $(FileDest)
        set FileList    = ^($(FileSection), 0)
        ForListDo $(FileList)
            set FileKey = $($)
            set File    = #($(FileSection), $(FileKey), 2)
            set NEWFILE = $(File)
            set FileDestFullPath = $(FileDest)\$(File)
; Now, ONLY DO IF IT DOESN'T EXIST.
            LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FileDestFullPath)
            ifstr(i) $(STATUS) == YES
            else
                install Install-File
            endif
        EndForListDo
    EndForListDO
    SET STF_DECOMPRESS = $(STF_DECOMPRESS_SAVE)
;ENDIF CITRIX

    ifstr(i) $(BillboardPushed) == TRUE
        shell "subroutn.inf" PopBillboard
        set BillboardPushed = FALSE
    endif
    read-syms FileSectionsCopyAlways
    set FileSectionsList = ^(FileSectionsCopyAlways, 0)
    set FileSource  = $(!STF_SRCDIR)
    ForListDo $(FileSectionsList)
        set FileSection = $($)
        set FileDest    = $($($))
        set FileList    = ^($(FileSection), 0)
        ForListDo $(FileList)
            set FileKey = $($)
            set File    = #($(FileSection), $(FileKey), 2)
            set NEWFILE = $(File)
            set FileDestFullPath = $(FileDest)\$(File)
            install Install-File
        EndForListDo
    EndForListDO
    read-syms FileSectionsCopyAlways$(TEMP_PRODUCT)
    set FileSectionsList = ^(FileSectionsCopyAlways$(TEMP_PRODUCT), 0)
    set FileSource  = $(!STF_SRCDIR)$(PRODUCT_DIR)
    ForListDo $(FileSectionsList)
        set FileSection = $($)
        set FileDest    = $($($))
        set FileList    = ^($(FileSection), 0)
        ForListDo $(FileList)
            set FileKey = $($)
            set File    = #($(FileSection), $(FileKey), 2)
            set NEWFILE = $(File)
            set FileDestFullPath = $(FileDest)\$(File)
            install Install-File
        EndForListDo
    EndForListDO
    ifstr(i) $(FPNWSysPathFound) == TRUE
        read-syms FileSectionsFPNW
        set FileSectionsList = ^(FileSectionsFPNW, 0)
        set FileSource  = $(!STF_SRCDIR)
        ForListDo $(FileSectionsList)
            set FileSection = $($)
            set FileDest    = $($($))
            set FileList    = ^($(FileSection), 0)
            ForListDo $(FileList)
                set FileKey      = $($)
                set File         = #($(FileSection), $(FileKey), 2)
                set FileDestFullPath = $(FileDest)\$(File)
                LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FileDestFullPath)
                ifstr(i) $(STATUS) == YES
                    LibraryProcedure STATUS, $(!PATCHLIBHANDLE), IsFileOpenedExclusive $(FileDestFullPath)
                    ifstr(i) $(STATUS) == ERROR
                        goto patchnotdone
                    else
                        ifstr(i) $(STATUS) == "YES"
                            LibraryProcedure NEWFILE, $(!PATCHLIBHANDLE), GenerateTemporary $(FileDest)
                            ifstr(i) $(NEWFILE) == ERROR
                                goto patchnotdone
                            else
                                set FileComp = {$(FileDest)\$(NEWFILE), $(FileDestFullPath)}
                                set MoveFileExList = >($(MoveFileExList), $(FileComp))
                            endif
                        else
                            set NEWFILE = $(File)
                        endif
                        install Install-File
                    endif
                endif
            EndForListDo
        EndForListDO
    endif
    ifstr(i) $(CopyLoader) == TRUE
        read-syms FileSectionsOsLoader
        set FileSectionsList = ^(FileSectionsOsLoader, 0)
        set FileSource  = $(!STF_SRCDIR)
        ForListDo $(FileSectionsList)
            set FileSection = $($)
            set FileDest    = $($($))
            set FileList    = ^($(FileSection), 0)
            ForListDo $(FileList)
                set FileKey      = $($)
                set File         = #($(FileSection), $(FileKey), 2)
                set FileDestFullPath = $(FileDest)\$(File)
                LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FileDestFullPath)
                ifstr(i) $(STATUS) == YES
                    LibraryProcedure STATUS, $(!PATCHLIBHANDLE), IsFileOpenedExclusive $(FileDestFullPath)
                    ifstr(i) $(STATUS) == ERROR
                        goto patchnotdone
                    else
                        ifstr(i) $(STATUS) == "YES"
                            LibraryProcedure NEWFILE, $(!PATCHLIBHANDLE), GenerateTemporary $(FileDest)
                            ifstr(i) $(NEWFILE) == ERROR
                                goto patchnotdone
                            else
                                set FileComp = {$(FileDest)\$(NEWFILE), $(FileDestFullPath)}
                                set MoveFileExList = >($(MoveFileExList), $(FileComp))
                            endif
                        else
                            set NEWFILE = $(File)
                        endif
                        install Install-File
                    endif
                endif
            EndForListDo
        EndForListDO
    endif
    ifstr(i) $(IISPathFound) == TRUE
        read-syms FileSectionsIIS
        set FileSectionsList = ^(FileSectionsIIS, 0)
        set FileSource  = $(!STF_SRCDIR)
        ForListDo $(FileSectionsList)
            set FileSection = $($)
            set FileDest    = $($($))
            set FileList    = ^($(FileSection), 0)
            ForListDo $(FileList)
                set FileKey      = $($)
                set File         = #($(FileSection), $(FileKey), 2)
                set FileDestFullPath = $(FileDest)\$(File)
                LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FileDestFullPath)
                ifstr(i) $(STATUS) == YES
                    LibraryProcedure STATUS, $(!PATCHLIBHANDLE), IsFileOpenedExclusive $(FileDestFullPath)
                    ifstr(i) $(STATUS) == ERROR
                        goto patchnotdone
                    else
                        ifstr(i) $(STATUS) == "YES"
                            LibraryProcedure NEWFILE, $(!PATCHLIBHANDLE), GenerateTemporary $(FileDest)
                            ifstr(i) $(NEWFILE) == ERROR
                                goto patchnotdone
                            else
                                set FileComp = {$(FileDest)\$(NEWFILE), $(FileDestFullPath)}
                                set MoveFileExList = >($(MoveFileExList), $(FileComp))
                            endif
                        else
                            set NEWFILE = $(File)
                        endif
                        install Install-File
                    endif
                endif
            EndForListDo
        EndForListDO
    endif
    ifstr(i) $(CopySSL) == TRUE
        read-syms FileSectionsSSL
        set FileSectionsList = ^(FileSectionsSSL, 0)
        set FileSource  = $(!STF_SRCDIR)
        ForListDo $(FileSectionsList)
            set FileSection = $($)
            set FileDest    = $($($))
            set FileList    = ^($(FileSection), 0)
            ForListDo $(FileList)
                set FileKey      = $($)
                set File         = #($(FileSection), $(FileKey), 2)
                set FileDestFullPath = $(FileDest)\$(File)
                LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FileDestFullPath)
                ifstr(i) $(STATUS) == YES
                    LibraryProcedure STATUS, $(!PATCHLIBHANDLE), IsFileOpenedExclusive $(FileDestFullPath)
                    ifstr(i) $(STATUS) == ERROR
                        goto patchnotdone
                    else
                        ifstr(i) $(STATUS) == "YES"
                            LibraryProcedure NEWFILE, $(!PATCHLIBHANDLE), GenerateTemporary $(FileDest)
                            ifstr(i) $(NEWFILE) == ERROR
                                goto patchnotdone
                            else
                                set FileComp = {$(FileDest)\$(NEWFILE), $(FileDestFullPath)}
                                set MoveFileExList = >($(MoveFileExList), $(FileComp))
                            endif
                        else
                            set NEWFILE = $(File)
                        endif
                        install Install-File
                    endif
                endif
            EndForListDo
        EndForListDO
    endif
    read-syms ProgressCopy$(!STF_LANGUAGE)
    install   Install-DoCopy
    ifstr(i) $(STF_INSTALL_OUTCOME) == "STF_USERQUIT"
        goto patchnotdone
    else-ifstr(i) $(STF_INSTALL_OUTCOME) == "STF_FAILURE"
        goto patchnotdone
    endif
; IF CITRIX
    RunProgramMin STATUS "" "" $(!STF_WINDOWSSYSPATH)"\hotfix.exe" "/replace:Service#Pack#5B /space:# *"
    RunProgramMin STATUS "" "" $(!STF_WINDOWSSYSPATH)"\fix40pdc.exe" ""
; END CITRIX
    set FileSection = "FileAttributes"
    set FileList    = ^(FileSection, 0)
    ForListDo $(FileList)
        set FileKey          = $($)
        set File             = #($(FileSection), $(FileKey), 2)
        set FileDest         = #($(FileSection), $(FileKey), 3)
        set FilePerms        = #($(FileSection), $(FileKey), 4)
        set FileDestFullPath = $(FileDest)\$(File)
        ifstr(i) $(FilePerms) != ""
            LibraryProcedure STATUS,$(!PATCHLIBHANDLE),ChangeFileAttributes $(FilePerms) $(FileDestFullPath)
        endif
    EndForListDo
processmovefileex=+
    ForListDo $(MoveFileExList)
        set ExistingPath = *($($), 1)
        set NewPath      = *($($), 2)
        LibraryProcedure STATUS, $(!PATCHLIBHANDLE), CopyFileOnReboot $(ExistingPath) $(NewPath)
        ifstr(i) $(STATUS) == ERROR
            goto patchnotdone
        endif
    EndForListDo
    ifstr(i) $(!STF_PLATFORM) == I386
        set NtLdrPath = $(STF_OSLDEST)"ntldr"
        LibraryProcedure STATUS, $(!PATCHLIBHANDLE), ForceFileNoCompress $(NtLdrPath)
        ifstr(i) $(STATUS) == ERROR
            goto patchnotdone
        endif
    endif
patchdone =+
    LibraryProcedure STATUS,$(!PATCHLIBHANDLE), RestoreSetupLog
    LibraryProcedure STATUS,$(!PATCHLIBHANDLE), FixSetupLogChksum $(SamsrvChksum)
    ifstr(i) $(BillboardPushed) == TRUE
        shell "subroutn.inf" PopBillboard
        set BillboardPushed = FALSE
    endif
    shell "" DoRegistryModifications $(!STF_CSDVER)
    ifstr(i) $(Unattended) != TRUE
        read-syms SetupDoneDlg$(!STF_LANGUAGE)
        ui start "SetupDone"
        ifstr(i) $(DLGEVENT) == "CONTINUE"
            ui pop 1
            goto rebootend
        else
            ui pop 1
            goto finish1
        endif
    else
        goto rebootend
    endif
patchnotdone =+
    LibraryProcedure STATUS,$(!PATCHLIBHANDLE), RestoreSetupLog
    set String = $(String2)
finish2 =+
    ifstr(i) $(BillboardPushed) == TRUE
        shell "subroutn.inf" PopBillboard
        set BillboardPushed = FALSE
    endif
    shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "FATAL" $(String)
    goto finish1
finish1 =+
    install   FreeSetupLibrary
finish =+
    install   FreePatchLibrary
    exit
rebootend =+
    set Reboot = YES
    ifstr(i) $(Unattended) != TRUE
	install	Install-Shutdown
    else
	ifstr(i) $(ForceClose) != TRUE
	    set ForceAppsClosed = NO
	else
	    set ForceAppsClosed = YES
	endif
	install Install-Shutdown2
    endif
    goto finish1
    exit
[LoadPatchLibrary]
    LoadLibrary "x" $(CWD)\patchdll.dll !PATCHLIBHANDLE
    exit
[FreePatchLibrary]
    ifstr(i) $(!PATCHLIBHANDLE) != ""
        FreeLibrary $(!PATCHLIBHANDLE)
    endif
    exit
[LoadSetupLibrary]
    LoadLibrary "x" $(!STF_CWDDIR)setupdll.dll !LIBHANDLE
    exit
[FreeSetupLibrary]
    ifstr(i) $(!LIBHANDLE) != ""
        FreeLibrary $(!LIBHANDLE)
    endif
    exit
[Install-File]
    set STF_VITAL = ""
    AddSectionKeyFileToCopyList $(FileSection) $(FileKey) $(FileSource) $(FileDest)
    exit
[Install-DoCopy]
    CopyFilesInCopyList
    exit
[Install-Shutdown]
    LibraryProcedure STATUS,$(!LIBHANDLE),ShutdownSystem $(Reboot)
    exit
[Install-Shutdown2]
    LibraryProcedure STATUS,$(!PATCHLIBHANDLE),ShutdownSystem2 $(Reboot) $(ForceAppsClosed)
    exit
[RegistryConstants]
    MaskAllAccess          = 33554432
    NoTitle                = 0
    RegLastError           = $(!REG_ERROR_SUCCESS)
    CurrentControlSet      = "SYSTEM\CurrentControlSet"
    ServicesBaseName       = $(CurrentControlSet)"\Services"
    NetbtKeyPath           = $(ServicesBaseName)"\Netbt"
[DoRegistryModifications]
    set Status = STATUS_FAILED
    read-syms RegistryConstants
    set KeyPath   = { +
                     {SYSTEM,            $(NoTitle), $(MaskAllAccess)}, +
                     {CurrentControlSet, $(NoTitle), $(MaskAllAccess)}, +
                     {Control,           $(NoTitle), $(MaskAllAccess)}, +
                     {ProductOptions,    $(NoTitle), $(MaskAllAccess)}, +
                    }
    set KeyValues = { +
                     {CSDVersion, $(NoTitle), $(!REG_VT_DWORD), $($0) } +
                    }
    shell "registry.inf" CreateKey $(!REG_H_LOCAL) $(KeyPath) $(KeyValues)
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
        goto endCSDVersionCreate
    endif
    ifstr(i) $($R0) != STATUS_SUCCESSFUL
        goto endCSDVersionCreate
    else
        CloseRegKey $($R1)
    endif
    set KeyPath   = { +
                     {System,         $(NoTitle), $(MaskAllAccess)}, +
                     {CurrentControlSet,$(NoTitle), $(MaskAllAccess)}, +
                     {Services,       $(NoTitle), $(MaskAllAccess)}, +
                     {Eventlog,       $(NoTitle), $(MaskAllAccess)}, +
                     {System,         $(NoTitle), $(MaskAllAccess)}, +
                     {Cdm,            $(NoTitle), $(MaskAllAccess)}, +
                    }
    set KeyValues = { +
                     {EventMessageFile, $(NoTitle), $(!REG_VT_EXPAND_SZ), "%SystemRoot%\System32\netevent.dll;%SystemRoot%\System32\cxstatus.dll" }  +
                    }
    shell "registry.inf" CreateKey $(!REG_H_LOCAL) $(KeyPath) $(KeyValues)
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
        goto endCSDVersionCreate
    endif
    ifstr(i) $($R0) != STATUS_SUCCESSFUL
        goto endCSDVersionCreate
    else
        CloseRegKey $($R1)
    endif
    set KeyPath   = { +
                     {Software,       $(NoTitle), $(MaskAllAccess)}, +
                     {Citrix,         $(NoTitle), $(MaskAllAccess)}, +
                     {Compatibility,  $(NoTitle), $(MaskAllAccess)}, +
                     {CLSID,          $(NoTitle), $(MaskAllAccess)}, +
                     {{DB8F0657-E1AF-11D0-B098-00A0248C8629}, $(NoTitle), $(MaskAllAccess)}, +
                    }
    set KeyValues = { +
                     {fSystemGlobalClass, $(NoTitle), $(!REG_VT_DWORD), 1 }  +
                    }
    shell "registry.inf" CreateKey $(!REG_H_LOCAL) $(KeyPath) $(KeyValues)
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
        goto endCSDVersionCreate
    endif
    ifstr(i) $($R0) != STATUS_SUCCESSFUL
        goto endCSDVersionCreate
    else
        CloseRegKey $($R1)
    endif
    set KeyPath   = { +
                     {Software,       $(NoTitle), $(MaskAllAccess)}, +
                     {Citrix,         $(NoTitle), $(MaskAllAccess)}, +
                     {Compatibility,  $(NoTitle), $(MaskAllAccess)}, +
                     {Applications,   $(NoTitle), $(MaskAllAccess)}, +
                     {EXCEL,          $(NoTitle), $(MaskAllAccess)}, +
                    }
    set KeyValues = { +
                     {Flags, $(NoTitle), $(!REG_VT_DWORD), 12 }  +
                     {OpenClipboardDelayInMilliSecs, $(NoTitle), $(!REG_VT_DWORD), 32 }  +
                     {OpenClipboardRetries, $(NoTitle), $(!REG_VT_DWORD), 14 }  +
                     {MsgQBadAppSleepTimeInMillisec, $(NoTitle), $(!REG_VT_DWORD), 0 }  +
                    }
    shell "registry.inf" CreateKey $(!REG_H_LOCAL) $(KeyPath) $(KeyValues)
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
        goto endCSDVersionCreate
    endif
    ifstr(i) $($R0) != STATUS_SUCCESSFUL
        goto endCSDVersionCreate
    else
        CloseRegKey $($R1)
    endif
    set KeyPath   = { +
                     {Software,       $(NoTitle), $(MaskAllAccess)}, +
                     {Citrix,         $(NoTitle), $(MaskAllAccess)}, +
                     {Compatibility,  $(NoTitle), $(MaskAllAccess)}, +
                     {Applications,   $(NoTitle), $(MaskAllAccess)}, +
                     {wfshell,        $(NoTitle), $(MaskAllAccess)}, +
                    }
    set KeyValues = { +
                     {Flags, $(NoTitle), $(!REG_VT_DWORD), 8 }  +
                     {OpenClipboardDelayInMilliSecs, $(NoTitle), $(!REG_VT_DWORD), 32 }  +
                     {OpenClipboardRetries, $(NoTitle), $(!REG_VT_DWORD), 14 }  +
                    }
    shell "registry.inf" CreateKey $(!REG_H_LOCAL) $(KeyPath) $(KeyValues)
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
        goto endCSDVersionCreate
    endif
    ifstr(i) $($R0) != STATUS_SUCCESSFUL
        goto endCSDVersionCreate
    else
        CloseRegKey $($R1)
    endif
    set KeyPath   = { +
                     {Software,       $(NoTitle), $(MaskAllAccess)}, +
                     {Citrix,         $(NoTitle), $(MaskAllAccess)}, +
                     {Compatibility,  $(NoTitle), $(MaskAllAccess)}, +
                     {Applications,   $(NoTitle), $(MaskAllAccess)}, +
                     {ORGANIZE,        $(NoTitle), $(MaskAllAccess)}, +
                    }
    set KeyValues = { +
                     {Flags, $(NoTitle), $(!REG_VT_DWORD), 12 }  +
                     {MsgQBadAppSleepTimeInMillisec, $(NoTitle), $(!REG_VT_DWORD), 0 }  +
                    }
    shell "registry.inf" CreateKey $(!REG_H_LOCAL) $(KeyPath) $(KeyValues)
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
        goto endCSDVersionCreate
    endif
    ifstr(i) $($R0) != STATUS_SUCCESSFUL
        goto endCSDVersionCreate
    else
        CloseRegKey $($R1)
    endif
    set KeyPath   = { +
                     {Software,       $(NoTitle), $(MaskAllAccess)}, +
                     {Citrix,         $(NoTitle), $(MaskAllAccess)}, +
                     {Compatibility,  $(NoTitle), $(MaskAllAccess)}, +
                     {Applications,   $(NoTitle), $(MaskAllAccess)}, +
                     {ORG2BLD,        $(NoTitle), $(MaskAllAccess)}, +
                    }
    set KeyValues = { +
                     {Flags, $(NoTitle), $(!REG_VT_DWORD), 12 }  +
                     {MsgQBadAppSleepTimeInMillisec, $(NoTitle), $(!REG_VT_DWORD), 0 }  +
                    }
    shell "registry.inf" CreateKey $(!REG_H_LOCAL) $(KeyPath) $(KeyValues)
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
        goto endCSDVersionCreate
    endif
    ifstr(i) $($R0) != STATUS_SUCCESSFUL
        goto endCSDVersionCreate
    else
        CloseRegKey $($R1)
    endif
    set KeyPath   = { +
                     {Software,       $(NoTitle), $(MaskAllAccess)}, +
                     {Citrix,         $(NoTitle), $(MaskAllAccess)}, +
                     {Compatibility,  $(NoTitle), $(MaskAllAccess)}, +
                     {Applications,   $(NoTitle), $(MaskAllAccess)}, +
                     {ACMSETUP,        $(NoTitle), $(MaskAllAccess)}, +
                    }
    set KeyValues = { +
                     {Flags, $(NoTitle), $(!REG_VT_DWORD), 12 }  +
                     {MsgQBadAppSleepTimeInMillisec, $(NoTitle), $(!REG_VT_DWORD), 0 }  +
                    }
    shell "registry.inf" CreateKey $(!REG_H_LOCAL) $(KeyPath) $(KeyValues)
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
        goto endCSDVersionCreate
    endif
    ifstr(i) $($R0) != STATUS_SUCCESSFUL
        goto endCSDVersionCreate
    else
        CloseRegKey $($R1)
    endif
; ENDIF CITRIX
    LibraryProcedure STATUS, $(!PATCHLIBHANDLE), ChangeReservedResourcesValues
    set Status = STATUS_SUCCESSFUL
endCSDVersionCreate = +
    Return $(Status)
[GetCSDVersion]
    set Status = STATUS_SUCCESSFUL
    read-syms RegistryConstants
    set CSDVersion = 0
    set KeyName = "SYSTEM\CurrentControlSet\Control\ProductOptions"
    OpenRegKey $(!REG_H_LOCAL) "" $(KeyName) $(!REG_KEY_READ) KeyHandle
    ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
        Debug-Output "REGISTRY.INF: Couldn't open windows nt software key for read access"
        goto end_GetCSDVersion
    endif
    GetRegValue $(KeyHandle) "CSDVersion" CSDVersionValue
    ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
        CloseRegKey $(KeyHandle)
        goto end_GetCSDVersion
    endif
    set CSDVersion =  *($(CSDVersionValue), 4)
    CloseRegKey $(KeyHandle)
end_GetCSDVersion = +
    Return $(Status) $(CSDVersion)
[GetCheckedFree]
    set Status = STATUS_SUCCESSFUL
    read-syms RegistryConstants
    set System = Free
    set KeyName = "Software\Microsoft\Windows NT\CurrentVersion"
    OpenRegKey $(!REG_H_LOCAL) "" $(KeyName) $(!REG_KEY_READ) KeyHandle
    ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
        Debug-Output "REGISTRY.INF: Couldn't open windows nt software key for read access"
        goto end_GetCheckedFree
    endif
    GetRegValue $(KeyHandle) "CurrentType" CurrentTypeValue
    ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
        CloseRegKey $(KeyHandle)
        goto end_GetCheckedFree
    endif
    Split-String *($(CurrentTypeValue), 4) " " CurrentTypeList
    ForListDo $(CurrentTypeList)
       ifstr(i) $($) == "free"
          set System = free
       else-ifstr(i) $($) == "checked"
          set System = checked
       endif
    EndForListDo
    CloseRegKey $(KeyHandle)
end_GetCheckedFree = +
    Return $(Status) $(System)
[QueryOkCancel]
    set DlgText = $($0)
    read-syms QueryOKCancelDlg$(!STF_LANGUAGE)
    ui start "SetupMessage"
    ifstr(i) $(DLGEVENT) == "OK"
        set Status     = STATUS_SUCCESSFUL
        set UserAction = $(DLGEVENT)
    else-ifstr(i) $(DLGEVENT) == "CANCEL"
        set Status     = STATUS_SUCCESSFUL
        set UserAction = $(DLGEVENT)
    else
        set Status     = STATUS_FAILED
        set UserAction = "CANCEL"
    endif
    Return $(Status) $(UserAction)
[Source Media Descriptions]
    1 = "WinFrame CD-ROM" , TAGFILE = cdrom.w
[Signature]
    FileType = MICROSOFT_FILE
[GetSignature]
    read-syms Signature
    return $(FileType)
[ProductType]
STF_PRODUCT  = Winnt
STF_PLATFORM = I386
[Source Media Descriptions]
    1  = "WinFrame 1.7 Update Disk #1"  , TAGFILE = disk1
    2  = "WinFrame 1.7 Update Disk #2"  , TAGFILE = disk2
    3  = "WinFrame 1.7 Update Disk #3"  , TAGFILE = disk3
    4  = "WinFrame 1.7 Update Disk #4"  , TAGFILE = disk4
    5  = "WinFrame 1.7 Update Disk #5"  , TAGFILE = disk5
    6  = "WinFrame 1.7 Update Disk #6"  , TAGFILE = disk6
    7  = "WinFrame 1.7 Update Disk #7"  , TAGFILE = disk7
    8  = "WinFrame 1.7 Update Disk #8"  , TAGFILE = disk8
    9  = "WinFrame 1.7 Update Disk #9"  , TAGFILE = disk9
    10 = "WinFrame 1.7 Update Disk #10" , TAGFILE = disk10
    11 = "WinFrame 1.7 Update Disk #11" , TAGFILE = disk11
    12 = "WinFrame 1.7 Update Disk #12" , TAGFILE = disk12
    13 = "WinFrame 1.7 Update Disk #13" , TAGFILE = disk13
    14 = "WinFrame 1.7 Update Disk #14" , TAGFILE = disk14
    15 = "WinFrame 1.7 Update Disk #15" , TAGFILE = disk15
[Strings]
    String1 = "This update disk cannot be used on this platform."
    String2 = "Setup failed to update the system."
    String3 = "Setup has successfully updated your WinFrame 1.7 system with Service Pack 5B."
    String4 = "You do not have permission to update the system.  Please contact your system administrator."
    String5 = "Setup failed to setup your updated files for secure operation."
    String8 = "Setup has detected that the version of the system installed is "+
              "newer than the update you are applying to it.  The update can render "+
              "your system unstartable."
; IFDEF CITRIX
    String9 = "This program will install Service Pack 5B [English] on your WinFrame 1.7 system.  "+
; ELSE  CITRIX
;   String9 = "Setup is going to update your Windows NT system with the English "+
; ENDIF CITRIX
              "  If you wish to cancel the installation "+
              "process, please press Cancel or press OK to continue."
    String11 = "Setup couldn't find the setup.log file in your repair directory. "+
               "Setup cannot proceed to update your system.  Please copy the setup.log "+
               "file from your Emergency Repair Disk to your repair directory "+
               "and restart the update."
    String12 = "Setup has not updated your system.  If you wish to update your "+
               "system please run the update utility again."
    String13a = "Not enough hard disk space to run Setup.  Setup needs at least "
    String13b = "MB of free hard disk space on "
    String13c = " before it can be run.  Delete some"+
                " files and run the Update program again."
; IFDEF CITRIX
    String14  = "Setup cannot update your WinFrame 1.7 files because it could not "+
; ELSE  CITRIX
;   String14  = "Setup cannot update your Windows NT files because it could not "+
; ENDIF CITRIX
                "determine your product type.  Your registry may be corrupt."
    String15  = "Setup cannot update your checked system.  The update can only "+
                "be applied to the retail system."
; IFDEF CITRIX
    String16  = "Setup cannot update your WinFrame 1.7 files because your system is "+
                "a pre-release of WinFrame 1.7. Please upgrade your system to the retail "+
                "WinFrame 1.7, and then update your system."
    String17  = "Setup cannot update your WinFrame 1.7 files because your system is "+
                "a pre-release of WinFrame 1.7. Please upgrade your system to the retail "+
                "WinFrame 1.7, and then update your system."
    String18  = "Setup cannot update your WinFrame 1.7 files because your system is "+
                "a version later than WinFrame 1.7.  The update can only be applied "+
                "to WinFrame 1.7."
    String19  = "Setup cannot update your WinFrame 1.7 files because you have installed "+
                "the IBM Power Management version of WinFrame 1.7.  Please see IBM for "+
                "a Service Pack that can be installed on your system."
    String20  = "Setup cannot update your WinFrame 1.7 files because the language "+
                "installed on your system is different from the Service Pack language."
; ELSE  CITRIX
;   String16  = "Setup cannot update your Windows NT files because your system is "+
;               "NT 3.1 or NT 3.5. Please upgrade your system to the retail Windows NT 3.51, "+
;               "and then update your system."
;   String17  = "Setup cannot update your Windows NT files because your system is "+
;               "a pre-release of NT 3.51. Please upgrade your system to the retail "+
;               "Windows NT 3.51, and then update your system."
;   String18  = "Setup cannot update your Windows NT files because your system is "+
;               "a version later than NT 3.51.  The update can only be applied "+
;               "to Windows NT 3.51."
;   String19  = "Setup cannot update your Windows NT files because you have installed "+
;               "the IBM Power Management version of NT 3.51.  Please see IBM for "+
;               "a Service Pack that can be installed on your system."
;   String20  = "Setup cannot update your Windows NT files because the language "+
;               "installed on your system is different from the Service Pack language."
; ENDIF CITRIX
    String21  = "Setup cannot find the location of your NTOSKRNL.EXE file in SETUP.LOG.  "+
; IFDEF CITRIX
                "You may have renamed the WinFrame 1.7 root directory since you first installed "+
; ELSE  CITRIX
;               "You may have renamed the Windows NT root directory since you first installed "+
; ENDIF CITRIX
                "your system.  For the Service Pack 5B Update to work correctly, you must rename "+
                "your root directory back to what it was when you first installed your system."
    String22  = "You have a domestic-version 128-bit PCT/SSL security provider installed on your machine."$(LF)$(LF)+
                "This Service Pack contains only an export grade version 40-bit PCT/SSL security provider."$(LF)$(LF)+
                "Select Cancel to skip copying this file.  Your original 128-bit security provider will be left intact."$(LF)+
                "Please see the readme.txt for information on obtaining the updated 128-bit security provider."$(LF)$(LF)+
                "Otherwise, if you really know what you're doing, hit OK to overwrite."$(LF)$(LF)+
                "Want to overwrite?"
    Billboard1 = "Please wait..."
    Billboard2 = "Please wait while the files to be updated are determined..."
    Billboard3 = "Please wait while the Emergency Repair Disk is updated..."
[ProgressCopyENG]
; IFDEF CITRIX
    ProCaption   = "Service Pack 5B for WinFrame 1.7 Setup"
; ELSE  CITRIX
;   ProCaption   = "Windows NT Setup"
; ENDIF CITRIX
    ProCancel    = "Cancel"
; IFDEF CITRIX
    ProCancelMsg = "The WinFrame 1.7 files are not completely updated.  Are you sure you want "+
; ELSE  CITRIX
;   ProCancelMsg = "The Windows NT 3.51 files are not completely updated.  Are you sure you want "+
; ENDIF
                   "to cancel copying files?"
    ProCancelCap = "Service Pack 5B for WinFrame 1.7"
    ProText1     = "Copying:"
    ProText2     = "To:"
[SetupDoneDlgENG]
; IFDEF CITRIX
    Caption     = "Service Pack 5B for WinFrame 1.7 Setup"
    DlgText     = "WinFrame 1.7 has been updated with Service Pack 5B.  If you change or add "+
; ELSE  CITRIX
;   Caption     = "Windows NT Setup"
;   DlgText     = "Windows NT 3.51 has been updated. If you change or add "+
; ENDIF CITRIX
                  "any components to your system, you will need to "+
                  "reapply the update."$(!LF)$(!LF)+
                  "Remove disks from the floppy disk drives and "+
                  "choose Restart Computer to run the updated system."
    Reboot      = "&Restart Computer"
; IFDEF CITRIX
    Windows     = "E&xit to WinFrame 1.7"
; ELSE  CITRIX
;   Windows     = "E&xit to Windows NT"
; ENDIF CITRIX
    DlgType     = "Info"
    DlgTemplate = "REBOOT"
[QueryOKCancelDlgENG]
    STF_MB_TITLE = "Setup Message"
    DlgType      = "MessageBox"
    STF_MB_TEXT  = $(DlgText)
    STF_MB_TYPE  = 2
    STF_MB_ICON  = 4
    STF_MB_DEF   = 1
