;***************************************************************************/ ;* */ ;* OEMSETUP.INF */ ;* */ ;* Copyright (c) Madge Networks Ltd. 1994 */ ;* */ ;* MADGE Smart Ringnode Driver installer for MdgMPort.SYS */ ;* */ ;***************************************************************************/ ; ; v1.02.02 ; For use with MdgMPort.SYS v1.02.02 ; ;----------------------------------------------------------------------- [Identification] OptionType = NetAdapter ;----------------------------------------------------------------------- ; PlatformsSupported ; ------------------ ; This identifies the platforms supported by the adapter card. ; Possible types are: ; ; ISA, EISA and MCA ;----------------------------------------------------------------------- [PlatformsSupported] MCA ISA EISA "Jazz-Internal Bus" ;----------------------------------------------------------------------- ; LANGUAGES SUPPORTED ; ------------------- ; ; The languages supported by the OEM INF, For every language supported ; we need to have a separate text section for every displayable text ; section. ; ;----------------------------------------------------------------------- [LanguagesSupported] ENG ;----------------------------------------------------------------------- ; OPTION LIST ; ----------- ; This section lists the OEM Option key names. These keys are locale ; independent and used to represent the option in a locale independent ; manner. ; ;----------------------------------------------------------------------- [Options] MDGMPMCA MDGMPEISA MDGMPISA ;----------------------------------------------------------------------- ; OPTION TEXT SECTION ; ------------------- ; These are text strings used to identify the option to the user. There ; are separate sections for each language supported. The format of the ; section name is "OptionsText" concatenated with the Language represented ; by the section. ; ;----------------------------------------------------------------------- [OptionsTextENG] MDGMPMCA = "Madge Smart 16/4 Ringnode (MCA Adapters)" MDGMPEISA = "Madge Smart 16/4 Ringnode (EISA Adapters)" MDGMPISA = "Madge Smart 16/4 Ringnode (ISA Adapters)" ; ---------------------------------------------------------------------- ; CONSTANTS FOR USING DIALOGS ; ---------------------------------------------------------------------- [IRQChoices] IRQ_1 = "02",2 IRQ_2 = "03",3 IRQ_3 = "05",5 IRQ_4 = "07",7 IRQ_5 = "10",10 IRQ_6 = "11",11 IRQ_7 = "12",12 IRQ_8 = "15",15 [IOLocationChoices] IOBase_1 = "0x0a20",2592 IOBase_2 = "0x1a20",6688 IOBase_3 = "0x2a20",10784 IOBase_4 = "0x3a20",14880 IOBase_5 = "0x4a20",18976 IOBase_6 = "0x4e20",20000 IOBase_7 = "0x6a20",27168 IOBase_8 = "0x6e20",28192 [DMAChannelChoices] DMAChannel_1 = "PIO",0 DMAChannel_2 = "01",1 DMAChannel_3 = "03",3 DMAChannel_4 = "05",5 DMAChannel_5 = "06",6 DMAChannel_6 = "PIO (on multiprocessors)",32768 [RxTxSlotsChoices] RxTxSlots_1 = "Rx=04 Tx=04",0 RxTxSlots_2 = "Rx=08 Tx=04",1 RxTxSlots_3 = "Rx=12 Tx=06",2 RxTxSlots_4 = "Rx=16 Tx=08",3 RxTxSlots_5 = "Rx=24 Tx=12",4 RxTxSlots_6 = "Rx=32 Tx=16",5 [StatsChoices] Stats_1 = "Disabled",0 Stats_2 = "Enabled",1 [FileConstants] ; ; File names, etc. ; UtilityInf = "UTILITY.INF" subroutineinf = "SUBROUTN.INF" SoftwareType = "driver" Exit_Code = 0 DialogDllName = "mdgmpdlg.dll" ; ; Product Info ; Manufacturer = "Madge" ProductMajorVersion = "1" ProductMinorVersion = "02" ProductRevision = ".02" ProductVersion = $(ProductMajorVersion)"."$(ProductMinorVersion)$(ProductRevision) ; ; Software ; ProductSoftwareName = "MdgMPort" ProductSoftwareImagePath = "%SystemRoot%\system32\drivers\"$(ProductSoftwareName)".sys" NetRuleSoftwareType = "mdgtrSys ndisDriver mdgtrDriver" NetRuleSoftwareUse = $(SoftwareType) NetRuleSoftwareBindForm = """mdgtrSys"" yes no container" NetRuleSoftwareClass = {"mdgtrDriver basic"} NetRuleSoftwareBindable = {"mdgtrDriver mdgtrAdapter non exclusive 100"} ; ; Hardware ; ProductHardwareName = "MdgMPort" NetRuleHardwareType = "mdgtr mdgtrAdapter" NetRuleHardwareBindForm = " yes yes container" NetRuleHardwareClass = {"mdgtrAdapter basic"} ; ; Registry Key ; ProductKeyName = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"$(ProductSoftwareName)"\CurrentVersion" ParamKeyName = $(!NTN_ServiceBase)"\"$(ProductHardwareName)"\Parameters" ; ; EventLog Message File ; MadgeEventLogFile = $(ProductSoftwareImagePath) [GeneralConstants] ; ; Program flow control variables. ; from = "" to = "" ; ; Return codes; Exit_Code is set to one of these ; ExitCodeOk = 0 ExitCodeCancel = 1 ExitCodeFatal = 2 MAXIMUM_ALLOWED = 33554432 RegistryErrorIndex = NO_ERROR KeyNull = "" KeyProduct = "" KeyParameters = "" TRUE = 1 FALSE = 0 NoTitle = 0 ExitState = "Active" OldVersionExisted = $(FALSE) DriverPath = $(!STF_NTPATH)\drivers IRQList = ^(IRQChoices, 1) IRQValues = ^(IRQChoices, 2) IOLocationList = ^(IOLocationChoices, 1) IOLocationValues = ^(IOLocationChoices, 2) DMAChannelList = ^(DMAChannelChoices,1) DMAChannelValues = ^(DMAChannelChoices,2) RxTxSlotsList = ^(RxTxSlotsChoices,1) RxTxSlotsValues = ^(RxTxSlotsChoices,2) StatsList = ^(StatsChoices,1) StatsValues = ^(StatsChoices,2) MadgeHelpIdMin = 6000 MadgeHelpIdMax = 6002 MadgeHelpIdMDGMPISA = 6001 MadgeHelpIdMDGMPEISA = 6002 MadgeHelpIdMDGMPMCA = 6002 ; ---------------------------------------------------------------------- ; Language-Dependent Dialog Constants ; ---------------------------------------------------------------------- [FileConstantsENG] ; ; Variables to support thermometer gauge and error dialogs ; ;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:" ; ; Product Info ; FunctionTitle = "MdgMPort v"$(ProductVersion)": Madge Smart Ringnode Setup" ; ; Software ; ProductSoftwareTitle = "MdgMPort" ProductSoftwareDescription = "MdgMPort: Madge Smart 16/4 Ringnode NDIS3 Miniport Driver" ; ; Hardware ; ProductHardwareMDGMPMCATitle = "Madge Smart 16/4 MCA Ringnode" ProductHardwareMDGMPEISATitle = "Madge Smart 16/4 EISA Ringnode" ProductHardwareMDGMPISATitle = "Madge Smart 16/4 ISA Ringnode" ProductHardwareMDGMPMCADescription = "Madge Smart 16/4 Ringnode (MicroChannel)" ProductHardwareMDGMPEISADescription = "Madge Smart 16/4 Ringnode (EISA Bus)" ProductHardwareMDGMPISADescription = "Madge Smart 16/4 Ringnode (ISA Bus)" CANNOT_FIND_ANY_CARD = "Network card is not present in the system" TRIMMED_MFS = "WARNING: The maximum frame size at 16Mbps is 17839 bytes"+ " and you have specified a value greater than that. This"+ " value has been reduced to 17839 for you. If you are in"+ " fact running at 4Mbps, the maximum frame size is 4472,"+ " but do not worry - the driver will automatically set"+ " the correct value, and write it to the Event Log." ShellCodeErrorTitle = "Error: "$(FunctionTitle) ShellCodeErrorText = "Shell Code Error" [DialogConstantsENG] ; ; Common button names, etc. ; Help = "&Help" Exit = "&Cancel" OK = "&OK" Continue = "C&ontinue" Cancel = "C&ancel" HelpContext = "" [date] ; Now is a list which contains { Sec from 1-1-1970, Year, Month, Day, Hour, ; Minute, Second } Now = {} ? $(!LIBHANDLE) GetSystemDate ; ----------------------------------------------------------------------- ; Input DIALOGS ; ----------------------------------------------------------------------- [FileDependentDlgENG] DlgType = "RadioCombination" DlgTemplate = $(Option) Caption = $(FunctionTitle) ;DlgText = "Please select values for the following fields:" Combo1Label = "&IRQ Level:" Combo2Label = "I/O &Loc/Slot:" Combo3Label = "DMA &Channel:" Combo4Label = "Rx/Tx &Buffers:" Combo5Label = "Traffic &Statistics Gathering:" Combo1List = $(IRQList) Combo1Out = $(IRQValue) Combo2List = $(IOLocationList) Combo2Out = $(IOLocationValue) Combo3List = $(DMAChannelList) Combo3Out = $(DMAChannelValue) Combo4List = $(RxTxSlotsList) Combo4Out = $(RxTxSlotsValue) Combo5List = $(StatsList) Combo5Out = $(StatsValue) ComboListItemsIn = {Combo1List, Combo2List, Combo3List, Combo4List, Combo5List} ComboListItemsOut = {Combo1Out, Combo2Out, Combo3Out, Combo4Out, Combo5Out} Edit1Label = "MaxFrameSize:" Edit2Label = "LAA:" EditTextIn = {$(MaxFrameSize), $(LAA)} EditTextLim = {5,17} EditTextOut = {} CBOptionsGreyed = {} NotifyFields = {NO, NO, NO, NO, NO} HelpContext = $(MadgeHelpId$(Option)) [MDGMPMCA_Bytes] ; Format of list items : { LoByte, HiByte } ; First generation 4Mbps only { 3, 8} ; Second generation 4Mbps only { 14, 8} ; 16/4 standard model (MC16) { 45, 0} ; 16/4 streaming model (MC32) {116, 0} MDGMPMCA_ByteList = {+ { 3, 8 },+ { 14, 8 },+ { 45, 0 },+ {116, 0 } + } [MDGMPEISA_Bytes] ; EISAFindBus only appears to work if you specify the low three bytes of the ; compressed Id. The mask parameter appears to be unused. This makes our life ; much easier, because all EISA card Id's are the same in these bytes! MDGMPEISA_LowWord = 34612 ; 0x00008734 MDG bit only ;--------------------------------------------------------------------------- ; 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 = {} ; ; Check if the language requested is supported ; set LanguageList = ^(LanguagesSupported, 1) Ifcontains(i) $($0) in $(LanguageList) ; ; Check if the platforms requested is supported ; 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 ; ; form a list of all the options and another of the text representing ; returnoptions = + set OptionList = ^(Options, 1) set OptionTextList = ^(OptionsText$($0), 1) set Status = STATUS_SUCCESSFUL finish_ReturnOptions = + Return $(Status) $(OptionList) $(OptionTextList) ;------------------------------------------------------------------------ ; ; 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] StartWait ; set !DebugOutputControl = 1 ; ; Set default values. ; set Status = STATUS_FAILED ; ; extract parameters ; set Option = $($1) set SrcDir = $($2) set AddCopy = $($3) set DoCopy = $($4) set DoConfig = $($5) Debug-Output "MADGE: -- InstallOption --" Debug-Output "MADGE: STF_CWDIR = "$(!STF_CWDIR) Debug-Output "MADGE: STF_LANGUAGE = "$(!STF_LANGUAGE) Debug-Output "MADGE: Option = "$(Option) Debug-Output "MADGE: SrcDir = "$(SrcDir) Debug-Output "MADGE: AddCopy = "$(AddCopy) Debug-Output "MADGE: DoCopy = "$(DoCopy) Debug-Output "MADGE: DoConfig = "$(DoConfig) ; ; Check if the language requested is supported ; set LanguageList = ^(LanguagesSupported, 1) Ifcontains(i) $($0) NOT-IN $(LanguageList) Return STATUS_NOLANGUAGE endif ; ; Define all the constants ; set-subst LF = "\n" read-syms GeneralConstants read-syms FileConstants read-syms DialogConstants$(!STF_LANGUAGE) ifstr(i) $(!NTN_Origination) == "NCPA" set Continue = $(OK) endif read-syms FileConstants$(!STF_LANGUAGE) ifstr(i) $(Option) == "MDGMPMCA" set McaEisaKeyword = "McaPosId" else-ifstr(i) $(Option) == "MDGMPEISA" set McaEisaKeyword = "EisaCompressedId" endif SetHelpFile "mdgmpdlg.hlp" $(MadgeHelpIdMin) $(MadgeHelpIdMax) detect date set-title $(FunctionTitle) set to = Begin set from = Begin ; ; Assume all is well. ; set CommonStatus = STATUS_SUCCESSFUL EndWait ; ----------------------------------------------------------------------- ; Set up the operation-mode-based variables and gaily welcome ; the user. If the "install mode" variable is improperly set, ; assume this is a new installation. ; ----------------------------------------------------------------------- Begin = + Debug-Output "MADGE: -- Begin --" Debug-Output "MADGE: Install mode = "$(!NTN_InstallMode) Debug-Output "MADGE: Registry base = "$(!NTN_RegBase) 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 set StartLabel = configureadapter ; ; You cannot config the software component ; Ifstr(i) $(ProductKeyName) == $(!NTN_RegBase) Debug-Output "MADGE: Cannot configure the MdgMPort driver software." Shell $(UtilityInf),RegistryErrorString,CANNOT_CONFIGURE_SOFTWARE ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "MADGE: ShellCode error: cannot get an error string." goto ShellCodeError endif set Error = $($R0) set from = end set to = end goto nonfatalinfo endif 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) ; ---------------------------------------------------------------------- ; Installation Section ; ---------------------------------------------------------------------- installadapter = + Debug-Output "MADGE: -- installadapter --" ; ; First, check whether the same version of the software exists ; OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct Ifstr $(KeyProduct) != $(KeyNull) ; ; Same version already existed in the local machine ; Popup the dialog and ask the user whether he wants to continue ; CloseRegKey $(KeyProduct) ifstr(i) $(!NTN_RegBase) == $(ProductKeyName) ; ; Cannot Install the same software again ; Shell $(UtilityInf), VerExistedDlg, $(ProductSoftwareTitle),+ $(ProductVersion) ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "MADGE: ShellCode error: cannot get an error string." goto ShellCodeError endif goto end else ; ; Add a new adapter card? ; Shell $(UtilityInf), CardExistedDlg ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "MADGE: ShellCode error: cannot get an error string." goto ShellCodeError endif ifstr(i) $($R1) != "OK" goto end endif set OldVersionExisted = $(TRUE) endif endif ; ; If we are installing an MCA adapter then generate a list of all ; Madge MCA adapters installed. ; ifstr(i) $(Option) == "MDGMPMCA" set cardlist = {} read-syms MDGMPMCA_Bytes ForListDo $(MDGMPMCA_ByteList) set MDGMPMCA_Elt_LoByte = *($($), 1) set MDGMPMCA_Elt_HiByte = *($($), 2) Shell $(UtilityInf) MCAFindBus $(MDGMPMCA_Elt_LoByte) $(MDGMPMCA_Elt_HiByte) ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif ifstr $($R0) != "NO_ERROR" set Error = $($R0) goto fatal endif ifstr(i) $($R1) != {} ifstr(i) $(cardlist) == {} set cardlist = $($R1) else ForListDo $($R1) set cardlist = >($(cardlist), $($)) EndForListDo endif endif EndForListDo ifstr(i) $(cardlist) == {} set Error = $(CANNOT_FIND_ANY_CARD) set CommonStatus = STATUS_USERCANCEL set from = end goto nonfatal endif set AdapterList = $(cardlist) ; ; If we are installing an EISA adapter then generate a list of all ; Madge EISA adapters installed. ; else-ifstr(i) $(Option) == "MDGMPEISA" set cardlist = {} read-syms MDGMPEISA_Bytes Shell $(UtilityInf) EISAFindBus $(MDGMPEISA_LowWord) ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif ifstr $($R0) != "NO_ERROR" set Error = $($R0) goto fatal endif ifstr(i) $($R1) != {} set cardlist = $($R1) endif ifstr(i) $(cardlist) == {} set Error = $(CANNOT_FIND_ANY_CARD) set CommonStatus = STATUS_USERCANCEL set from = end goto nonfatal endif set AdapterList = $(cardlist) else ; Must be an ISA card - nothing to look for here. ; Instead, we have to ask the user for the IO Location/Irq number/Dma ; channel. This happens down below. endif ; ; If we are installing an MCA or an EISA adapter then get the slot ; number of the first adapter that does not have a driver instance. ; ifstr(i) $(Option) != "MDGMPISA" ; For MCA/EISA cards, determine the slot number and id of the card ForListDo $(AdapterList) set BusNum = *($($), 1) set SlotNum = *($($), 2) set Mca_Eisa_Id = *($($), 3) Shell $(UtilityInf) IsNetCardAlreadyInstalled $(BusNum) $(SlotNum) + $(ProductHardware$(Option)Description) $(ProductHardwareName) ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif ifstr $($R0) != "NO_ERROR" set Error = $($R0) goto fatal endif ifstr(i) $($R1) != "YES" set SlotNumber = $(SlotNum) set McaEisaId = $(Mca_Eisa_Id) goto installfiles endif EndForListDo ; If we get here, we have failed to find the new card, so we had better ; fail. set Error = $(CANNOT_FIND_ANY_CARD) set CommonStatus = STATUS_USERCANCEL set from = end goto nonfatal endif ; ----------------------------------------------------------------------- ; Copy the driver and helper files from the distribution disk. ; ----------------------------------------------------------------------- installfiles = + Debug-Output "MADGE: -- installfiles --" Debug-Output "MADGE: OldVersionExisted = "$(OldVersionExisted) Debug-Output "MADGE: NTN_InstallMode = "$(!NTN_InstallMode) ifint $(OldVersionExisted) == $(FALSE) ifstr(i) $(!NTN_InstallMode) == "install" ; ; ifstr(i) $(DoCopy) == "YES" ; ; NB !STF_SRCDIR is set to something unhelpful like E:\i386\, but if we ; omit the last parameter, DoAskSource will default to using A:\ ; ; Shell $(UtilityInf), DoAskSource, $(!STF_CWDDIR), $(!STF_SRCDIR) ; Shell $(UtilityInf), DoAskSource, $(!STF_CWDDIR) Ifint $($ShellCode) != $(!SHELL_CODE_OK) Goto ShellCodeError Else-Ifstr(i) $($R0) == STATUS_FAILED shell $(UtilityInf) RegistryErrorString "ASK_SOURCE_FAIL" ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif set Error = $($R0) Goto fatal Else-Ifstr(i) $($R0) == STATUS_USERCANCEL Goto successful Endif Set SrcDir = $($R1) ; Referenced in [Install-Option] ; ; endif ; install "Install-Option" Debug-Output "MADGE: STF_INSTALL_OUTCOME = "$(STF_INSTALL_OUTCOME) Debug-Output "MADGE: SrcDir = "$(SrcDir) ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS shell $(UtilityInf) RegistryErrorString "UNABLE_COPY_FILE" ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif set Error = $($R0) goto fatal endif endif endif ; ----------------------------------------------------------------------- ; Set some defaults that apply to all card types ; ----------------------------------------------------------------------- set MaxFrameSize = 4096 set LAA = "" set RxTxSlotsValue = *($(RxTxSlotsList), 2) set StatsValue = *($(StatsList), 1) ; ; Set the default values that apply only to ISA cards ; set IRQValue = *($(IRQList), 6) set IOLocationValue = *($(IOLocationList), 1) set DmaChannelValue = *($(DMAChannelList), 3) goto adapteroptions ; ----------------------------------------------------------------------- ; Configuration Section ; ----------------------------------------------------------------------- configureadapter = + Debug-Output "MADGE: -- configureadapter --" ; ; NB !NTN_RegBase, for hardware components, is : ; \SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\0x ; ; ; This next IF is redundant - it will always be NULL ; Ifstr $(KeyProduct) == $(KeyNull) OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_RegBase) $(MAXIMUM_ALLOWED) KeyProduct Ifstr $(KeyProduct) == $(KeyNull) set RegistryErrorIndex = CANNOT_FIND_COMPONENT_SERVICE Debug-Output "MADGE: Cannot find component product key" goto fatalregistry Endif Endif ; ; Get the other parameters; they're attached to the service ; parameters key ; Shell $(UtilityInf) FindService, $(KeyProduct) Ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "MADGE: FindService shell failure" Goto ShellCodeError Endif Ifstr(i) $($R0) != NO_ERROR Debug-Output "MADGE: FindService Shell error: "$($R0) Goto fatalregistry endif set KeyParameters = $($R2) ; ; We don't need the services key, so close it. ; CloseRegKey $($R1) Ifstr $(KeyParameters) == $(KeyNull) set RegistryErrorIndex = CANNOT_FIND_COMPONENT_SERVICE Debug-Output "MADGE: Cannot find component service" goto fatalregistry endif set OldVersionExisted = $(TRUE) set ValueName = "" set ValueData = "" set ValueStr = "" set ValueList = {} ; ; Get the old values ; EnumRegValue $(KeyParameters) ValueList ForListDo $(ValueList) set ValueItem = $($) set ValueName = *($(ValueItem),1) set ValueData = *($(ValueItem),4) ifstr(i) $(ValueName) == "InterruptNumber" set IRQValueIndex = $(ValueData) else-ifstr(i) $(ValueName) == "IoLocation" set IOLocationIndex = $(ValueData) else-ifstr(i) $(ValueName) == "DmaChannel" set DMAChannelIndex = $(ValueData) else-ifstr(i) $(ValueName) == "SlotNumber" set SlotNumber = $(ValueData) else-ifstr(i) $(ValueName) == $(McaEisaKeyword) set McaEisaId = $(ValueData) else-ifstr(i) $(ValueName) == "MaxFrameSize" set MaxFrameSize = $(ValueData) else-ifstr(i) $(ValueName) == "NetworkAddress" set LAA = $(ValueData) else-ifstr(i) $(ValueName) == "RxTxSlots" set RxTxSlotsIndex = $(ValueData) else-ifstr(i) $(ValueName) == "PromiscuousModeX" set StatsIndex = $(ValueData) endif EndForListDo set RxTxSlotsValue = *($(RxTxSlotsList), ~($(RxTxSlotsValues),$(RxTxSlotsIndex))) ifstr(i) $(RxTxSlotsValue) == "" set RxTxSlotsValue = *($(RxTxSlotsList), 2) endif set StatsValue = *($(StatsList), ~($(StatsValues),$(StatsIndex))) ifstr(i) $(StatsValue) == "" set StatsValue = *($(StatsList), 1) endif ifstr $(Option) == MDGMPISA ; ; If it is NOT MDGMPISA, we don't care about any of these values. ; set IRQValue = *($(IRQList), ~($(IRQValues),$(IRQValueIndex))) ifstr(i) $(IRQValue) == "" set IRQValue = *($(IRQList), 6) endif set DMAChannelValue = *($(DMAChannelList), ~($(DMAChannelValues),$(DMAChannelIndex))) ifstr(i) $(DMAChannelValue) == "" set DMAChannelValue = *($(DMAChannelList), 4) endif set IOLocationValue = *($(IOLocationList), ~($(IOLocationValues),$(IOLocationIndex))) ifstr(i) $(IOLocationValue) == "" set IOLocationValue = *($(IOLocationList), 1) endif endif ; $(Option) == MDGMPISA ; ----------------------------------------------------------------------- ; Let the user set options. ; ----------------------------------------------------------------------- adapteroptions = + Debug-Output "MADGE: -- adapteroptions --" set from = adapteroptions set oldLAA = $(LAA) set oldStatsValue = $(StatsValue) ; This will set DlgTemplate to be the same as $(Option) read-syms FileDependentDlg$(!STF_LANGUAGE) ; MDGMPEISA and MDGMPMCA share the same dialog ifstr(i) $(Option) == "MDGMPMCA" set DlgTemplate = "MDGMPEISA" endif LoadLibrary "x" $(DialogDllName) MdgDialog ui start "InputDlg" $(MdgDialog) ifstr(i) $(DLGEVENT) == "CONTINUE" ifstr $(Option) == MDGMPISA set IRQValueIndex = $(Combo1Out) set IOLocationIndex = $(Combo2Out) set DMAChannelIndex = $(Combo3Out) endif set RxTxSlotsIndex = $(Combo4Out) set StatsIndex = $(Combo5Out) set MaxFrameSize = *($(EditTextOut), 1) set LAA = *($(EditTextOut), 2) ui pop 1 goto adapterverify else-ifstr(i) $(DLGEVENT) == "EXIT" set CommonStatus = STATUS_USERCANCEL Debug-Output "MADGE: Action: exit. Bye." ui pop 1 FreeLibrary $(MdgDialog) goto end else ; ; Unknow command ; ui pop 1 Debug-Output "MADGE: Action: unknown. Bye." FreeLibrary $(MdgDialog) goto end endif ; ----------------------------------------------------------------------- ; Verify the adapter options. ; ----------------------------------------------------------------------- adapterverify = + Debug-Output "MADGE: -- adapterverify --" ifstr $(LAA) != "" ; ; NB A line of spaces will come through here, and will fail the ; check - do we want this? ; Debug-Output "MADGE: LAA non-null - will check it" set FLibraryErrCtl = 1 LibraryProcedure MdgResult $(MdgDialog) MadgeLAACheck $(LAA) set FLibraryErrCtl = 0 ifstr $(MdgResult) != "MADGE_STATUS_SUCCESS" ; ; Illegal LAA supplied in the install dialog ; Display error message and go around again ; FreeLibrary $(MdgDialog) set Error = $(MdgResult) goto nonfatal ; this will go back to "adapteroptions", or to "end" endif endif FreeLibrary $(MdgDialog) ifint $(MaxFrameSize) > 17839 ; ; 17839 is the maximum frame size at 16Mbps, while at 4Mbps it is 4472. ; Unfortunately, we can't tell here what the ring speed is, so guess at ; 16Mbps, which is the most sensible. ; set MaxFrameSize = 17839 set Error = $(TRIMMED_MFS) set from = checkedMFS goto nonfatalinfo endif ; ----------------------------------------------------------------------- ; We have checked the options so update the registry. ; ----------------------------------------------------------------------- checkedMFS = + Debug-Output "MADGE: -- checkedMFS --" ; ; If installing, go create the necessary keys; ; if configuring, they're already open. ; ifint $(OldVersionExisted) == $(TRUE) ifstr(i) $(!NTN_InstallMode) == configure goto writeparameters endif endif StartWait ; ; Add Software Component ; ifint $(OldVersionExisted) == $(FALSE) Shell $(UtilityInf), AddSoftwareComponent, $(Manufacturer), + $(ProductSoftwareName), + $(ProductSoftwareName), + $(ProductSoftwareTitle), $(STF_CONTEXTINFNAME), + $(ProductSoftwareImagePath), "kernel", "NDIS", {}, "",+ $(MadgeEventLogFile) Set OEM_ABANDON_SOFTWARE = TRUE ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "MADGE: ShellCode error" goto ShellCodeError endif ; ; At this point: ; $R1 contains the product version key handle; ; $R2 contains the NetRules subkey handle; ; $R3 contains the new Services key handle; and ; $R4 contains the Parameters key ; $R5 contains the Linkage Key ; set RegistryErrorIndex = $($R0) set KeyProduct = $($R1) Set SoftNetRulesKey = $($R2) CloseRegKey $($R3) CloseRegKey $($R4) CloseRegKey $($R5) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR EndWait Debug-Output "MADGE: Registry error: add software components" CloseRegKey $(KeyProduct) CloseRegKey $(SoftNetRulesKey) goto fatalregistry endif set NewValueList = {{SoftwareType,$(NoTitle),$(!REG_VT_SZ),$(SoftwareType)},+ {MajorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMajorVersion)},+ {MinorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMinorVersion)},+ {Title,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareTitle)},+ {Description,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareDescription)},+ {PathName,$(NoTitle),$(!REG_VT_SZ),$(!STF_CWDDIR)},+ {ServiceName,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareName)},+ {InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)}} Shell $(UtilityInf), AddValueList, $(KeyProduct), $(NewValueList) ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "MADGE: ShellCode error." goto ShellCodeError endif set RegistryErrorIndex = $($R0) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR EndWait Debug-Output "MADGE: Registry error: add value list." CloseRegKey $(KeyProduct) CloseRegKey $(SoftNetRulesKey) goto fatalregistry endif set NewValueList = {{type,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareType)},+ {use,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareUse)}, + {bindform,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareBindForm)}, + {class,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleSoftwareClass)}, + {bindable,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleSoftwareBindable)}, + {InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)}, + {Infname ,$(NoTitle),$(!REG_VT_SZ),$(STF_CONTEXTINFNAME)} } Shell $(UtilityInf), AddValueList, $(SoftNetRulesKey), $(NewValueList) ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "MADGE: ShellCode error." goto ShellCodeError endif set RegistryErrorIndex = $($R0) CloseRegKey $(KeyProduct) CloseRegKey $(SoftNetRulesKey) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR EndWait Debug-Output "MADGE: Registry error: add value list." goto fatalregistry endif endif ; ; Create the HARDWARE\Netcard region and its corresponding service ; Shell $(UtilityInf), AddHardwareComponent, $(ProductHardwareName),$(STF_CONTEXTINFNAME),$(ProductKeyName) ifint $($R4) != -1 Set OEM_ABANDON_OPTIONS = >($(OEM_ABANDON_OPTIONS), $(!NTN_SoftwareBase)"\Microsoft\Windows NT\CurrentVersion\NetworkCards\"$($R4)) endif ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "MADGE: Cannot add hardware component" goto ShellCodeError endif set RegistryErrorIndex = $($R0) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR EndWait Debug-Output "MADGE: Registry error: add hardware component" CloseRegKey $($R1) CloseRegKey $($R2) CloseRegKey $($R3) goto fatalregistry endif ; ; At this point: ; $R1 Registry key variable for HARDWARE\Netcard\(n) ; $R2 Registry key variable for HARDWARE\Netcard\(n)\\NetRules ; $R3 Registry key handle for \Parameters key ; $R4 Adapter number assigned to adapter ; $R5 Service name generated by combining svc name with adapter number ; set KeyParameters = $($R3) set KeyAdapterRules = $($R2) set AdapterNumber = $($R4) set NewValueList = {{Manufacturer,$(NoTitle),$(!REG_VT_SZ),$(Manufacturer)},+ {Title,$(NoTitle),$(!REG_VT_SZ),"["$($R4)"] "$(ProductHardware$(Option)Title)},+ {Description,$(NoTitle),$(!REG_VT_SZ),$(ProductHardware$(Option)Description)},+ {ProductName,$(NoTitle),$(!REG_VT_SZ),$(ProductHardwareName)},+ {ServiceName,$(NoTitle),$(!REG_VT_SZ),$($R5)},+ {InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)}} Shell $(UtilityInf), AddValueList, $($R1), $(NewValueList) ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "MADGE: ShellCode error" goto ShellCodeError endif CloseRegKey $($R1) set TempProdName = """"$(ProductHardwareName)$(AdapterNumber)"""" set TempBindForm = $(TempProdName)$(NetRuleHardwareBindForm) set NewValueList = {{type,$(NoTitle),$(!REG_VT_SZ),$(NetRuleHardwareType)},+ {bindform,$(NoTitle),$(!REG_VT_SZ),$(TempBindForm)}, + {class,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleHardwareClass)}, + {InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)}, + {Infname ,$(NoTitle),$(!REG_VT_SZ),$(STF_CONTEXTINFNAME)}} Shell $(UtilityInf), AddValueList, $(KeyAdapterRules), $(NewValueList) ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "MADGE: ShellCode error." goto ShellCodeError endif set RegistryErrorIndex = $($R0) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR EndWait Debug-Output "MADGE: Resgitry error: add value list." CloseRegKey $(KeyParameters) CloseRegKey $(KeyAdapterRules) goto fatalregistry endif CloseRegKey $(KeyAdapterRules) goto writeparameters ; ; REQUIRED: $(KeyParameters) contains service Parameters key handle ; writeparameters = + Shell $(UtilityInf), GetBusTypeDialog, $(ProductHardware$(Option)Description) ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "MADGE: ShellCode error." goto ShellCodeError endif ifstr(i) $($R0) == ERROR Debug-Output "MADGE: GetBusTypeDialog error." Shell $(UtilityInf), GetBusTypeNum ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "MADGE: ShellCode error." goto ShellCodeError endif set BusTypeNum = $($R1) set BusNumber = 0 else set BusTypeNum = $($R1) set BusNumber = $($R2) endif ; ; Add the rest of the parameters to the Services area ; set RxTxSlotsValue = *($(RxTxSlotsValues), ~($(RxTxSlotsList),$(RxTxSlotsIndex))) set StatsValue = *($(StatsValues), ~($(StatsList),$(StatsIndex))) ifstr $(Option) == MDGMPISA set DMAChannelValue = *($(DMAChannelValues), ~($(DMAChannelList),$(DMAChannelIndex))) set IRQValue = *($(IRQValues), ~($(IRQList),$(IRQValueIndex))) set IOLocationValue = *($(IOLocationValues), ~($(IOLocationList),$(IOLocationIndex))) set NewValueList = {{InterruptNumber,$(NoTitle),$(!REG_VT_DWORD),$(IRQValue)},+ {BusType, $(NoTitle),$(!REG_VT_DWORD),$(BusTypeNum)},+ {BusNumber, $(NoTitle),$(!REG_VT_DWORD),$(BusNumber)},+ {MediaType, $(NoTitle),$(!REG_VT_DWORD),2},+ {IoLocation, $(NoTitle),$(!REG_VT_DWORD),$(IOLocationValue)},+ {DmaChannel, $(NoTitle),$(!REG_VT_DWORD),$(DMAChannelValue)},+ {RxTxSlots, $(NoTitle),$(!REG_VT_DWORD),$(RxTxSlotsValue)},+ {MaxFrameSize, $(NoTitle),$(!REG_VT_DWORD),$(MaxFrameSize)}} else set NewValueList = {+ {BusType, $(NoTitle),$(!REG_VT_DWORD),$(BusTypeNum)},+ {BusNumber, $(NoTitle),$(!REG_VT_DWORD),$(BusNumber)},+ {MediaType, $(NoTitle),$(!REG_VT_DWORD),2},+ {$(McaEisaKeyword), $(NoTitle), $(!REG_VT_DWORD), $(McaEisaId)},+ {SlotNumber, $(NoTitle),$(!REG_VT_DWORD),$(SlotNumber)},+ {RxTxSlots, $(NoTitle),$(!REG_VT_DWORD),$(RxTxSlotsValue)},+ {MaxFrameSize, $(NoTitle),$(!REG_VT_DWORD),$(MaxFrameSize)}} endif ifstr $(LAA) != "" ; ; Add the LAA to the end of the value list ; set NewValueList = >($(NewValueList),+ {NetworkAddress, $(NoTitle), $(!REG_VT_SZ), $(LAA)}) endif ifstr $(StatsValue) == "1" ; ; Enable promiscuous mode. ; set NewValueList = >($(NewValueList),+ {PromiscuousModeX, $(NoTitle), $(!REG_VT_DWORD), $(StatsValue)}) endif Shell $(UtilityInf), AddValueList, $(KeyParameters), $(NewValueList) ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "MADGE: ShellCode error." goto ShellCodeError endif set RegistryErrorIndex = $($R0) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR Debug-Output "MADGE: Registry error: Add value list" CloseRegKey $(KeyParameters) goto fatalregistry endif ifstr $(oldLAA) != "" ifstr $(LAA) == "" ; ; The old LAA has been cleared, so delete the key from registry ; DeleteRegValue $(KeyParameters) NetworkAddress endif endif ifstr $(oldStatsValue) != "0" ifstr $(StatsValue) == "0" ; ; Promiscuous mode has been disabled so delete the key. ; DeleteRegValue $(KeyParameters) PromiscuousModeX endif endif CloseRegKey $(KeyParameters) EndWait goto successful ; ----------------------------------------------------------------------- ; Binding section ; ----------------------------------------------------------------------- bindingadapter =+ set Error = "Binding: Sorry, not yet implemented." goto fatal ; ----------------------------------------------------------------------- ; Removeadapter section ; ----------------------------------------------------------------------- removeadapter = + Debug-Output "MADGE: -- removeadapter --" Ifstr(i) $(ProductKeyName) == $(!NTN_RegBase) ; ; Remove Software Component ; Shell $(UtilityInf), RemoveSoftwareComponent, $(Manufacturer), + $(ProductSoftwareName) ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "MADGE: ShellCode error" 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 "MADGE: ShellCode error" goto ShellCodeError endif set RegistryErrorIndex = $($R0) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR goto fatalregistry endif endif goto end ; ----------------------------------------------------------------------- ; Upgrade Software section ; ----------------------------------------------------------------------- UpgradeSoftware = + Debug-Output "MADGE: -- 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. ; ifstr(i) $(ProductKeyName) == $(!NTN_RegBase) ; ; Upgrade software component ; ; see whether the same version exist or not ; OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct Ifstr $(KeyProduct) != $(KeyNull) GetRegValue $(KeyProduct),"MajorVersion", VersionInfo set Version = *($(VersionInfo), 4) ; ; Update the binaries ; shell $(UtilityInf) GetInfFileNameFromRegistry $(KeyProduct) ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif set !UG_Filename = $($R0) ifstr(i) $(!UG_Filename) != "" install "Install-Update" ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS goto fatal endif endif CloseRegKey $(KeyProduct) OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct ; ; Upgrade the version number ; SetRegValue $(KeyProduct) {MajorVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductMajorVersion)} SetRegValue $(KeyProduct) {MinorVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductMinorVersion)} ; ; do nothing for update ; ifint $(Version) != $(ProductMajorVersion) ; ; If the major version number is not the same, ; it is major upgrade. So let Upgrade the product ; ; ; make other upgrade change if necessary ; endif CloseRegKey $(KeyProduct) else ; ; Cannot Open software key, goto ERROR ; goto fatalregistry endif else set Error = "" set OEM_ABANDON_ON = FALSE goto notsupported endif goto end ; ----------------------------------------------------------------------- ; Escape hatches ; ----------------------------------------------------------------------- successful = + goto end abandon = + ForListDo $(OEM_ABANDON_OPTIONS) Shell $(UtilityInf), RemoveHardwareComponent, $(Manufacturer), + $(ProductSoftwareName), $($) ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "MADGE: ShellCode error" goto ShellCodeError endif set RegistryErrorIndex = $($R0) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR goto fatalregistry endif EndForListDo Ifstr(i) $(OEM_ABANDON_SOFTWARE) == TRUE ; Remove Software Component Shell $(UtilityInf), RemoveSoftwareComponent, $(Manufacturer), + $(ProductSoftwareName), FALSE ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "MADGE: ShellCode error" goto ShellCodeError endif set RegistryErrorIndex = $($R0) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR goto fatalregistry endif endif goto end 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 nonfatalinfo = + set Severity = STATUS set CommonStatus = STATUS_USERCANCEL goto nonfatalmsg nonfatal = + set Severity = NONFATAL goto nonfatalmsg nonfatalmsg = + ifstr(i) $(Error) == "" set Severity = NONFATAL 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 notsupported = + ifstr(i) $(Error) == "" Shell $(UtilityInf) RegistryErrorString "OPERATION_UNIMPLEMENTED" 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 end ShellCodeError = + 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 ; ; if OEM_ABANDON_ON == TRUE, then remove the registry entries ; ifstr(i) $(OEM_ABANDON_ON) == TRUE set OEM_ABANDON_ON = FALSE goto abandon endif goto end end = + goto term term = + Return $(CommonStatus) ; ----------------------------------------------------------------------- ; Install sections ; ----------------------------------------------------------------------- [Files-Inf] 1, oemsetup.inf, SIZE=1000, RENAME=$(!UG_Filename) [Files-Driver] 1, mdgmport.sys, SIZE=61792 1, mdgmport.bin, SIZE=46558 [Files-Helper] 1, mdgmpdlg.dll, SIZE=17920 1, mdgmpdlg.hlp, SIZE=12672 [Install-Update] set STF_VITAL = "" set STF_OVERWRITE = "VERIFYSOURCEOLDER" Debug-Output "MADGE: -- Install-Update --" Debug-Output "MADGE: SrcDir = "$(SrcDir) AddSectionFilesToCopyList Files-Inf $(SrcDir) $(!STF_WINDOWSSYSPATH) AddSectionFilesToCopyList Files-Helper $(SrcDir) $(!STF_WINDOWSSYSPATH) AddSectionFilesToCopyList Files-Driver $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers set !STF_NCPA_FLUSH_COPYLIST = TRUE CopyFilesInCopyList exit [Install-Option] set STF_VITAL = "" Debug-Output "MADGE: -- Install-Option --" Debug-Output "MADGE: SrcDir="$(SrcDir) AddSectionFilesToCopyList Files-Helper $(SrcDir) $(!STF_WINDOWSSYSPATH) AddSectionFilesToCopyList Files-Driver $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers set !STF_NCPA_FLUSH_COPYLIST = TRUE CopyFilesInCopyList exit [Source Media Descriptions] 1 = "Madge Driver Disk" , TAGFILE = disk2 2 = "Windows NT Setup CD-ROM Disk" , TAGFILE = disk2 [ProductType] STF_PRODUCT = Winnt STF_PLATFORM = I386 ; ******** End of file OEMSETUP.INF *****************************************