
;***********************************************************************
; SOURCE MEDIA DESCRIPTION                      
; ------------------------
;***********************************************************************
[Source Media Descriptions]
    1 = "Windows NT Resource Kit, Disk 1" , TAGFILE = disk1
    2 = "Windows NT Resource Kit, Disk 2" , TAGFILE = disk2
    3 = "Windows NT Resource Kit, Disk 3" , TAGFILE = disk3
    4 = "Windows NT Resource Kit, Disk 4" , TAGFILE = disk4
    5 = "Windows NT Resource Kit, Disk 5" , TAGFILE = disk5
    6 = "Windows NT Resource Kit, Disk 6" , TAGFILE = disk6

;***********************************************************************
; CONSTANTS FOR USING DIALOGS
;***********************************************************************
[GeneralConstants]

    ;
    ; Constants to support the use of radio button dialogs
    ;

    Radio1  = "1"
    Radio2  = "2"
    Radio3  = "3"
    Radio4  = "4"
    Radio5  = "5"
    Radio6  = "6"
    Radio7  = "7"
    Radio8  = "8"
    Radio9  = "9"

    ;
    ; Constants to support the use of checkbox dialogs

    Chosen    = "ON"
    NotChosen = "OFF"


[RegistryConstants]

    MaskAllAccess = 33554432
    NoTitle       = 0
    RegLastError  = $(!REG_ERROR_SUCCESS)


;************************************************************************
; CONFIGURATION CHOICES
; ---------------------
; the sections below contain the different choices supported for
; the configuration items shown.  an id section establishes the 
; language independent IDs supported by nt setup.  for each language
; supported a text section displays the text used for the different
; choices
;************************************************************************

;********************************
; PLATFORM INDEPENDENT CHOICES
;********************************
;----------------------------------------------------
; LANGUAGE CHOICES
;----------------------------------------------------

[LanguageID]
    LANGID_ENG = ENG
    ;LANGID_ITL = ITL
    ;LANGID_FRN = FRN
    ;LANGID_GER = GER

;----------------------------------------------------
; PROCESSOR CHOICES
;----------------------------------------------------
[ProcessorID]
    ProcessorID_I386  = I386
    ProcessorID_I486  = I486
    ProcessorID_I586  = I586
    ProcessorID_R4000 = R4000
    ProcessorID_Alpha = Alpha_AXP

;----------------------------------------------------
; PLATFORM CHOICES
;----------------------------------------------------
[PlatformID]
    PlatformID_I386 = I386
    PlatformID_Mips = Mips
    PlatformID_Alpha = Alpha


;**************************************************************
;  UI VARIABLES
;**************************************************************

[ProcessorVar]

    STF_PROCESSOR = "" ? $(LIBHANDLE) GetProcessor
    STF_PLATFORM  = ""

[LanguageVar]
    ;
    ; Language to Use For interaction with user
    ;
    STF_LANGUAGE       = "" ? $(LIBHANDLE) GetLanguage


[UiVars]
    ;
    ; Version Information
    ;

    BuildVersion   = "12-94"

    ;
    ; Destination TOOLS Drive Particulars
    ;
    VolumeList      = {} ? $(LIBHANDLE) GetHardDriveLetters
    VolumeFreeList  = {} ? $(LIBHANDLE) GetHardDriveFreeSpace
    VolumeFSList    = {} ? $(LIBHANDLE) GetHardDriveFileSystems
    DestVolume      = ""
    ;

    ;
    ; Windows NT Directory
    ;

    STF_WINDOWSPATH    = "" ? $(!LIBHANDLE) GetWindowsNtDir

    ;
    ; Mstools directory
    ;

    MSTOOLS = "\RESKIT35"

    ;
    ; Installation mode
    ;

    MinInteract         = $(Radio1)
    MaxInteract         = $(Radio2)
    STF_INSTALL_MODE	= $(MaxInteract)

    ;
    ; Mstools Setup Help IDs
    ;

    !IDH_DB_TOOLSWELCOME_INS   = 3000
    !IDH_DB_MSTINSTALLMODE_INS = 3010
    !IDH_DB_MSTDEST_INS        = 3020
    !IDH_DB_MSTOPTIONS_INS     = 3030


[EnvironmentVars]
    ;
    ; user environment variables in the current user's profile
    ;

    PathEnvVar     = {} ? $(LIBHANDLE) GetEnvVar $(PRIVILEGES) Path


[VarsI386]
    ;
    MinToolsSize     = 17
    MaxToolsSize     = 17
    PosixSize = 16246528
    AdminOtherSize    = 13342739
    RegistrySize    = 11227712
    PerformanceSize	     = 7611714
    AnimateSize        = 22682112
    SetupTroubleSize	   = 3228040

    ;
    ; Installation options
    ;

    DoPosix = $(NotChosen)
    DoAdminOther    = $(Chosen)
    DoRegistry	  = $(Chosen)
    DoPerformance	   = $(Chosen)
    DoAnimate	     = $(Chosen)
    DoSetupTrouble	 = $(Chosen)

    ;
    ; Options to disable
    ;

    DisableList    = {}



[VarsMips]
    ;
    MinToolsSize     = 17
    MaxToolsSize     = 17
    PosixSize = 15946528
    AdminOtherSize    = 13342739
    RegistrySize    = 11227712
    PerformanceSize	     = 10034544
    AnimateSize        = 15987384
    SetupTroubleSize	   = 3698224

    ;
    ; Installation options
    ;

    DoPosix = $(NotChosen)
    DoAdminOther    = $(Chosen)
    DoRegistry	  = $(Chosen)
    DoPerformance	   = $(Chosen)
    DoAnimate	     = $(Chosen)
    DoSetupTrouble	   = $(Chosen)

    ;
    ; Options to disable
    ;

    DisableList = {}

[VarsAlpha]
    ;
    MinToolsSize     = 17
    MaxToolsSize     = 17
    PosixSize = 15946528
    AdminOtherSize    = 13342739
    RegistrySize    = 11227712
    PerformanceSize	     = 10034544
    AnimateSize        = 15987384
    SetupTroubleSize	   = 3698224

    ;
    ; Installation options
    ;

    DoPosix = $(NotChosen)
    DoAdminOther    = $(Chosen)
    DoRegistry	  = $(Chosen)
    DoPerformance	   = $(Chosen)
    DoAnimate	     = $(Chosen)
    DoSetupTrouble	   = $(Chosen)

    ;
    ; Options to disable
    ;

    DisableList = {}



[StringsENG]
    String1 = "Setup cannot install on the current processor."$(!LF)$(!LF)+
              "Cannot proceed with install."

    String4 = "Setup could not copy the Windows NT Resource Kit files. "$(!LF)$(!LF)+
              "Cannot proceed with install."

    String5 = "Error querying init directory. "$(!LF)$(!LF)+
              "Initializing our own init directory."

    String6 = "Error querying environment variables."$(!LF)$(!LF)+
              "Cannot proceed with install."

    String7 = "Error modifying environment variables."$(!LF)$(!LF)+
              "Cannot proceed with install."

    String8  = "Size required for full installation is: "
    String9  = "Minimum size required for custom installation is: "
    String10 = " MB."
    String11 = "No drive was found with this much space."$(!LF)$(!LF)+
               "Cannot proceed with install."

    String12 = "There is space sufficient for the minimum Windows NT Resource Kit installation. "+
               "You need to run Setup again and choose custom installation."

    String13 = "Setup needs a full path specification of your destination.  Please "+
               "reenter a new path.  An example of af full path is: "

    String14 = "The drive entered in the Windows NT Resource Kit destination path does not "+
               "have enough space for a minimal installation.  Please reenter a "+
	       "new path."

    String15 = "There is no space free for the optional Windows NT Resource Kit components."
    String16 = "Setup has detected that you have chosen to install to a network "+
	       "drive.  If you are certain that this drive is a valid drive, and "+
               "that it has sufficient space, please hit OK to continue.  Otherwise, "+
               "choose Cancel to select another drive."


;--------------------
; BILLBOARD MESSAGES
;--------------------
[BillboardsENG]
Billboard1 = "Please wait while Setup creates directories on the destination drive."

;***************************************************************************
; DIALOGS
; -------
; the following sections contain the dialogs used to interact with the user.
; for each language supported there is a different dialog section.
;***************************************************************************


;-----------------------------------------------
; WELCOME DIALOG
;-----------------------------------------------
[WelcomeDlgENG]
    DlgType     = Info
    DlgTemplate = WELCOME
    Caption	= "Windows NT Resource Kit Setup"

    DlgText     = "Welcome to Setup."$(LF)$(LF)+
		  "The Setup program for the Microsoft Windows NT Resource Kit "+
		  "will install useful tools and utility programs on your computer."$(LF)$(LF)+
		  "To install the Windows NT Resource Kit utilities now, click Continue or press "+
		  "Enter."$(LF)$(LF)+
		  "To exit Setup without installing the Windows NT Resource Kit utilities, click "+
		  "Exit or press F3."

    Continue     = Continue
    Help         = Help
    Exit         = Exit
    HelpContext  = $(!IDH_DB_MSTWELCOME_INS)

;-----------------------------------------------
; INSTALL MODE DIALOG
;-----------------------------------------------
[InstallModeDlgENG]
    DlgType     = "Radio"
    DlgTemplate = "INSTALLMODE"
    Caption     = "Setup Methods"
    DlgText	= "Express Setup relies on Setup to make decisions, so setting up "+
		  "the Windows NT Resource Kit is quick and easy. "$(LF)$(LF)+
		  "Custom Setup lets you choose which utility "+
		  "programs are installed and which disk Setup copies the files to. "$(LF)$(LF)+
		  "Choose one of the two Setup methods and then click Continue:"

    Continue    = "Continue"
    Help        = "&Help"
    Exit        = "&Exit"
    HelpContext = $(!IDH_DB_MSTINSTALLMODE_INS)

    RadioHeader   = ""
    Radio1Text    = "&Express Setup"
    Radio2Text    = "&Custom Setup"
    Continue      = "Continue"
    RadioDefault  = $(STF_INSTALL_MODE)
    OptionsGreyed = {}


;-----------------------------------------------
; TOOLS DESTINATION DIALOG
;-----------------------------------------------
[DestinationDlgENG]
    DlgType      = Combination
    DlgTemplate  = "DESTTOOLS"
    Caption	 = "Windows NT Resource Kit"
    DlgText	 = "Setup recommends installing the Windows NT Resource Kit on the following "+
                   "hard disk drive."

    Combo1Label  = "Destination Drive:"

    Continue     = "Continue"
    Help         = "&Help"
    Exit         = "&Exit"
    HelpContext  = $(!IDH_DB_MSTDEST_INS)

    GroupLabel   = "Destination Drive Characteristics"

    Static1Label = "Available Space:"
    Static1Text  = $(DestVolumeFree)
    footer1      = "MB"
    footer2      = "( For Full Setup )"
    footer3      = "( For Minimum Setup )"
    Static2Label = "Space Needed:"
    Static2Text  = $(MaxToolsSize)
    Static3Text  = $(MinToolsSize)

    TextFields   = {$(Static1Text), $(Static2Text), $(Static3Text)}

    ;
    ; Editboxes in the dialog
    ;

    EditLabel	= "Windows NT Resource Kit Directory:"
    EditTextLim = 256
    EditTextIn  = $(MstoolsDir)
    EditFocus   = "ALL"

    Combo1List   = $(DestVolumeList)
    Combo1Out    = $(DestVolume)

    ComboListItemsIn  = {Combo1List}
    ComboListItemsOut = {Combo1Out}

    NotifyFields = {YES}


;-------------------------------------------------------------
; PARTIAL INSTALL COMPONENTS
;-------------------------------------------------------------
[MSToolsOptionsDlgENG]
    DlgType     = "Check1"
    DlgTemplate = "TOOLSOPTIONS"
    Caption	= "Windows NT Resource Kit Install Options"

    DlgText     = "The following optional groups of files (components) can be "+
                  "installed on your system."$(!LF)$(!LF)+
                  "To remove a component, clear its checkbox."$(!LF)$(!LF)+
                  "To install a component, check its checkbox."$(!LF)$(!LF)

    Check1Text	= "POSIX Tools"
    Check2Text	= "Administration/Desktop"
    Check3Text	= "Registry Tools"
    Check4Text	= "Performance and Monitoring"
    Check5Text	= "Animated Cursors"
    Check6Text	= "Setup and Troubleshooting"

    Continue    = "&Continue"
    Help        = "&Help"
    Exit        = "E&xit"
    HelpContext = $(!IDH_DB_MSTOPTIONS_INS)

    CheckHeader    = "Components:"
    SizeHeader     = "Bytes Used:"
    Files          = "Files..."
    SpaceRequired  = "Disk Space Required for Optional Files:"
    SpaceAvailable = "Disk Space Available for Optional Files:"
    footer1        = "Bytes"
    SizeAvailable  = $(FreeForOptional)

    CheckItemsIn      = { $(DoPosix),	$(DoAdminOther), $(DoRegistry), $(DoPerformance), $(DoAnimate), $(DoSetupTrouble) }
    CheckItemsInSizes = { $(PosixSize), $(AdminOtherSize), $(RegistrySize), $(PerformanceSize), $(AnimateSize), $(SetupTroubleSize) }
    OptionsGreyed     = $(DisableList)




;--------------------------------------------------------------
; k) SETUP DONE - RESTART DIALOG
;--------------------------------------------------------------
[SetupDoneDlgENG]
    DlgType     = "Info"
    DlgTemplate = "RESTART"
    Caption	= "Windows NT Resource Kit Setup"
    DlgText	= "The Microsoft Windows NT Resource Kit is now installed."
    Windows     = "Exit to &Windows NT"

;--------------------------------------------------------------
; k) SETUP NOT DONE - RESTART DIALOG
;--------------------------------------------------------------
[SetupNotDoneDlgENG]
    DlgType     = "Info"
    DlgTemplate = "RESTART"
    Caption	= "Windows NT Resource Kit Setup"
    DlgText	= "The Microsoft Windows NT Resource Kit has not been installed "+
		  "correctly.  To install the Windows NT Resource Kit, make sure "+
		  "you have enough free disk space and start Setup again."
    Windows     = "Exit to &Windows NT"

;**************************************************************************
; DLL LOAD and FREE
; the following section contain commands to load specific dll libraries and
; to free them
;**************************************************************************

;----------------------------------------------
; a) DETECT LIBRARY
;----------------------------------------------
[LoadSetupLibrary]
    LoadLibrary "x" $(STF_CWDDIR)\setupdll.dll LIBHANDLE
    exit

[FreeSetupLibrary]
    FreeLibrary $(LIBHANDLE)
    exit



;**************************************************************************
; PROGRESS GUAGE VARIABLES
;**************************************************************************

[ProgressCopyENG]
    ProCaption	 = "Windows NT Resource Kit Setup"
    ProCancel    = "Cance&l"
    ProCancelMsg = "Windows NT Resource Kit isn't correctly installed.  Are you sure "+
                   "you want to cancel copying files?"
    ProCancelCap = "Setup Message"
    ProText1     = "Copying:"
    ProText2     = "To:"


;-----------------------------------------------------------------------
; ROUTINE:      CreateKey
;
; DESCRIPTION:  Creates a key and fixes the values indicated.
;               Key is Handle\Key1\Key2\...\Keyn. Value list
;               is for Valuen.
;
; INPUTS:       $0: Handle into registry
;               $1: KeyTreeComponents {Key1Info, Key2Info..}
;               $2: ValueList {Value1Info, Value2Info, Value3Info}
;
; OUTPUTS:      $R0: Status: STATUS_SUCCESSFUL
;                            STATUS_FAILED
;                            STATUS_ERROR_CREATEKEY
;                            STATUS_ERROR_CREATEVALUE
;
;               $R1: Handle to created key
;
;------------------------------------------------------------------------

[CreateKey]

    ;
    ; Initialize
    ;

    set Status = STATUS_FAILED
    read-syms RegistryConstants

    ;
    ; traverse down the keytreecomponents and open/create components as
    ; you go along
    ;


    set BaseHandle = $($0)
    set KeyHandle  = $(BaseHandle)

    ForListDo $($1)

        set KeyInfo = $($)
        set KeyName = *($(KeyInfo), 1)

        ;
        ; Try opening the key first

        OpenRegKey $(BaseHandle) "" $(KeyName) $(MaskAllAccess) KeyHandle
        ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
            ;
            ; Key doesn't exist
            ;
            Debug-Output "REGISTRY.INF: Key"$(KeyName)"doesn't exist.  Will create key"

            set RegLastError = 0
            CreateRegKey $(BaseHandle) $(KeyInfo) "" $(MaskAllAccess) "" KeyHandle
            ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
                set Status = STATUS_ERROR_CREATEKEY
                Debug-Output "REGISTRY.INF: Error in creating key"
                goto endcreate
            endif
        endif

        ifstr(i) $(BaseHandle) != $($0)
            CloseRegKey $(BaseHandle)
            ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
                set Status = STATUS_ERROR_CREATEKEY
                Debug-Output "REGISTRY.INF: Error in closing base handle"
                goto endcreate
            endif
        endif

        set BaseHandle = $(KeyHandle)

    EndForListDo

    ifstr(i) $($2) != {}
        shell "" AddValueList $(KeyHandle) $($2)
        ifstr(i) $($R0) != STATUS_SUCCESSFUL
            set Status = STATUS_ERROR_CREATEVALUE
            goto endcreate
        endif
    endif
    set Status = STATUS_SUCCESSFUL

endcreate = +
    ifstr(i) $(Status) != STATUS_SUCCESSFUL
        Debug-Output "REGISTRY.INF: CreateKey Error:"$(Status)
    endif
    Return $(Status) $(KeyHandle)


;*************************************************************************
;
;     SECTION:   AddValueList
;
;     PURPOSE:   Given a nested list of value items, add each to the given
;                key.   Key is left open.
;
;   ARGUMENTS:   $0    Registry key handle
;                $1    List of value items; for example:
;                          { {ValueName1,0,$(!REG_VT_SZ),$(ValueData1)}, +
;                            {ValueName2,0,$(!REG_VT_SZ),$(ValueData2)} }
;
;     RETURNS:   $R0   Status
;
;
;*************************************************************************

[AddValueList]
   set Status = STATUS_FAILED
   read-syms RegistryConstants

   ForListDo $($1)
       SetRegValue $($0) $($)
       ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
           Debug-Output "REGISTRY.INF: CreateValue failed:"$($)
           goto end_addvaluelist
       endif
   EndForListDo
   set Status = STATUS_SUCCESSFUL

end_addvaluelist = +
   return $(Status)



;**************************************************************************
; SHELL COMMANDS SCRIPT
;**************************************************************************

[Shell Commands]

    ;
    ; Initialise the app, by setting the caption and loading the support library
    ;
    set-title "Windows NT Resource Kit Setup"
    set Exit_Code = $(!SETUP_ERROR_GENERAL)
    install   LoadSetupLibrary

    StartWait

    ;
    ; read general constants
    ;

    set-subst LF = "\n"
    read-syms GeneralConstants

    ;
    ; read the platform independent choices
    ;

    read-syms LanguageID
    read-syms ProcessorID
    read-syms PlatformID

    ;
    ; read the default language and try to detect the language
    ;

    read-syms LanguageVar
    detect    LanguageVar

    ;
    ; read and detect the processor we are working on
    ;

    read-syms ProcessorVar
    detect    ProcessorVar
    read-syms Strings$(!STF_LANGUAGE)
    read-syms Billboards$(!STF_LANGUAGE)
    ;
    ; Check processor type, see if it is supported, if so what platform does it
    ; belong to.
    ;

    ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_I386)
        set STF_PLATFORM = $(PlatformID_I386)
    else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_I486)
        set STF_PLATFORM = $(PlatformID_I386)
    else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_I586)
        set STF_PLATFORM = $(PlatformID_I386)
    else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_R4000)
        set STF_PLATFORM = $(PlatformID_Mips)
    else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_Alpha)
	set STF_PLATFORM = $(PlatformID_Alpha)
    else
        shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "FATAL" $(String1)
        goto setupnotdone
    endif

    read-syms  RegistryConstants

    ;
    ; Call the library function to see if we have admin privileges
    ;

    LibraryProcedure STATUS, $(!LIBHANDLE), TestAdmin
    ifstr(i) $(STATUS) == "YES"
 	set PRIVILEGES = SYSTEM
    else
        set PRIVILEGES = USER
    endif

    ;
    ; read the UI Variables and detect their setting on the current machine
    ;

    read-syms UiVars
    detect    UiVars
    read-syms Vars$(STF_PLATFORM)

    EndWait

welcome =+
    read-syms WelcomeDlg$(STF_LANGUAGE)
    ui start "Welcome"
    ifstr(i) $(DLGEVENT) == "CONTINUE"
        ui pop 1
;	goto queryinstallmode
	goto setdestination
    else-ifstr(i) $(DLGEVENT) == "EXIT"
        shell "" QueryUserQuit
        ifstr(i) $($R1) == "OK"
            ui pop 1
            goto setupnotdone
        else
            goto welcome
        endif
    else
        goto end
    endif

    ;
    ; show install mode dialog and query if we are to operate in express mode
    ; or in full install
    ;

queryinstallmode =+
    read-syms InstallModeDlg$(STF_LANGUAGE)
    ui start "InstallMode"
    ifstr(i) $(DLGEVENT) == "CONTINUE"
        ui pop 1
        set STF_INSTALL_MODE = $(ButtonChecked)
        goto setdestination
    else-ifstr(i) $(DLGEVENT) == "EXIT"
        shell "" QueryUserQuit
        ifstr(i) $($R1) == "OK"
            ui pop 1
            goto setupnotdone
        else
            goto queryinstallmode
        endif
    else
        goto end
    endif

setdestination =+

    ;
    ; go through the volume list and form the destination volume list of
    ; all volumes which have the size needed to install the mstools.
    ;
    set DestVolumeList = {}
    set DestVolumeFreeList = {}

    ForListDo $(VolumeList)

       set CurrentVolume      = *($(VolumeList), $(#))
       set CurrentVolumeFree  = *($(VolumeFreeList), $(#))
       set CurrentVolumeFS    = *($(VolumeFSList), $(#))

       set DestVolumeList     = >($(DestVolumeList),     $(CurrentVolume))
       set DestVolumeFreeList = >($(DestVolumeFreeList), $(CurrentVolumeFree))

skipvol=+
    EndForListDo

    ;
    ; destination drive is the drive with the maximum space
    ;

    set DestVolume     = ""
    set DestVolumeFree = 0

    ForListDo $(DestVolumeList)
        set Volume     = $($)
        set VolumeFree = *($(DestVolumeFreeList), ~($(DestVolumeList), $(Volume)))

        ifint $(VolumeFree) > $(DestVolumeFree)
            set DestVolume     = $(Volume)
            set DestVolumeFree = $(VolumeFree)
        endif

    EndForListDo

    set MstoolsDir = $(DestVolume)$(MSTOOLS)

    ;
    ; display tools destination, size available and needed for
    ; user approval
    ;
destination =+

    ifstr(i) $(STF_INSTALL_MODE) == $(MinInteract)
       ifint $(DestVolumeFree) < $(MaxToolsSize)
           shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "FATAL" $(String8)$(MaxToolsSize)$(String10)$(String12)
           goto setupnotdone
       else
           goto mstooldirs
       endif
    endif

    read-syms DestinationDlg$(STF_LANGUAGE)
    ui start "Destination"
    ifstr(i) $(DLGEVENT) == "NOTIFY"

        ifstr(i) $(Combo1Out) != $(DestVolume)
            set ReInit = YES
            set DestVolume     = $(Combo1Out)
            set DestVolumeFree = *($(DestVolumeFreeList), ~($(DestVolumeList), $(DestVolume)))
            set MstoolsDir     = $(DestVolume)$(MSTOOLS)
        else
            set ReInit = NO
        endif
        goto destination

    else-ifstr(i) $(DLGEVENT) == "CONTINUE"
        set ReInit = NO
        LibraryProcedure IsFullPath, $(LIBHANDLE), CheckPathFullPathSpec $(EditTextOut)
        ifstr(i) $(IsFullPath) == "NO"
            shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "NONFATAL" $(String13)$(DestVolume)$(MSTOOLS)
            goto destination
        else
            GetDriveInPath Drive, $(EditTextOut)
            Ifcontains(i) $(Drive) in $(DestVolumeList)
                set DestVolume     = $(Drive)
                set DestVolumeFree = *($(DestVolumeFreeList), ~($(DestVolumeList), $(DestVolume)))
                set MstoolsDir     = $(EditTextOut)
		ifint $(DestVolumeFree) < $(MinToolsSize)
		    shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "NONFATAL" $(String14)
		    goto destination
		endif
            else
                shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "WARNING" $(String16)
                ifstr(i) $($R0) != STATUS_SUCCESSFUL
			goto destination
                else
                    ifstr(i) $($R1) == "OK"
			set DestVolume = $(Drive)
			set DestVolumeFree = $(MaxToolsSize)
			set MstoolsDir = $(EditTextOut)
                    else
                        set ReInit = NO
                        goto destination
                    endif
                endif
            endif
        endif

        ui pop 1
        goto mstooldirs

    else-ifstr(i) $(DLGEVENT) == "EXIT"

        set ReInit = NO
        shell "" QueryUserQuit
        ifstr(i) $($R1) == "OK"
            ui pop 1
            goto setupnotdone
        else
            goto destination
        endif
    else
        goto end
    endif


mstooldirs = +

    LibraryProcedure MstoolsDir, $(LIBHANDLE), AppendBackSlash $(MstoolsDir)
    ;
    ; First find all the destination directories for the tools
    ;

    set MstoolsPath    = $(MstoolsDir)


    set SetupTroublePath     = $(MstoolsDir)SetupTrouble

    ;
    ; mstool install.  ask user for options on mstool install.
    ;

mstools = +
    ifstr(i) $(STF_INSTALL_MODE) == $(MaxInteract)
       goto mstoolsinstall
    endif

    ifint $(DestVolumeFree) < $(MaxToolsSize)
	set DoPosix   = $(NotChosen)
	set DoAdminOther      = $(NotChosen)
	set DoRegistry	    = $(NotChosen)
	set DoPerformance	     = $(NotChosen)
	set DoAnimate	       = $(NotChosen)
	set DoSetupTrouble	   = $(NotChosen)
    endif

    set-sub FreeForOptional = $(DestVolumeFree) $(MinToolsSize)
    ifstr(i) $(FreeForOptional) == 0
        shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "NONFATAL" $(String15)
    endif

    read-syms MSToolsOptionsDlg$(STF_LANGUAGE)
    ui start "Options"
    ifstr(i) $(DLGEVENT) == "CONTINUE"
	set DoPosix   = *($(CheckItemsOut), 1)
	set DoAdminOther      = *($(CheckItemsOut), 2)
	set DoRegistry	    = *($(CheckItemsOut), 3)
	set DoPerformance	     = *($(CheckItemsOut), 4)
	set DoAnimate	       = *($(CheckItemsOut), 5)
	set DoSetupTrouble	   = *($(CheckItemsOut), 6)

	ifstr(i) $(DoAdminOther) == $(NotChosen)
	    set DoRegistry = $(NotChosen)
	endif

        ui pop 1
        goto mstoolsinstall
    else-ifstr(i) $(DLGEVENT) == "EXIT"
        shell "" QueryUserQuit
        ifstr(i) $($R1) == "OK"
            ui pop 1
            goto setupnotdone
        else
            goto mstools
        endif
    else
        goto "end"
    endif

    ;
    ; build mstools copy list
    ;

mstoolsinstall	=+
    StartWait
    shell "subroutn.inf" PushBillboard STATUSDLG $(Billboard1)
    install Install-CopyToolsFiles
    shell "subroutn.inf" PopBillboard
    EndWait

    ;
    ;  Complete the copying of files added by other options.
    ;
    ;  Alter the CFG/INI files as needed by the options.
    ;
    ;  print information screen to restart
    ;

finish = +

    ;
    ; first copy all the files over
    ;

    read-syms ProgressCopy$(STF_LANGUAGE)
    install Install-All-Files-Now
    ifstr(i) $(STF_INSTALL_OUTCOME) == "STF_SUCCESS"
        goto mstoolsconfig
    else
        shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "FATAL" $(String4)
        goto setupnotdone
    endif

    StartWait

mstoolsconfig=+
    read-syms EnvironmentVars
    detect    EnvironmentVars

    ;
    ; first initialize the variables which indicate whether new values are
    ; to be set for the variables or not
    ;
    ForListDo {Path}
        set FSet$($)Var = FALSE
    EndForListDo

    ;
    ; add the SetupTrouble and setup variables if SetupTrouble is chosen
    ;

    ;
    ; For the Path,Lib and Include variables see if we can prepend them
    ; onto the current variables
    ;

; this will do it

    ForListDo {Path}
        set Var = $($)
        ifstr(i) $($(Var)EnvVar) == {}
            set $(Var)EnvVar = {$(Var), 0, $(!REG_VT_EXPAND_SZ), {$(Mstools$(Var))}}
            set FSet$(Var)Var = TRUE
        else
            set VarTitle   = *($($(Var)EnvVar), 2)
            set VarRegType = *($($(Var)EnvVar), 3)
            set VarValue   = *($($(Var)EnvVar), 4)
            ifstr(i) $(Var) == "Path"
                ifstr(i) $(PRIVILEGES) == "SYSTEM"
                   shell "" AppendNewValueToEnvVar $(VarValue) $(Mstools$(Var))
                else
                   shell "" PrependNewValueToEnvVar $(VarValue) $(Mstools$(Var))
                endif
            else
                shell "" PrependNewValueToEnvVar $(VarValue) $(Mstools$(Var))
            endif
            ifstr(i) $($R0) == STATUS_FAILED
                shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "FATAL" $(String6)
                goto setupnotdone
            endif
            ifstr(i) $($R1) == "TRUE"
                set FSet$(Var)Var = TRUE
                set $(Var)EnvVar = {$(Var), $(VarTitle), $(VarRegType), $($R2)}
            endif
        endif
    EndForListDo

    ;
    ; modify all the environment variables
    ;

    ForListDo {Path}
        ;
        ; if the variable to set the variable is set

        ifstr(i) $(FSet$($)Var) == "TRUE"
            shell "" SetEnvironmentString $($($)EnvVar) $(PRIVILEGES)
            ifstr(i) $($R0) == STATUS_FAILED
                shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "FATAL" $(String7)
            endif
        endif
    EndForListDo

    install Install-MSTools-Groups

setupdone=+
    set Exit_Code = $(!SETUP_ERROR_SUCCESS)
    read-syms SetupDoneDlg$(STF_LANGUAGE)
    EndWait
    ui start "Done"
    ifstr(i) $(DLGEVENT) == "CONTINUE"
        ui pop 1
        goto end
    else
        goto end
    endif

setupnotdone=+
    read-syms SetupNotDoneDlg$(STF_LANGUAGE)
    EndWait
    ui start "NotDone"
    ifstr(i) $(DLGEVENT) == "CONTINUE"
        ui pop 1
        goto end
    else
        goto end
    endif

end = +
    install   FreeSetupLibrary
    exit



;*****************************************************************
;                                                                *
;         INSTALLATION SUPPORT ROUTINES                          *
;                                                                *
;*****************************************************************

;-----------------------------------------------------------------------
; ROUTINE:      QueryUserQuit
;
; DESCRIPTION:  This routine queries whether the user wants to quit setup
;
; INPUTS:       None
;
; OUTPUTS:      $R0: Status:     STATUS_SUCCESSFUL |
;                                STATUS_FAILED
;
;               $R1: UserAction: OK | CANCEL
;
;------------------------------------------------------------------------

[QueryUserQuit]

    set Status     = STATUS_FAILED
    set UserAction = CANCEL

    ;
    ; read in quit message
    ;
    read-syms ExitWarningDlg$(!STF_LANGUAGE)
    ui start "ExitWarning"
    ifstr(i) $(DLGEVENT) == "YES"
        set Status     = STATUS_SUCCESSFUL
        set UserAction = "OK"

    else-ifstr(i) $(DLGEVENT) == "NO"
        set Status     = STATUS_SUCCESSFUL
        set UserAction = "CANCEL"
    else
    endif

fin_QueryUserQuit = +
    Return $(Status) $(UserAction)


;----------------------------------------------
; EXIT WINDOWS NT TOOLS SETUP WARNING
;----------------------------------------------

[ExitWarningDlgENG]
    DlgType      = "MessageBox"
    STF_MB_TITLE = "Exit Windows NT Resource Kit Setup"
    STF_MB_TEXT  = "Windows NT Resource Kit isn't correctly installed.  Are you "+
                   "sure you want to exit Setup?"
    STF_MB_TYPE  = 3
    STF_MB_ICON  = 5
    STF_MB_DEF   = 2




;-----------------------------------------------------------------------
; ROUTINE:      AppendNewValueToEnvVar
;
; DESCRIPTION:  Looks at the existing value of an environment variable
;               and appends a new value if it is not already present
;
; INPUTS:       $0:  OldValueList
;               $1:  NewValue
;
; OUTPUTS:      $R0: Status: STATUS_SUCCESSFUL
;                            STATUS_FAILED
;
;               $R1: Changed?
;               $R2: NewValueList
;
;------------------------------------------------------------------------

[AppendNewValueToEnvVar]
    ;
    set Status       = STATUS_FAILED
    set NewValueList = {}
    set Changed      = TRUE
    ;
    set Error = NO
    ForListDo $($0)
        ifstr(i) $(Error) == NO
            ifstr(i) $(Changed) == TRUE
                 LibraryProcedure ExpandedValue, $(!LIBHANDLE), ExpandSz $($)
                 ifstr(i) $(ExpandedValue) == "ERROR"
                     set Error = YES
                 else-ifstr(i) $(ExpandedValue) == $($1)
                     set Changed = FALSE
                 endif
            endif
        endif
    EndForListDo

    ifstr(i) $(Error) == "YES"
        goto finish_append
    endif

    set Status = STATUS_SUCCESSFUL
    ifstr(i) $(Changed) == TRUE
       set NewValueList = >($($0), $($1))
    endif

finish_append = +
    return $(Status) $(Changed) $(NewValueList)

;-----------------------------------------------------------------------
; ROUTINE:      PrependNewValueToEnvVar
;
; DESCRIPTION:  Looks at the existing value of an environment variable
;               and prepends a new value if it is not already present
;
; INPUTS:       $0:  OldValueList
;               $1:  NewValue
;
; OUTPUTS:      $R0: Status: STATUS_SUCCESSFUL
;                            STATUS_FAILED
;
;               $R1: Changed?
;               $R2: NewValueList
;
;------------------------------------------------------------------------

[PrependNewValueToEnvVar]
    ;
    set Status       = STATUS_FAILED
    set NewValueList = {}
    set Changed      = TRUE
    ;
    set Error = NO
    ForListDo $($0)
        ifstr(i) $(Error) == NO
            ifstr(i) $(Changed) == TRUE
                 LibraryProcedure ExpandedValue, $(!LIBHANDLE), ExpandSz $($)
                 ifstr(i) $(ExpandedValue) == "ERROR"
                     set Error = YES
                 else-ifstr(i) $(ExpandedValue) == $($1)
                     set Changed = FALSE
                 endif
            endif
        endif
    EndForListDo

    ifstr(i) $(Error) == "YES"
        goto finish_prepend
    endif

    set Status = STATUS_SUCCESSFUL
    ifstr(i) $(Changed) == TRUE
       set NewValueList = $($1)
       ForListDo $($0)
           set NewValueList = >($(NewValueList), $($))
       EndForListDo
    endif

finish_prepend = +
    return $(Status) $(Changed) $(NewValueList)


;-----------------------------------------------------------------------
; ROUTINE:      SetEnvironmentString
;
; DESCRIPTION:  Set the value for a user environment string
;
; INPUTS:       $0:  VarList
;               $1:  Privileges
;
; OUTPUTS:      $R0: Status: STATUS_SUCCESSFUL
;                            STATUS_FAILED
;
;
;------------------------------------------------------------------------

[SetEnvironmentString]
    ;
    ;
    set Status = STATUS_FAILED

    set Var          = *($($0), 1)
    set VarTitle     = *($($0), 2)
    set VarRegType   = *($($0), 3)
    set VarValueList = *($($0), 4)

    set VarValue = ""
    ForListDo $(VarValueList)
       ifstr(i) $(VarValue) != ""
           set VarValue = $(VarValue)";"$($)
       else
           set VarValue = $($)
       endif
    EndForListDo

    LibraryProcedure STATUS, $(!LIBHANDLE), SetEnvVar $($1) $(Var) $(VarTitle) $(VarRegType) $(VarValue)
    ifstr(i) $(STATUS) == "ERROR"
       goto finish_setenvstr
    endif
    set Status = STATUS_SUCCESSFUL

finish_setenvstr = +
    Return $(Status)

;*****************************************************************
;                                                                *
;         INSTALLATION SUPPORT ROUTINES                          *
;                                                                *
;*****************************************************************

[Install-MSTools-Groups]
    
    ifstr(i) $(PRIVILEGES) == "SYSTEM"
	set Common = "Common"
    else
        set Common = ""
    endif

    set ToolsGroup = "Resource Kit"
    Create$(Common)ProgManGroup $(ToolsGroup) ""
    Show$(Common)ProgManGroup   $(ToolsGroup), 1
;
;       uncomment/add/delete lines as necessary
;
    Create$(Common)ProgmanItem	$(ToolsGroup) , "Read Me"		  $(MstoolsDir)"creadme.wri"	       ""  0
    Create$(Common)ProgmanItem	$(ToolsGroup) , "Resource Kit Tools Help" $(MstoolsDir)"rktools.hlp"	       ""  0
    Create$(Common)ProgmanItem	$(ToolsGroup) , "Adapter Card Help"	  $(MstoolsDir)"ntcard35.hlp"	       ""  0
;    Create$(Common)ProgmanItem	$(ToolsGroup) , "Troubleshooting Flowcharts"  $(MstoolsDir)"trouble.hlp"	  ""  0
    Create$(Common)ProgmanItem	$(ToolsGroup) , "Windows NT Registry Entries" 	  $(MstoolsDir)"regentry.hlp"	       ""  0
    Create$(Common)ProgmanItem	$(ToolsGroup) , "Hardware Compatibility List 12/1994" $(MstoolsDir)"hcldec94.hlp"  ""	0
    Create$(Common)ProgmanItem	$(ToolsGroup) , "Net Watcher"		  $(MstoolsDir)"netwatch.exe"	       ""  0
    Create$(Common)ProgmanItem	$(ToolsGroup) , "Command Scheduler"		  $(MstoolsDir)"winat.exe"	       ""  0
    Create$(Common)ProgmanItem	$(ToolsGroup) , "Domain Monitor"	  $(MstoolsDir)"dommon.exe"	       ""  0
    Create$(Common)ProgmanItem	$(ToolsGroup) , "Browser Monitor"	  $(MstoolsDir)"browmon.exe"	       ""  0
    Create$(Common)ProgmanItem	$(ToolsGroup) , "Server Manager for Domains"	  $(MstoolsDir)"srvmgr.exe"	       ""  0
    Create$(Common)ProgmanItem	$(ToolsGroup) , "User Manager for Domains"		  $(MstoolsDir)"usrmgr.exe"	       ""  0
    Create$(Common)ProgmanItem	$(ToolsGroup) , "User Profile Editor"	  $(MstoolsDir)"upedit.exe"	       ""  0
    Create$(Common)ProgmanItem	$(ToolsGroup) , "Process Viewer"	  $(MstoolsDir)"pviewer.exe"	       ""  0
    Create$(Common)ProgmanItem	$(ToolsGroup) , "Animated Cursor Creator" $(MstoolsDir)"aniedit.exe"	       ""  0
    Create$(Common)ProgmanItem	$(ToolsGroup) , "Imagedit"		  $(MstoolsDir)"imagedit.exe"	       ""  0
    Create$(Common)ProgmanItem	$(ToolsGroup) , "Quick Slice"		  $(MstoolsDir)"qslice.exe"	       ""  0
    Create$(Common)ProgmanItem	$(ToolsGroup) , "Unicode Converter"	  $(MstoolsDir)"uconvert.exe"	       ""  0
    Create$(Common)ProgmanItem	$(ToolsGroup) , "Multiple Desktops"		  $(MstoolsDir)"topdesk.exe"	       ""  0
    Create$(Common)ProgmanItem	$(ToolsGroup) , "Win VTP"		  $(MstoolsDir)"winvtp.exe"	       ""  0
    Create$(Common)ProgmanItem	$(ToolsGroup) , "File and Directory Comparison"		  $(MstoolsDir)"windiff.exe"	       ""  0
    Create$(Common)ProgmanItem	$(ToolsGroup) , "POSIX Utility Help"	  $(MstoolsDir)"posix.wri"	       ""  0
    Create$(Common)ProgmanItem	$(ToolsGroup) , "Uni to Multiprocessor"		  $(MstoolsDir)"uptomp.exe"	       ""  0
    Create$(Common)ProgmanItem	$(ToolsGroup) , "Graphical  IPConfig Utility"		  $(MstoolsDir)"wntipcfg.exe"	       ""  0
    Create$(Common)ProgmanItem	$(ToolsGroup) , "Time Zone Editor"		  $(MstoolsDir)"tzedit.exe"	       ""  0
    Create$(Common)ProgmanItem	$(ToolsGroup) , "Windows NT Setup Manager"		  $(MstoolsDir)"setupmgr.exe"	       ""  0
    Create$(Common)ProgmanItem	$(ToolsGroup) , "File Expansion Utility"		  $(MstoolsDir)"expndw32.exe"	       ""  0
    Create$(Common)ProgmanItem	$(ToolsGroup) , "Setup Windows NT Domain Planner"		  $(MstoolsDir)"domplan.txt"	       ""  0
    Create$(Common)ProgmanItem	$(ToolsGroup) , "Setup WINCIM"		  $(MstoolsDir)"WINCIM.txt"	       ""  0
    Create$(Common)ProgmanItem	$(ToolsGroup) , "Time Service for NT"		  $(MstoolsDir)"timeserv.wri"	       ""  0
    Create$(Common)ProgmanItem	$(ToolsGroup) , "Run NT Apps as a Service"		  $(MstoolsDir)"srvany.wri"	       ""  0
    Create$(Common)ProgmanItem	$(ToolsGroup) , "UUEncode/Decode"		  $(MstoolsDir)"NTUUCODE.EXE"	       ""  0


    Show$(Common)ProgManGroup   $(ToolsGroup), 6
    exit

;************************************************************************
;                                                                       *
;  MSTOOLS SUPPORT                                                      *
;                                                                       *
;************************************************************************

[Install-CopyToolsFiles]
    set STF_VITAL = ""

;    split-string PATHCOMP $(!STF_SRCINFPATH) \
;    set STF_SRCDIR = ""
;    forlistdo $(PATHCOMP)
;	ifstr(i) $($) != "install.inf"
;	    set STF_SRCDIR = $(STF_SRCDIR)$($)
;	endif
;    endforlistdo

    CreateDir  $(MstoolsDir)
    CreateDir  $(MstoolsDir)\cps
    CreateDir  $(MstoolsDir)\emwac
    CreateDir  $(MstoolsDir)\dns  

    ifstr(i) $(STF_PLATFORM) == $(PlatformID_I386)
	CreateDir	$(MstoolsDir)\posix
    endif

    AddSectionFilesToCopyList Files-always-reskit $(STF_SRCDIR) $(MstoolsDir)
    AddSectionFilesToCopyList Files-always-reskit-cps $(STF_SRCDIR) $(MstoolsDir)cps
    AddSectionFilesToCopyList Files-always-reskit-emwac $(STF_SRCDIR) $(MstoolsDir)emwac
    AddSectionFilesToCopyList Files-always-reskit-dns $(STF_SRCDIR) $(MstoolsDir)dns


;    ifstr(i) $(STF_PLATFORM) == $(PlatformID_I386)
    ifstr(i) $(!DoPosix) == $(!Chosen)
        AddSectionFilesToCopyList Files-always-reskit-posix	$(STF_SRCDIR) $(MstoolsDir)posix
    endif        
;    endif

    AddSectionFilesToCopyList Files-always-system32 $(STF_SRCDIR) $(!STF_WINDOWSPATH)\system32

;    ifstr(i) $(!DoAdminOther) == $(!Chosen)
;	AddSectionFilesToCopyList Files-admin			      $(STF_SRCDIR)			    $(MstoolsDir)
;    endif
;
;    ifstr(i) $(!DoAnimate) == $(!Chosen)
;	AddSectionFilesToCopyList Files-animate			      $(STF_SRCDIR)			    $(MstoolsDir)
;    endif
;
;    ifstr(i) $(!DoPerformance) == $(!Chosen)
;	AddSectionFilesToCopyList Files-performance			      $(STF_SRCDIR)			    $(MstoolsDir)
;    endif
;
;    ifstr(i) $(!DoPosix) == $(!Chosen)
;	AddSectionFilesToCopyList Files-posix			      $(STF_SRCDIR)			    $(MstoolsDir)
;    endif
;
;    ifstr(i) $(!DoRegistry) == $(!Chosen)
;	AddSectionFilesToCopyList Files-registry			      $(STF_SRCDIR)			    $(MstoolsDir)
;    endif
;
;    ifstr(i) $(!DoSetupTrouble) == $(!Chosen)
;	AddSectionFilesToCopyList Files-setup			      $(STF_SRCDIR)			    $(MstoolsDir)
;    endif

    exit

[Install-All-Files-Now]
    CopyFilesInCopyList
    exit

;
; REGULAR Resource Kit Tools
;
[Files-always-reskit-cps]
6, CPS.INI , SIZE=1536
6, CPSREAD.TXT , SIZE=33792
6, FATBOOT.BIN , SIZE=512
6, GETBS.EXE , SIZE=16896
3, LOADACCT.EXE , SIZE=153088
6, MAKEANSR.BAT , SIZE=1024
4, NTLANMAN.INF , SIZE=77824
6, PROFILE.INI , SIZE=7168
6, RESTFILE.EXE , SIZE=37376
3, RESTKEYS.EXE , SIZE=159232
2, UPLODPRF.EXE , SIZE=225280
6, UPLODPS2.BAT , SIZE=512
5, WINNTP.EXE , SIZE=56832
5, ~PROFILE.INF , SIZE=72192

[Files-always-reskit-dns]
6, ARPA-127.REV , SIZE=2560
6, ARPA-257.REV , SIZE=3584
6, BOOT , SIZE=1536
3, CACHE , SIZE=1536
6, DNSREAD.TXT , SIZE=8704
6, DNSSETUP.EXE , SIZE=14336
4, DNSSVC.DLL , SIZE=125440
6, INSTALL.BAT , SIZE=1536
4, PLACE.DOM , SIZE=5632

[Files-always-reskit-emwac]
6, COPYRITE.TXT , SIZE=2048
5, EGI386.ZIP , SIZE=40960
6, GOPHERS.CPL , SIZE=28160
2, GOPHERS.DOC , SIZE=329216
5, GOPHERS.EXE , SIZE=70656
6, GOPHERS.HLP , SIZE=10752
2, GOPHERS.PS , SIZE=236032
6, GOPHERS.TXT , SIZE=4608
1, GOPHERS.WRI , SIZE=183808
2, HTTPS.CPL , SIZE=41472
1, HTTPS.DOC , SIZE=336384
5, HTTPS.EXE , SIZE=80896
6, HTTPS.HLP , SIZE=10752
2, HTTPS.PS , SIZE=240640
6, HTTPS.TXT , SIZE=4096
3, HTTPS.WRI , SIZE=193536
3, WAISINDX.EXE , SIZE=144896
3, WAISLOOK.EXE , SIZE=194048
6, WAISS.CPL , SIZE=14848
3, WAISS.DOC , SIZE=154112
5, WAISS.EXE , SIZE=45568
4, WAISS.PS , SIZE=124928
6, WAISS.TXT , SIZE=1536
4, WAISS.WRI , SIZE=107008
3, WAISSERV.EXE , SIZE=220160
6, WAISTOOL.DOC , SIZE=31232
4, WAISTOOL.PS , SIZE=90624
6, WAISTOOL.TXT , SIZE=1024
6, WAISTOOL.WRI , SIZE=34304

[Files-always-reskit-tditrace]
6, OEMSETUP.INF , SIZE=20480

[Files-always-reskit]
6, ADDUSERS.EXE , SIZE=36864
5, ANIEDIT.EXE , SIZE=79872
5, BROWMON.EXE , SIZE=77312
6, BROWMON.HLP , SIZE=20992
5, BROWSTAT.EXE , SIZE=39936
4, CAT.EXE , SIZE=91648
4, CHMOD.EXE , SIZE=105984
6, CHOICE.EXE , SIZE=19968
4, CHOWN.EXE , SIZE=100864
5, COMPRESS.EXE , SIZE=51712
4, CP.EXE , SIZE=99840
5, CREADME.WRI , SIZE=46592
5, DATALOG.EXE , SIZE=84992
6, DATALOG.TXT , SIZE=4096
6, DHCPCMD.EXE , SIZE=38400
1, DHCPCMD.TXT , SIZE=2048
5, DHCPLOC.EXE , SIZE=63488
6, DHCPLOC.TXT , SIZE=2048
5, DIRUSE.EXE , SIZE=41984
5, DOMMON.EXE , SIZE=87040
6, DOMMON.HLP , SIZE=28672
6, DOMPLAN.TXT , SIZE=1024
6, DRIVERS.EXE , SIZE=20992
5, DUMPEL.EXE , SIZE=51712
6, DUMPEL.TXT , SIZE=2048
4, ENUMPRN.EXE , SIZE=94208
6, EXETYPE.EXE , SIZE=36352
6, EXETYPE.INI , SIZE=4608
2, EXPNDW32.EXE , SIZE=236032
3, EXPNDW32.HLP , SIZE=145920
5, FIFO.CMD , SIZE=1024
6, FIFO_OFF.INI , SIZE=512
6, FIFO_ON.INI , SIZE=512
3, FIND.EXE , SIZE=161280
5, FINDGRP.EXE , SIZE=56320
6, FLOPLOCK.EXE , SIZE=36864
6, FLOPLOCK.TXT , SIZE=2560
6, GETSID.EXE , SIZE=16384
3, GREP.EXE , SIZE=135680
6, GRPTOREG.EXE , SIZE=26112
5, GUTILS.DLL , SIZE=41984
2, HCLDEC94.HLP , SIZE=414208
2, HCLDEC94.IND , SIZE=364544
4, IMAGEDIT.EXE , SIZE=88064
5, IMAGEDIT.HLP , SIZE=82432
6, INSTSRV.EXE , SIZE=32768
6, JETPACK.EXE , SIZE=15872
6, JETPACK.TXT , SIZE=1024
6, KILL.EXE , SIZE=22016
6, LMMIB2.MIB , SIZE=16896
5, LN.EXE , SIZE=80896
4, LS.EXE , SIZE=117760
4, MIB_II.MIB , SIZE=108032
6, MIBCC.EXE , SIZE=24576
5, MKDIR.EXE , SIZE=78848
6, MONITOR.EXE , SIZE=27648
4, MV.EXE , SIZE=87552
4, NETSVC.EXE , SIZE=101888
3, NETWATCH.EXE , SIZE=166400
1, NTCARD35.HLP , SIZE=1239040
4, NTUUCODE.EXE , SIZE=126464
6, OEMNSVRC.INF , SIZE=16384
6, OS2API.TXT , SIZE=25600
6, PERFMTR.EXE , SIZE=23040
5, PERMS.EXE , SIZE=44032
6, PMON.EXE , SIZE=20480
2, POSIX.WRI , SIZE=222208
6, PSTAT.EXE , SIZE=18432
5, PUTINGRP.EXE , SIZE=47104
5, PVIEWER.EXE , SIZE=42496
5, QSLICE.EXE , SIZE=84480
4, RASUSERS.EXE , SIZE=120832
6, RCMD.EXE , SIZE=30208
3, RCMDSVC.EXE , SIZE=54784
6, README.WRI , SIZE=32256
5, REGBACK.EXE , SIZE=48640
1, REGENTRY.HLP , SIZE=798208
1, REGENTRY.IND , SIZE=573440
6, REGINI.EXE , SIZE=32768
4, REGKEY.EXE , SIZE=123904
5, REGREST.EXE , SIZE=48128
6, REGTOGRP.EXE , SIZE=20480
5, REMOTE.EXE , SIZE=41984
3, RKTOOLS.HLP , SIZE=219136
4, RM.EXE , SIZE=103424
5, RMDIR.EXE , SIZE=74752
4, RMTSHARE.EXE , SIZE=124416
6, SCOPY.EXE , SIZE=31744
4, SETUPMGR.EXE , SIZE=129536
5, SETUPMGR.HLP , SIZE=51712
6, SETUPMGR.INF , SIZE=15872
6, SETUPMGR.TXT , SIZE=3072
2, SH.EXE , SIZE=350208
6, SHARED32.INI , SIZE=1024
6, SHUTDOWN.EXE , SIZE=20480
6, SLEEP.EXE , SIZE=15360
5, SMBTRACE.EXE , SIZE=76288
6, SMI.MIB , SIZE=4608
6, SNMPUTIL.EXE , SIZE=9216
6, SRVANY.EXE , SIZE=22528
6, SRVANY.WRI , SIZE=10240
3, SRVMGR.EXE , SIZE=202752
4, SRVMGR.HLP , SIZE=128512
3, TAPE.EXE , SIZE=187392
4, TDISHOW.EXE , SIZE=118272
6, TDITRACE.SYS , SIZE=27648
6, TESTPS.TXT , SIZE=3072
6, TIMESERV.DLL , SIZE=16384
6, TIMESERV.DOC , SIZE=36864
5, TIMESERV.EXE , SIZE=80896
6, TIMESERV.INI , SIZE=4608
6, TIMESERV.WRI , SIZE=30208
6, TLIST.EXE , SIZE=18944
5, TOPDESK.EXE , SIZE=70144
5, TOPDESK.HLP , SIZE=38912
6, TOPHOOK.DLL , SIZE=4608
5, TOUCH.EXE , SIZE=80384
5, TZEDIT.EXE , SIZE=70144
6, TZEDIT.HLP , SIZE=10752
3, UCONVERT.EXE , SIZE=160768
6, UCONVERT.HLP , SIZE=13312
6, UNATTEND.TXT , SIZE=24576
5, UPEDIT.EXE , SIZE=40448
5, UPEDIT.HLP , SIZE=39936
6, UPMPREAD.TXT , SIZE=1536
4, UPTOMP.EXE , SIZE=96768
6, UPTOMP.INF , SIZE=1024
6, UPTOMP.TXT , SIZE=5120
2, USRMGR.EXE , SIZE=269312
4, USRMGR.HLP , SIZE=134144
5, USRTOGRP.EXE , SIZE=59392
2, VI.EXE , SIZE=275968
5, WC.EXE , SIZE=85504
5, WINAT.EXE , SIZE=48640
6, WINAT.HLP , SIZE=12288
6, WINCIM.TXT , SIZE=512
4, WINDIFF.EXE , SIZE=106496
5, WINEXIT.PDB , SIZE=24576
6, WINEXIT.SCR , SIZE=18432
5, WINVTP.EXE , SIZE=52224
5, WNBSTAT.EXE , SIZE=43008
5, WNTIPCFG.EXE , SIZE=64512

[Files-always-system32]
3, CTAPE.CPL , SIZE=156672
6, CTL3D32.DLL , SIZE=25088
6, TAPEHLP.HLP , SIZE=33280
