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

;***********************************************************************
; 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

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


;**************************************************************
;  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-91"

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

    ;
    ; Windows NT Directory
    ;

    STF_WINDOWSPATH    = "" ? $(!LIBHANDLE) GetWindowsNtDir

    ;
    ; Mstools directory
    ;

    MSTOOLS = "\RESKIT"

    ;
    ; 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     = 11
    MaxToolsSize     = 11
    PosixSize = 16246528
    AdminOtherSize    = 13342739
    RegistrySize    = 11227712
    PerformanceSize	     = 7611714
    AnimateSize        = 22682112
    SetupTroubleSize	   = 3228040

    ;
    ; Installation options
    ;

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

    ;
    ; Options to disable
    ;

    DisableList    = {}



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

    ;
    ; Installation options
    ;

    DoPosix = $(Chosen)
    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
        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

    Create$(Common)ProgmanItem	$(ToolsGroup) , "Read Me"		  $(MstoolsDir)"readme.wri"	       ""  0
    Create$(Common)ProgmanItem	$(ToolsGroup) , "Resource Kit Tools Help" $(MstoolsDir)"rktools.hlp"	       ""  0
    Create$(Common)ProgmanItem	$(ToolsGroup) , "Adapter Card Help"	  $(MstoolsDir)"ntcard.hlp"	       ""  0
    Create$(Common)ProgmanItem	$(ToolsGroup) , "Troubleshooting Flowcharts"  $(MstoolsDir)"trouble.hlp"	  ""  0
    Create$(Common)ProgmanItem	$(ToolsGroup) , "Registry Help" 	  $(MstoolsDir)"regentry.hlp"	       ""  0
    Create$(Common)ProgmanItem	$(ToolsGroup) , "Hardware Compatibility List 7/1993" $(MstoolsDir)"jul93hcl.hlp"  ""	0
    Create$(Common)ProgmanItem	$(ToolsGroup) , "Net Watcher"		  $(MstoolsDir)"netwatch.exe"	       ""  0
    Create$(Common)ProgmanItem	$(ToolsGroup) , "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) , "TopDesk"		  $(MstoolsDir)"topdesk.exe"	       ""  0
    Create$(Common)ProgmanItem	$(ToolsGroup) , "Win VTP"		  $(MstoolsDir)"winvtp.exe"	       ""  0
    Create$(Common)ProgmanItem	$(ToolsGroup) , "WinDiff"		  $(MstoolsDir)"windiff.exe"	       ""  0
    Create$(Common)ProgmanItem	$(ToolsGroup) , "POSIX Utility Help"	  $(MstoolsDir)"posix.wri"	       ""  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)

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

    AddSectionFilesToCopyList Files-always-reskit $(STF_SRCDIR) $(MstoolsDir)

;    ifstr(i) $(STF_PLATFORM) == $(PlatformID_I386)
    AddSectionFilesToCopyList Files-always-reskit-posix	$(STF_SRCDIR) $(MstoolsDir)posix
;    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-posix]
5, AR.EXE , SIZE=35328
5, CAT.EXE , SIZE=41472
5, CC.EXE , SIZE=39424
4, CHMOD.EXE , SIZE=46592
5, CHOWN.EXE , SIZE=43520
5, CP.EXE , SIZE=43520
4, DEVSRV.EXE , SIZE=72192
4, FIND.EXE , SIZE=71680
4, GREP.EXE , SIZE=60416
5, LD.EXE , SIZE=36864
5, LN.EXE , SIZE=39424
4, LS.EXE , SIZE=52736
3, MAKE.EXE , SIZE=159232
5, MKDIR.EXE , SIZE=34816
5, MV.EXE , SIZE=38912
4, RM.EXE , SIZE=44544
5, RMDIR.EXE , SIZE=32768
3, SH.EXE , SIZE=162816
5, TOUCH.EXE , SIZE=36352
4, VI.EXE , SIZE=140800
5, WC.EXE , SIZE=37376

[Files-always-reskit]
4, ANIEDIT.EXE , SIZE=48128
3, BROWMON.EXE , SIZE=139264
5, BROWMON.HLP , SIZE=20992
4, BROWSTAT.EXE , SIZE=49664
5, CHOICE.EXE , SIZE=28160
4, COMPRESS.EXE , SIZE=45056
4, DELPART.EXE , SIZE=126976
4, DIRUSE.EXE , SIZE=44544
3, DOMMON.EXE , SIZE=150528
5, DOMMON.HLP , SIZE=29696
5, DRIVERS.EXE , SIZE=29184
5, DUMPEL.EXE , SIZE=38912
5, EXETYPE.EXE , SIZE=36352
5, EXETYPE.INI , SIZE=4608
5, FATBOOT.BIN , SIZE=512
5, FIFO.CMD , SIZE=1024
5, FIFO_OFF.INI , SIZE=512
5, FIFO_ON.INI , SIZE=512
5, FLOPLOCK.EXE , SIZE=36864
5, FTPCTRS.DLL , SIZE=13824
5, FTPCTRS.H , SIZE=2048
5, FTPCTRS.INI , SIZE=3584
5, FTPCTRS.REG , SIZE=512
5, FTPINST.BAT , SIZE=2560
5, GETBS.EXE , SIZE=16896
5, GRPTOREG.EXE , SIZE=35840
4, GUTILS.DLL , SIZE=59904
4, IMAGEDIT.EXE , SIZE=102912
4, IMAGEDIT.HLP , SIZE=82432
5, INSTALLD.CMD , SIZE=1024
5, INSTSRV.EXE , SIZE=35328
4, JUL93HCL.HLP , SIZE=62464
3, JUL93HCL.IND , SIZE=153600
5, LMMIB2.MIB , SIZE=16896
4, LOADACCT.EXE , SIZE=114688
4, LODCTR.EXE , SIZE=54272
2, MIB_II.MIB , SIZE=105984
5, MIBCC.EXE , SIZE=31744
5, NETSVC.EXE , SIZE=30208
4, NETWATCH.EXE , SIZE=49664
2, NTCARD.HLP , SIZE=1210880
5, NTDETECT.COM , SIZE=27136
5, OS2API.TXT , SIZE=18432
5, PERFMTR.EXE , SIZE=31232
3, PERMS.EXE , SIZE=27648
5, PMON.EXE , SIZE=28160
2, POSIX.WRI , SIZE=222208
5, PROFILE.INI , SIZE=5120
5, PSTAT.EXE , SIZE=26624
4, PVIEWER.EXE , SIZE=52736
4, QSLICE.EXE , SIZE=51200
5, RASUSERS.EXE , SIZE=32256
2, README.WRI , SIZE=32256
5, REGBACK.EXE , SIZE=29696
3, REGENTRY.HLP , SIZE=347136
3, REGENTRY.IND , SIZE=489472
4, REGINI.EXE , SIZE=51200
5, REGREST.EXE , SIZE=28672
5, REGTOGRP.EXE , SIZE=28672
4, REMOTE.EXE , SIZE=52736
5, REMOVE.BAT , SIZE=2048
4, REPAIR.EXE , SIZE=143360
5, RESTFILE.EXE , SIZE=35328
4, RESTKEYS.EXE , SIZE=122368
2, RKTOOLS.HLP , SIZE=173568
5, SCHEMES.BAT , SIZE=3072
5, SCHEMES.CPL , SIZE=38912
5, SCOPY.EXE , SIZE=22528
5, SHARED32.INI , SIZE=1024
5, SLEEP.EXE , SIZE=22528
4, SMBTRACE.EXE , SIZE=104448
5, SMI.MIB , SIZE=4608
5, SNMPUTIL.EXE , SIZE=16896
2, SRVMGR.EXE , SIZE=375296
4, SRVMGR.HLP , SIZE=124416
4, TOPDESK.EXE , SIZE=84480
5, TOPDESK.HLP , SIZE=39936
5, TOPHOOK.DLL , SIZE=8704
3, TROUBLE.HLP , SIZE=229888
4, TROUBLE.IND , SIZE=53248
4, UCONVERT.EXE , SIZE=48640
5, UCONVERT.HLP , SIZE=10000
5, UNLODCTR.EXE , SIZE=41472
4, UPEDIT.EXE , SIZE=47104
5, UPEDIT.HLP , SIZE=39424
3, UPLODPRF.EXE , SIZE=155136
5, UPLODPS2.BAT , SIZE=512
2, USRMGR.EXE , SIZE=534528
4, USRMGR.HLP , SIZE=129536
4, WINAT.EXE , SIZE=57344
5, WINAT.HLP , SIZE=12288
4, WINDIFF.EXE , SIZE=119296
4, WINNTP.EXE , SIZE=50688
4, WINVTP.EXE , SIZE=44032
4, ~PROFILE.INF , SIZE=62976

[Files-always-system32]
5, 3DGAPST.CUR , SIZE=1024
5, 3DGAPSTL.CUR , SIZE=1024
5, 3DGARRO.CUR , SIZE=1024
5, 3DGARROL.CUR , SIZE=1024
5, 3DGMOVE.CUR , SIZE=1024
5, 3DGNESW.CUR , SIZE=1024
5, 3DGNO.CUR , SIZE=1024
5, 3DGNOL.CUR , SIZE=1024
5, 3DGNS.CUR , SIZE=1024
5, 3DGNWSE.CUR , SIZE=1024
5, 3DGWAIT.CUR , SIZE=1024
5, 3DGWE.CUR , SIZE=1024
5, 3DSAPST.CUR , SIZE=1024
5, 3DSARRO.CUR , SIZE=1024
5, 3DSMOVE.CUR , SIZE=1024
5, 3DSNESW.CUR , SIZE=1024
5, 3DSNO.CUR , SIZE=1024
5, 3DSNS.CUR , SIZE=1024
5, 3DSNWSE.CUR , SIZE=1024
5, 3DSWAIT.CUR , SIZE=1024
5, 3DSWE.CUR , SIZE=1024
5, 3DWAPST.CUR , SIZE=1024
5, 3DWAPSTL.CUR , SIZE=1024
5, 3DWARRO.CUR , SIZE=1024
5, 3DWARROL.CUR , SIZE=1024
5, 3DWMOVE.CUR , SIZE=1024
5, 3DWNESW.CUR , SIZE=1024
5, 3DWNO.CUR , SIZE=1024
5, 3DWNOL.CUR , SIZE=1024
5, 3DWNS.CUR , SIZE=1024
5, 3DWNWSE.CUR , SIZE=1024
5, 3DWWAIT.CUR , SIZE=1024
5, 3DWWE.CUR , SIZE=1024
4, APPLE.ANI , SIZE=3584
5, OEMNSVKT.INF , SIZE=39424
5, APPSTAR2.ANI , SIZE=8192
5, APPSTART.CUR , SIZE=1024
5, APPSTRT2.CUR , SIZE=1024
5, BMAPST.CUR , SIZE=1024
5, BMARRO.CUR , SIZE=1024
5, BMMOVE.CUR , SIZE=1024
5, BMNESW.CUR , SIZE=1024
5, BMNO.CUR , SIZE=1024
5, BMNS.CUR , SIZE=1024
5, BMNWSE.CUR , SIZE=1024
5, BMWAIT.CUR , SIZE=1024
5, BMWE.CUR , SIZE=1024
5, BSAPST.CUR , SIZE=1024
5, BSARRO.CUR , SIZE=1024
5, BSMOVE.CUR , SIZE=1024
5, BSNESW.CUR , SIZE=1024
5, BSNO.CUR , SIZE=1024
5, BSNS.CUR , SIZE=1024
5, BSNWSE.CUR , SIZE=1024
5, BSWAIT.CUR , SIZE=1024
5, BSWE.CUR , SIZE=1024
5, CROSS.CUR , SIZE=1024
5, DINOSAU2.ANI , SIZE=5120
5, DINOSAUR.ANI , SIZE=5120
2, HANDAPST.ANI , SIZE=50176
5, HANDEXIT.ANI , SIZE=6656
5, HANDNESW.ANI , SIZE=2048
5, HANDNO.ANI , SIZE=4096
5, HANDNS.ANI , SIZE=2048
5, HANDNWSE.ANI , SIZE=2048
2, HANDWAIT.ANI , SIZE=8704
5, HANDWE.ANI , SIZE=2048
5, HARROW.CUR , SIZE=1024
5, HCROSS.CUR , SIZE=1024
5, HIBEAM.CUR , SIZE=1024
5, HMOVE.CUR , SIZE=1024
5, HNESW.CUR , SIZE=1024
5, HNODROP.CUR , SIZE=1024
5, HNS.CUR , SIZE=1024
5, HNWSE.CUR , SIZE=1024
5, HOURGLA2.ANI , SIZE=12288
5, HOURGLAS.CUR , SIZE=1024
5, HWE.CUR , SIZE=1024
5, LAPPSTRT.CUR , SIZE=1024
5, LARROW.CUR , SIZE=1024
5, LCROSS.CUR , SIZE=1024
5, LIBEAM.CUR , SIZE=1024
5, LMOVE.CUR , SIZE=1024
5, LNESW.CUR , SIZE=1024
5, LNODROP.CUR , SIZE=1024
5, LNS.CUR , SIZE=1024
5, LNWSE.CUR , SIZE=1024
5, LWAIT.CUR , SIZE=1024
5, LWE.CUR , SIZE=1024
5, MSAPST.CUR , SIZE=1024
5, MSARRO.CUR , SIZE=1024
5, MSMOVE.CUR , SIZE=1024
5, MSNESW.CUR , SIZE=1024
5, MSNO.CUR , SIZE=1024
5, MSNS.CUR , SIZE=1024
5, MSNWSE.CUR , SIZE=1024
5, MSWAIT.CUR , SIZE=1024
5, MSWE.CUR , SIZE=1024
5, NOARROW.CUR , SIZE=1024
5, PSAPST.CUR , SIZE=1024
5, PSARRO.CUR , SIZE=1024
5, PSMOVE.CUR , SIZE=1024
5, PSNESW.CUR , SIZE=1024
5, PSNO.CUR , SIZE=1024
5, PSNS.CUR , SIZE=1024
5, PSNWSE.CUR , SIZE=1024
5, PSWAIT.CUR , SIZE=1024
5, PSWE.CUR , SIZE=1024
5, RSAPST.CUR , SIZE=1024
5, RSARRO.CUR , SIZE=1024
5, RSMOVE.CUR , SIZE=1024
5, RSNESW.CUR , SIZE=1024
5, RSNO.CUR , SIZE=1024
5, RSNS.CUR , SIZE=1024
5, RSNWSE.CUR , SIZE=1024
5, RSWAIT.CUR , SIZE=1024
5, RSWE.CUR , SIZE=1024
5, TV.ANI , SIZE=11264
