[Identification]
    OptionType = NetAdapter

[PlatformsSupported]
    PCI
    EISA

[Options]
    CpqNF3


;
;  File names, etc.
;

[FileConstants]
UtilityInf         = "UTILITY.INF"
subroutineinf      = "SUBROUTN.INF"
SoftwareType       = "driver"
MS_InfName         = "oemnadvt.inf"
Exit_Code          = 0
NETFLEX3_E_1BYTE   =   15798542
NETFLEX3_E_4BYTE   =   552669454
NETFLEX3_2_E_4BYTE = 1089540366


;
; EventLog Message Files
;

NetEventDLL     = "%SystemRoot%\System32\Netevent.dll;%SystemRoot%\System32\Drivers\NetFlx3.Sys"
IoLogMsgDLL     = "%SystemRoot%\System32\IoLogMsg.dll"


;
; Product Info
;

Manufacturer        = "Compaq"
ProductMajorVersion = "3"
ProductMinorVersion = "5"
ProductVersion      = $(ProductMajorVersion)"."$(ProductMinorVersion)


;
; Software
;

ProductSoftwareName      = "CpqNF3"
ProductSoftwareImagePath = "\SystemRoot\System32\Drivers\NetFlx3.sys"
NetRuleSoftwareType      = "CpqNF3Sys ndisDriver CpqNF3Driver"

NetRuleSoftwareUse      = $(SoftwareType)
NetRuleSoftwareBindForm = """CpqNF3Sys"" yes no container"
NetRuleSoftwareClass    = {"CpqNF3Driver basic"}
NetRuleSoftwareBindable = {"CpqNF3Driver CpqNF3Adapter non exclusive 100"}


;
; Hardware
;

ProductHardwareName     = "CpqNF3"
NetRuleHardwareType     = "CpqNF3 CpqNF3Adapter"
NetRuleHardwareBindForm = " yes yes container"
NetRuleHardwareClass    = {"CpqNF3Adapter basic"}


;
; Registry Key
;

ProductKeyName  = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"$(ProductSoftwareName)"\CurrentVersion"
ProductKeyNetRulesName  = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"$(ProductSoftwareName)"\CurrentVersion\NetRules"
ParamKeyName    = $(!NTN_ServiceBase)"\"$(ProductHardwareName)"\Parameters"
NetCardKeyName  = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\Windows NT\CurrentVersion\NetworkCards"


[GeneralConstants]
from               = ""
to                 = ""
ExitCodeOk         = 0
ExitCodeCancel     = 1
ExitCodeFatal      = 2
KeyNull            = ""
MAXIMUM_ALLOWED    = 33554432
RegistryErrorIndex = NO_ERROR
KeyProduct         = ""
KeyParameters      = ""
TRUE               = 1
FALSE              = 0
NoTitle            = 0
ExitState          = "Active"
OldVersionExisted  = $(FALSE)
DriverPath         = $(!STF_NTPATH)\drivers
;AdapterList       = {{}}
AddAdapterCount    = 0
CPL_FileName       = $(!STF_WINDOWSSYSPATH)\NETFLX3.CPL

[date]
    Now = {} ? $(!LIBHANDLE) GetSystemDate

[adapter]
    AdapterList = {} ? $(!NETFLEX3_HANDLE)  NetFlex3FindAdapter


;---------------------------------------------------------------------------
; 1. Identify
;
; DESCRIPTION:   To verify that this INF deals with the same type of options
;                as we are choosing currently.
;
; INPUT:         None
;
; OUTPUT:        $($R0): STATUS: STATUS_SUCCESSFUL
;                $($R1): Option Type (COMPUTER ...)
;                $($R2): Diskette description
;---------------------------------------------------------------------------
[Identify]
    read-syms Identification
    set Status     = STATUS_SUCCESSFUL
    set Identifier = $(OptionType)
    set Media      = #("Source Media Descriptions", 1, 1)
    Return $(Status) $(Identifier) $(Media)

;------------------------------------------------------------------------
; 2. ReturnOptions:
;
; DESCRIPTION:   To return the option list supported by this INF and the
;                localised text list representing the options.
;
;
; INPUT:         $($0):  Language used. ( ENG | FRN | ... )
;
; OUTPUT:        $($R0): STATUS: STATUS_SUCCESSFUL |
;                                STATUS_NOLANGUAGE
;                                STATUS_FAILED
;                                STATUS_NOTSUPPORTED
;
;                $($R1): Option List
;                $($R2): Option Text List
;------------------------------------------------------------------------
[ReturnOptions]
    set Status        = STATUS_FAILED
    set OptionList     = {}
    set OptionTextList = {}
    set LanguageList = ^(LanguagesSupported, 1)

    Debug-Output "Running Return Options"

    Ifcontains(i) $($0) in $(LanguageList)
        ifstr(i) $($1) == ""
           goto returnoptions
        endif
        set PlatformList = ^(PlatformsSupported, 1)
        Ifcontains(i) $($1) in $(PlatformList)
           goto returnoptions
        else
           set Status = STATUS_NOTSUPPORTED
           goto finish_ReturnOptions
        endif
    else
        set Status = STATUS_NOLANGUAGE
        goto finish_ReturnOptions
    endif

returnoptions = +
    set OptionList     = ^(Options, 1)
    set OptionTextList = ^(OptionsText$($0), 1)
    set Status         = STATUS_SUCCESSFUL

finish_ReturnOptions = +
    Debug-Output "Status: "$(Status)
    Debug-Output "OptionList: "$(OptionList)
    Debug-Output "OptionTextList: "$(OptionTextList)

    Return $(Status) $(OptionList) $(OptionTextList)

;------------------------------------------------------------------------
;
; 3. InstallOption:
;
;      This section is shelled to by main installation processing
;      or by NCPASHEL.INF during reconfig, removal, update, etc.
;
;
; FUNCTION:  To copy files representing Options
;            To configure the installed option
;            To update the registry for the installed option
;
; INPUT:     $($0):  Language to use
;            $($1):  OptionID to install
;            $($2):  SourceDirectory
;            $($3):  AddCopy  (YES | NO)
;            $($4):  DoCopy   (YES | NO)
;            $($5):  DoConfig (YES | NO)
;
; OUTPUT:    $($R0): STATUS: STATUS_SUCCESSFUL |
;                            STATUS_NOLANGUAGE |
;                            STATUS_USERCANCEL |
;                            STATUS_FAILED
;
;------------------------------------------------------------------------

[InstallOption]
    set Option   = $($1)
    set SrcDir   = $($2)
    set AddCopy  = $($3)
    set DoCopy   = $($4)
    set DoConfig = $($5)
    set LanguageList = ^(LanguagesSupported, 1)
    Ifcontains(i) $($0) NOT-IN $(LanguageList)
        Return STATUS_NOLANGUAGE
    endif
    set !DebugOutputControl = 1

    Debug-Output "Starting Install option..."

    read-syms GeneralConstants
    read-syms FileConstants
    read-syms DialogConstants$(!STF_LANGUAGE)

; *******************************************************************
; 19 April 1996, PJM
; Removed Helpdir reference as we are no longer respnsible for
; copying generic help files.
; ----------------
;    Split-String $(SrcDir), "\", DiskLocInfo
;    QueryListSize Size $(DiskLocInfo)
;    ifint $(Size) >= 5
;      ifstr(i) *($(DiskLocInfo), $(Size)) == "\"
;        set HelpDir = $(SrcDir)"..\..\"
;      else
;        set HelpDir = $(SrcDir)"\..\..\"
;      endif
;    else
;      set HelpDir = $(SrcDir)
;    endif
; *******************************************************************

    Debug-Output "SrcDir = "$(SrcDir)
    Debug-Output "DoCopy = "$(DoCopy)
    Debug-Output "Add Copy = "$(AddCopy)
    Debug-Output "DoConfig = "$(DoConfig)

    Debug-Output "NTN_InstallMode = "$(!NTN_InstallMode)
    Debug-Output "NTN_InstallPhase = "$(!NTN_InstallPhase)
    Debug-Output "NTN_Origination = "$(!NTN_Origination)
    Debug-Output "STF_INSTALL_MODE = "$(!STF_INSTALL_MODE)
    Debug-Output "SIF_GUI_UNATTENDED = "$(!SIF_GUI_UNATTENDED)
    Debug-Output "STF_UNATTENDED = "$(!STF_UNATTENDED)

    Debug-Output "About to detect NT version"
    read-syms NtVer
    detect    NtVer
    Debug-Output "Back from NT version detect"
    Debug-Output "Ver ="$(NtVersion)
    Split-String $(NtVersion) "{}," TempList
;
;   MainVer number will wither be 3 or 4
;
    set MainVerNumber = *($(TempList),2)

    Debug-Output "MainVerNumber = "$(MainVerNumber)

;    debug-output "HelpDir  = "$(HelpDir)

    Debug-Output "STF_CONTEXTINFNAME is:  "$(STF_CONTEXTINFNAME)
    Debug-Output $(STF_CONTEXTINFNAME)": STF_CWDIR is: "$(!STF_CWDIR)
    Debug-Output $(STF_CONTEXTINFNAME)": STF_LANGUAGE is: "$(!STF_LANGUAGE)
    Debug-Output $(STF_CONTEXTINFNAME)": Option = "$(Option)
    set-subst LF = "\n"

    ifstr(i) $(!NTN_Origination) == "NCPA"
        set Continue = $(OK)
    endif
    read-syms FileConstants$(!STF_LANGUAGE)
    detect date
    set-title  $(FunctionTitle)
    set to   = Begin
    set from = Begin
    set CommonStatus = STATUS_SUCCESSFUL
    EndWait

Begin = +

    ; Lets see if we can get the INF name from registry.  Otherwise we
    ; will use the STF_CONTEXTINFNAME value....
    ;    SOFTWARE\Compaq\CpqNf3\CurrentVersion\NetRules Key, InfName Value

    OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) +
                                  $(MAXIMUM_ALLOWED) +
                                  KeyProduct
    Ifstr $(KeyProduct) != $(KeyNull)
        Shell $(UtilityInf), GetInfFileNameFromRegistry, $(KeyProduct)
        CloseRegKey $(KeyProduct)
        ifint $($ShellCode) != $(!SHELL_CODE_OK)
            set ShellErrorSection = UtilityInf:GetFileNameFromRegistry
            Debug-Output "ShellErrorSection = "$(ShellErrorSection)
            goto ShellCodeError
        endif
 
        Debug-Output "Inf Name from registry is:"$($R0)

        set UG_InfName = $($R0)
        set UG_FileName = $(!STF_WINDOWSSYSPATH)\$(UG_InfName)
    else
	Debug-Output "Inf Name does not exist in the registry"
        ; use the STF_CONTEXTINFNAME
        set UG_FileName = $(STF_CONTEXTINFNAME)
        set UG_InfName = $(UG_FileName)
        ; chop off the path part and save the name of the file in UG_InfName
        Split-String $(UG_InfName) "\" TempList
        ForListDo $(TempList)
            set UG_InfName = $($)
        EndForListDo 
    endif

    ; the name of the inf file with no path
    Debug-Output "UG_InfName = "$(UG_InfName)
    ; the complete path and name of the inf file
    Debug-Output "UG_FileName = "$(UG_FileName)

    Debug-Output "Install mode:"$(!NTN_InstallMode)
    Ifstr(i) $(!NTN_InstallMode) == deinstall
        set StartLabel = removeadapter
    else-Ifstr(i) $(!NTN_InstallMode) == Update
        set StartLabel = UpgradeSoftware
    else-Ifstr(i) $(!NTN_InstallMode) == Bind
        set StartLabel = bindingadapter
    else-Ifstr(i) $(!NTN_InstallMode) == Configure
        set CommonStatus = STATUS_REBOOT
        Ifstr(i) $(ProductKeyName) == $(!NTN_RegBase)
            Debug-Output "Cannot configure the Compaq NetFlex-3 driver software."
            Shell $(UtilityInf),RegistryErrorString,CANNOT_CONFIGURE_SOFTWARE
            ifint $($ShellCode) != $(!SHELL_CODE_OK)
                Debug-Output "ShellCode error: cannot get an error string."
                goto ShellCodeError
            endif
            set Error = $($R0)
            set from = end
            set to = end
            goto nonfatal
        endif
        set CommonStatus = STATUS_REBOOT
        set StartLabel = ConfigureAdapter
    else
        set StartLabel = InstallAdapter
        set OEM_ABANDON_OPTIONS = {}
        set OEM_ABANDON_SOFTWARE = FALSE
        set OEM_ABANDON_ON = TRUE
    endif
    set from = $(fatal)
    set to = $(fatal)
    goto $(StartLabel)


;-----------------------------------------------
; Binding section
;-----------------------------------------------
bindingadapter =+
    set Error = "Binding: Sorry, not yet implemented."
    goto fatal


;-----------------------------------------------
; Removeadapter section
;-----------------------------------------------
removeadapter = +
    Ifstr(i) $(ProductKeyName) == $(!NTN_RegBase)
        Shell $(UtilityInf), RemoveSoftwareComponent, $(Manufacturer), +
            $(ProductSoftwareName)
        ifint $($ShellCode) != $(!SHELL_CODE_OK)
            Debug-Output "ShellCode error - RemoveSoftwareComponent"
            goto ShellCodeError
        endif
        set RegistryErrorIndex = $($R0)
        Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
            goto fatalregistry
        endif
     else
        Shell $(UtilityInf), RemoveHardwareComponent, $(Manufacturer), +
               $(ProductSoftwareName), $(!NTN_RegBase)
        ifint $($ShellCode) != $(!SHELL_CODE_OK)
           Debug-Output "ShellCode error - RemoveHardwareComponent"
           goto ShellCodeError
        endif
        set RegistryErrorIndex = $($R0)
        Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
           goto fatalregistry
        endif
	OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct

	Ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
		Debug-Output "The software component has been removed"
		AddFileToDeleteList $(UG_FileName)
		AddFileToDeleteList $(CPL_FileName)
	else
		CloseRegKey $(KeyProduct)
	endif

    endif
    goto end


;-----------------------------------------------
; Installation Section
;-----------------------------------------------

InstallAdapter = +
    Debug-Output $(STF_CONTEXTINFNAME)": Install Adapter"

    OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct
    Ifstr $(KeyProduct) != $(KeyNull)
        CloseRegKey $(KeyProduct)
        ifstr(i) !(NTN_RegBase) == $(ProductKeyName)
            Shell $(UtilityInf), VerExistedDlg, $(ProductSoftwareTitle),+
                $(ProductVersion)
            ifint $($ShellCode) != $(!SHELL_CODE_OK)
                goto ShellCodeError
            endif
            goto end
        else
;            set OldVersionExisted = $(TRUE)
            set OldVersionExisted = $(FALSE)
        endif
    endif

    Debug-Output "Old Version Existed: "$(OldVersionExisted)
    ifint $(OldVersionExisted) == $(FALSE)
      install "Install-update"
;      install "AddIcon"	
    endif


;
; If the file copy worked, first test what ver of nt is being used, then test custom/express, then test primary/secondary
;

    Debug-Output "About to test the install mode"
    ifstr(i) $(STF_INSTALL_OUTCOME) == "STF_SUCCESS"
        ifstr(i) $(MainVerNumber) == "3"
            ifstr(i) $(!STF_INSTALL_MODE) == "CUSTOM"
                ifstr(i) $(!NTN_InstallPhase) == "primary"
                    Debug-Output "V3 Custom Primary Install Mode, launching NETFLX3.EXE /I /S3 /N$(UG_FileName)"
                    RunProgram ExitCode "Compaq NT Support Software Diskette" "" netflx3.exe /I /S3 /N$(UG_FileName)
                else
                    Debug-Output "V3 Custom Secondary Install Mode, launching NETFLX3.EXE /I /N$(UG_FileName)"
                    RunProgram ExitCode "Compaq NT Support Software Diskette" "" netflx3.exe /I /N$(UG_FileName)
                endif
            else
                ifstr(i) $(!NTN_InstallPhase) == "primary"
                    Debug-Output "V3 Express Primary Install Mode, launching NETFLX3.EXE /I /E /S3 /N$(UG_FileName)"
                    RunProgram ExitCode "Compaq NT Support Software Diskette" "" netflx3.exe /I /E /S3 /N$(UG_FileName)
                else
                    Debug-Output "V3 Express Secondary Install Mode    *****!!! This case should never happen !!!*****"
                    ; can't do EXPRESS in secondary phase
                endif
            endif
        else
            ifstr(i) $(!STF_INSTALL_MODE) == "CUSTOM"
                ifstr(i) $(!NTN_InstallPhase) == "primary"
                    Debug-Output "V4 Custom Primary Install Mode, launching NETFLX3.EXE /I /E /S4 /N$(UG_FileName)"
                    RunProgram ExitCode "Compaq NT Support Software Diskette" "" netflx3.exe /I /E /S4 /N$(UG_FileName)
                else
                    Debug-Output "V4 Custom Secondary Install Mode, launching NETFLX3.EXE /I /N$(UG_FileName)"
                    RunProgram ExitCode "Compaq NT Support Software Diskette" "" netflx3.exe /I /N$(UG_FileName)
                endif
            else
                ifstr(i) $(!NTN_InstallPhase) == "primary"
                    Debug-Output "V4 Express Primary Install Mode, launching NETFLX3.EXE /I /E /S4 /N$(UG_FileName)"
                    RunProgram ExitCode "Compaq NT Support Software Diskette" "" netflx3.exe /I /E /S4 /N$(UG_FileName)
                else
                    Debug-Output "V4 Express Secondary Install Mode    *****!!! This case should never happen !!!*****"
                    ; can't do EXPRESS in secondary phase
                endif
            endif
        endif
	    ifstr(i) $(ExitCode) != "0"
			debug-output "need to reboot"
			set CommonStatus = STATUS_SUCCESSFUL
		else
			debug-output "reboot NOT needed"
			set CommonStatus = STATUS_NO_EFFECT
		endif
    endif

    goto successful

;-----------------------------------------------
; Configuration Section
;-----------------------------------------------
ConfigureAdapter = +
    Debug-Output $(STF_CONTEXTINFNAME)": Configure Adapter"

    Debug-Output "Configure mode, Spawning NETFLX3.EXE /C"
    RunProgram ExitCode "Compaq NT Support Software Diskette" "" netflx3.exe /C
    ifstr(i) $(ExitCode) != "0"
	debug-output "need to reboot"
        set CommonStatus = STATUS_REBOOT
    else
	debug-output "reboot NOT needed"
        set CommonStatus = STATUS_NO_EFFECT
    endif
    goto successful


;-----------------------------------------------
; Upgrade Software section
;-----------------------------------------------

UpgradeSoftware = +
    ;
    ; First determine whether we want to do upgrade or update for software
    ; or hardware component. Then we will determine whether the Mode is
    ; update or upgrade.
    ;
    ; If the same version of the product existed in the registry, we do
    ; update. Otherwise, we will do a upgrade
    ;
    Debug-Output $(STF_CONTEXTINFNAME)": UpgradeSoftware"
    Debug-Output $(STF_CONTEXTINFNAME)": ProductKeyName ="$(ProductKeyName)
    Debug-Output $(STF_CONTEXTINFNAME)": !NTN_RegBase   ="$(!NTN_RegBase)

    ;
    ; Upgrade software component
    ;
    OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct

    Ifstr $(KeyProduct) != $(KeyNull)
        Shell $(UtilityInf), GetInfFileNameFromRegistry, $(KeyProduct)
        ifint $($ShellCode) != $(!SHELL_CODE_OK)
            set ShellErrorSection = UtilityInf:GetFileNameFromRegistry
            goto ShellCodeError
        endif
	Debug-Output "Inf Name from registry is:"$($R0)
        set UG_InfName = $($R0)
        Debug-Output "UG_InfName = "$(UG_InfName)

; *******************************************************************
; 19 April 1996, PJM
; Removed Helpdir reference as we are no longer respnsible for
; copying generic help files.
; -----------
;        ifstr(i) $(UG_InfName) != ""
;            ;
;            ; set the HelpDir based on location of the NetFlx3 Directory.
;            ;
;            Split-String $(SrcDir), "\", DiskLocInfo
;            QueryListSize Size $(DiskLocInfo)
;            ifint $(Size) >= 5
;                ifstr(i) *($(DiskLocInfo), $(Size)) == "\"
;                    set HelpDir = $(SrcDir)"..\..\"
;                else
;                    set HelpDir = $(SrcDir)"\..\..\"
;                endif
;            else
;                set HelpDir = $(SrcDir)
;            endif
;            debug-output "HelpDir  = "$(HelpDir)
; *******************************************************************

            install "Install-Update"
;	    install "AddIcon"
            ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
               goto Fatal
            endif
	
	        set CommonStatus = STATUS_REBOOT

            ; Upgrade the version number
            ;
            SetRegValue $(KeyProduct) {MajorVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductMajorVersion)}
            SetRegValue $(KeyProduct) {MinorVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductMinorVersion)}

            ;
            ; do nothing for update
            ;
            CloseRegKey $(KeyProduct)
        else
            goto fatalregistry
        endif
    endif

    goto end



;-----------------------------------------------
; Success completion 
;-----------------------------------------------

successful = +
;
; If the STF_CONTEXTINFNAME is not equal to the UG_InfName variable that was pulled out of the registry then
; delete the STF_CONTEXINFTNAME because it is just a second copy of UG_InfName that we don't need afterwards.
; It is not possible to stop NCPA from copying the oemsetup.inf to STF_CONTEXINFTNAME when we hit the install section
; so we just erase it. (unless there was no inf name in the registry, then we keep the file)

    ifstr(i) $(STF_CONTEXTINFNAME) != $(UG_FileName)
        AddFileToDeleteList $(STF_CONTEXTINFNAME)
    endif

    goto end


;-----------------------------------------------
; Section called when we are abandoning
;-----------------------------------------------

abandon = +
    ForListDo $(OEM_ABANDON_OPTIONS)
        Shell $(UtilityInf), RemoveHardwareComponent, $(Manufacturer), +
            $(ProductSoftwareName), $($)
        ifint $($ShellCode) != $(!SHELL_CODE_OK)
            Debug-Output "ShellCode error"
            goto ShellCodeError
        endif
        set RegistryErrorIndex = $($R0)
        Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
            goto fatalregistry
        endif
    EndForListDo
    Ifstr(i) $(OEM_ABANDON_SOFTWARE) == TRUE
        Shell $(UtilityInf), RemoveSoftwareComponent, $(Manufacturer), +
            $(ProductSoftwareName), FALSE
        ifint $($ShellCode) != $(!SHELL_CODE_OK)
            Debug-Output "ShellCode error"
            goto ShellCodeError
        endif
        set RegistryErrorIndex = $($R0)
        Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
            goto fatalregistry
        endif
    endif
    goto end


;-----------------------------------------------
; Section used when we need to issue a warning
;-----------------------------------------------

warning = +
    Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "WARNING", $(Error)
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
        goto ShellCodeError
    endif
    ifstr(i) $($R1) == "OK"
        goto $(to)
    else-ifstr(i) $($R1) == "CANCEL"
        goto $(from)
    else
        goto end
    endif

nonfatal = +
    ifstr(i) $(Error) == ""
        Shell $(UtilityInf) RegistryErrorString "SETUP_FAIL"
        ifint $($ShellCode) != $(!SHELL_CODE_OK)
            goto ShellCodeError
        endif
        set Error = $($R0)
    endif
    Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "NONFATAL", $(Error)
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
        goto ShellCodeError
    endif
    ifstr(i) $($R1) == "OK"
        goto $(from)
    else
        goto end
    endif

fatalregistry = +
    Shell $(UtilityInf) RegistryErrorString $(RegistryErrorIndex)
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
        goto ShellCodeError
    endif
    set Error = $($R0)
    goto fatal

fatal = +
    ifstr(i) $(Error) == ""
        Shell $(UtilityInf) RegistryErrorString "SETUP_FAIL"
        ifint $($ShellCode) != $(!SHELL_CODE_OK)
            goto ShellCodeError
        endif
        set Error = $($R0)
    endif
    Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "FATAL", $(Error)
    ifint $($ShellCode) != $(!SHELL_CODE_OK)
        goto ShellCodeError
    endif
    goto setfailed

ShellCodeError = +
    Debug-Output $(STF_CONTEXTINFNAME)": Shell error, $(ShellErrorSection)"
    set DlgType      = "MessageBox"
    set STF_MB_TITLE = $(ShellCodeErrorTitle)
    set STF_MB_TEXT  = $(ShellCodeErrorText)
    set STF_MB_TYPE  = 1
    set STF_MB_ICON  = 3
    set STF_MB_DEF   = 1
    ui start "Error Message"
    goto setfailed


setfailed = +
    set CommonStatus = STATUS_FAILED
    ifstr(i) $(OEM_ABANDON_ON) == TRUE
        set OEM_ABANDON_ON = FALSE
        goto abandon
    endif
    goto end
end = +
    goto term
term = +
    Return $(CommonStatus)

[Install-Update]
   set STF_VITAL        = ""
   set STF_OVERWRITE    = "VERIFYSOURCEOLDER"
   AddSectionFilesToCopyList Files-Driver $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers
   AddSectionFilesToCopyList Files-DLL $(SrcDir) $(!STF_WINDOWSSYSPATH)
   AddSectionFilesToCopyList Files-INF $(SrcDir) $(!STF_WINDOWSSYSPATH)
;   AddSectionFilesToCopyList Files-HLP $(HelpDir) $(!STF_WINDOWSSYSPATH)
   AddSectionFilesToCopyList Files-APP $(SrcDir) $(!STF_WINDOWSSYSPATH)
   set !STF_NCPA_FLUSH_COPYLIST = TRUE
Debug-Output "About to copy"
   CopyFilesInCopyList
Debug-Output "copied"
   Exit

[AddIcon]
    set ProgGroup = "Administrative Tools"
    set AppName   = "NetFlex-3 Setup Utility"
    set CmdLine   = $(!STF_WINDOWSSYSPATH)"\netflx3.exe"

    ;
    ; Remove the existing item -- assuming it's in the Administrative Tools
    ;                             group
    ;
    RemoveProgmanItem $(ProgGroup) +
		      $(AppName)

    ;
    ; Re-add the item.
    ;
    CreateProgmanItem $(ProgGroup) +
		      $(AppName)   +
		      $(CmdLine)   +
		      $(CmdLine)   +
		      0
    exit

[NtVer]
    NtVersion = "" ? $(!LIBHANDLE) GetWindowsNtVersion



[Source Media Descriptions]
;    1  = "Windows NT Setup Disk #1"  , TAGFILE = disk1
;    2  = "Windows NT Workstation CD-ROM" , TAGFILE = cdrom.w
    3  = "Compaq NT Support Software Disk"

[Signature]
    FileType = MICROSOFT_DRVLIB_FILE

[GetSignature]
    read-syms Signature
    return $(FileType)

[ProductType]
STF_PRODUCT  = Winnt
STF_PLATFORM = I386

[Files-Inf]
3, oemsetup.inf, SIZE=1000, RENAME=$(UG_InfName)

[Files-DLL]
3, NetFlx3.DLL, SIZE=999

[Files-Driver]
3, NetFlx3.SYS, SIZE=999

[Files-APP]
3, NETFLX3.EX_, SIZE=999, DECOMPRESS, RENAME=NETFLX3.EXE
3, NETFLX3.HL_, SIZE=999, DECOMPRESS, RENAME=NETFLX3.HLP
3, NETFLX3.CP_, SIZE=999, DECOMPRESS, RENAME=NETFLX3.CPL

[LanguagesSupported]
    ENG

[OptionsTextENG]
    NetFlex3    = "Compaq NetFlex-3 Controller"

[FileConstantsENG]
    ProCaption   = "Windows NT Setup"
    ProCancel    = "Cance&l"
    ProCancelMsg = "Windows NT Networking is not correctly installed.  "+
                   "Are you sure you want to cancel copying files?"
    ProCancelCap = "Network Setup Message"
    ProText1     = "Copying:"
    ProText2     = "To:"
    FunctionTitle   = "Compaq NetFlex-3 Controller Setup"
    ProductSoftwareDescription        = "Compaq NetFlex-3 NDIS 3.0 Miniport Driver"
    ProductHardwareNetFlex3PDescription = "Compaq NetFlex-3/P Controller"
    ProductHardwareNetFlex3EDescription = "Compaq NetFlex-3/E Controller"
    CANNOT_FIND_ANY_CARD              = "Network card is not present in the system."
    ProductSoftwareTitle              = "Compaq NetFlex-3 Driver"
    ProductHardwareNetFlex3PTitle       = "NetFlex-3"
    ProductHardwareNetFlex3ETitle       = "NetFlex-3"
    ProductHardwareNetFlex3PSuffix      = "/P"
    ProductHardwareNetFlex3ESuffix      = "/E"
    ShellCodeErrorTitle     = "Error: "$(FunctionTitle)
    ShellCodeErrorText      = "Shell Code Error."

[DialogConstantsENG]
    Help        = "&Help"
    Exit        = "Cancel"
    OK          = "OK"
    HelpContext = ""
    Continue    = "Continue"
    Cancel      = "Cancel"






























