;
;; Modified when why
; rmh001 10-Mar-94 Title is DCA SDLC Link Service
; Link Service service name is DCASDLCx
; rmh002 14-Mar-94 Use MSFT-provided link services
; rmh003 15-Mar-94 Device name is DCADL$nn
; rmh004 17-Jun-94 Wasn't showing up in setup, due to missing quote
;
; DCA Change Log
;
; 07/27/93 David Ehrlich - Started with IBMSDLC.INF
; - Changed all "IBM" to "DCA" execpt for IDD_IBMxxxxx
; - Changed all "ibm" to "dca"
; - Changed string item under [Source Media Descriptions]
; - Changed string items under [OptionsTextENG]
; - Changed 2 definitions of NetRulesTitle
; - Took out all references to X.25
; - Changes in [SDLCDriverNumbersEISA_ENG]
; [SDLCDriverNumbersISA_ENG]
; [SDLCDriverNumbersMCA_ENG]
;
; 08/04/93 David Ehrlich - Made changes to not have a list box with card
; types and then base driver number off of that.
; Instead we have 3 list boxes for IRQ, I/O
; Address, and DMA Channel. We then base the
; Driver number off of a combination of the 3.
;
; 08/16/93 David Ehrlich - Made changes so that the differences in MCA vs.
; ISA/EISA ISCA options are known and shown to the
; user.
; - Added code to not allow users to configure ISCA
; conflicts.
; 08/17/93 David Ehrlich - Merged workstation build 81 changes.
; 08/20/93 David Ehrlich - Merged workstation RC1 changes.
; - Changed, again, what we do with DriverNumber. We
; now mimic the IBM setup: 03->non-mca isca #1;
; 04->non-mca isca #2; 05->mca icsa #1; and
; 06->mca isca #2. The configuration info will now
; go into ExtraParameters of the DCASYNC service.
;
; 08/25/93 David Ehrlich - Re-added the X.25 references.
;
; 08/31/93 David Ehrlich - Added code to check and set Data1LS and Data2LS
; entries in the ExtraParameters section of DCASYNC.
; They will be the name of the link service that
; DCAISCAConfigurationData1 and
; DCAISCAConfigurationData2 cooraspond to.
; - Added [FilesFor_hwsetup_DCASDLCDD] section.
;
; 10/08/93 David Ehrlich - Added Microsoft RC 2 changes
; 06/18/96 Edward Suen - Allowed max three boards (MAX3)
;************************************************************************
;************************************************************************
;
; DCASDLC.INF
;
; DCA SDLC Link Service and Device Driver INF file
;
; History:
; t-danfr Jul 23, 92 Initial Design
; t-danfr Aug 05, 92 Update #1
;
; Notes:
; 1) This file is based on the template.inf file that is distributed
; to IHV/ISV's.
;
;************************************************************************
;************************************************************************
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;
; INITIALIZATION SECTION
; ----------------------
; This section is responsible for defining the product variables. It is the
; highest level of definition. Installation programs will use this section
; to figure out available options etc.
;
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;========================================================================
;
; SOURCE MEDIA DESCRIPTIONS
; -------------------------
; The IHV should list all the diskette labels here. The source media
; description is used during copy to prompt the user for a diskette
; if the source is diskettes. The TAGFILE field is used to confirm that
; the proper disk is being used.
;
; FORMAT:
; The format includes an enumeration constant and a name for the disk, as well
; as a number of possible flags (including the TAGFILE flag.)
; 1 = "Diskette 1 Label", TAGFILE = "Disk1.Tag"
; 2 = "Diskette 2 Label", TAGFILE = "Disk2.Tag"
; ...
;
; REFERENCES:
; TODO - Add a reference to somewhere
;
;========================================================================
[Source Media Descriptions]
1 = "SNA Link Service diskette (DCA)"
;========================================================================
;
; OPTION TYPE
; -----------
; This identifies the Option type we are dealing with. The different
; possible types are:
;
; COMPUTER, DISPLAY, MOUSE, KEYBOARD, LAYOUT, SCSI, PRINTER, ...
;
; Types specific to networking:
; NetAdapter, A netcard/adapter combination or just a netcard
; NetDriver, A netcard driver
; NetTransport, A complete NDIS-compliant TDI transport stack
; NetService, An NT networking service
; NetWork, A complete network ensemble
; NetProvider, A complete network which supports NT MPR protocol
;
; TODO - do we want to mention all those types or just the ones relevant to us?
;
; REFERENCES:
; TODO - Add a reference to somewhere
;
;========================================================================
[Identification]
OptionType = NetService
;========================================================================
;
; LANGUAGES SUPPORTED
; -------------------
; The languages supported by the IHV INF, For every language supported
; we need to have a separate text section for every displayable text
; section.
;
; REFERENCES:
; TODO - Add a reference to somewhere
;
;========================================================================
[LanguagesSupported]
ENG
;========================================================================
;
; OPTION LIST
; -----------
; This section lists the IHV Option key names. These keys are locale
; independent and used to represent the option in a locale independent
; manner.
;
; REFERENCES:
; TODO - Add a reference to somewhere
;
;========================================================================
[Options]
DCASDLCLS
DCASDLCDD
;========================================================================
;
; OPTION TEXT SECTION
; -------------------
; These are text strings used to identify the option to the user. There
; are separate sections for each language supported.
;
; FORMAT:
; The format of the section name is "OptionsText" concatenated with the
; Language represented by the section.
; [OptionsTextLNG1]
; ...
; [OptionsTextLNG2]
; ...
;
; REFERENCES:
; TODO - Add a reference to somewhere
;
;========================================================================
[OptionsTextENG]
DCASDLCLS = "DCA SDLC Link Service"
DCASDLCDD = "DCA SDLC.X.25 Device Driver"
;========================================================================
;
; SNA OPTION LIST
; ---------------
; This is the list of options available to the SNA Server user. This is
; the list presented to the user from the SNA Server setup as the
; available options. Like the normal options list, it is locale independent.
;
; REFERENCES:
; TODO - Add a reference to somewhere
;
;========================================================================
[SNAOptions]
DCASDLCLS
;========================================================================
;
; SNA OPTION ADDITIONALS
; ----------------------
; This section specifies the additional installations that should be performed
; for each of the main options. The SNA Server setup will invoke this INF
; file with each of these additional options in order followed by the main
; option.
;
; FORMAT:
; The format for the section name is "SNAOptionAdds" concatenated with the
; option name.
; [SNAOptionAddsSNAOPT1]
; ...
; [SNAOptionAddsSNAOPT2]
; ...
;
; REFERENCES:
; TODO - Add a reference to somewhere
;
;========================================================================
[SNAOptionAddsDCASDLCLS]
DCASDLCDD
;========================================================================
;
; INSTALLATION STEPS SECTION
; --------------------------
; In this section, the IHV gets to define which steps will be taken in the
; installation procedure. There are three variables and they all must be
; defined.
;
; FORMAT:
; The format is "InstallSteps" concatenated with the option name
; [InstallStepsOPT1]
; ...
;
;========================================================================
[InstallStepsDCASDLCLS]
AddFilesToCopyList = YES
CopyFilesInCopyList = YES
[InstallStepsDCASDLCDD]
AddFilesToCopyList = YES
CopyFilesInCopyList = NO
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;
; DIALOG CONSTANTS SECTION
; ------------------------
; This section is responsible for defining dialog constants. It is
; meant to be used to simplify programming this INF file as well as reading
; it.
;
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
[DialogConstants]
Radio1 = "1"
Radio2 = "2"
Radio3 = "3"
Radio4 = "4"
Radio5 = "5"
;++++++++++++++++++++++++++++++++++++
;
; ProgressCopyVars:
; These variables specify the look of the gauge that comes up
; when copying files.
;
;++++++++++++++++++++++++++++++++++++
[ProgressCopyVars]
ProCaption = "File copy in progress"
ProCancel = "&Cancel"
ProCancelMsg = $(ProductTitle)$(!LF)"is not fully installed."$(!LF)+
"Are you sure you want to cancel before all"$(!LF)+
"the files are copied?"
ProCancelCap = $(SetupTitle)" Warning"
ProText1 = "Copying "
ProText2 = " to"
[HelpContextIDs]
IDD_IBMSDLCDDCONFIG = 101
IDD_IBMSDLCLSCONFIG = 102
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;
; FILE CONSTANTS SECTION
; ----------------------
; This section is responsible for defining some general product information
; that will be used mostly for the registry
;
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;++++++++++++++++++++++++++++++++++++
;
; File Names Subsection:
; This subsection contains useful filenames for use as macros.
;
;++++++++++++++++++++++++++++++++++++
[FileConstants]
!UtilityInf = $(!SNARootDir)"\SETUPUTL.INF"
!SubroutineInf = $(!STF_WINDOWSSYSPATH)"\SUBROUTN.INF"
DialogLibrary = $(!SNARootDir)"\SETUP.SRL"
ThisFile = "DCASDLC"
ThisInf = $(ThisFile)".INF"
ThisSrl = $(ThisFile)".SRL"
ThisHlp = $(ThisFile)".HLP"
HlpMin = "100"
HlpMax = "103"
$ShellCode = 0
;++++++++++++++++++++++++++++++++++++
;
; Product Information Subsection:
; This subsection contains lots of product information that will be used
; mostly in the registry.
;
; For the SNAServiceType value, please refer to the "SNAServiceTypes" section
; in the SETUPUTL.INF file. Also, only Link Services have this value, all
; others should have a NULL string ("") for this value.
;
;++++++++++++++++++++++++++++++++++++
[FileConstantsDCASDLCLS]
;
; Product Info
;
ProductVersion = "1.0"
ProductName = "DCASDLCLS"
ProductFullName = $(ProductName)"_"$(ProductVersion)"_"$(Instance)
ProductRegBase = $(!NTN_SoftwareBase)"\Microsoft"
ProductType = "Link"
ProductImagePath = "SNALINK.EXE"
ProductDepends = {}
ProductParams = {}
ProductExtraParams = {}
ProductExclusive = $(FALSE)
ProductDLL = "IBMSDLC.DLL" ;;rmh002
ProductServicePrefix = "DcaSdlc"
ProductServiceQuery = $(TRUE)
;
; Registry Key Information
;
SNAServiceType = "CESLINK"
;
; NetRules Stuff
;
NetRulesClass = "snasdlclink snalink"
NetRulesTitle = "DCA SDLC Link Service"
NetRulesUse = "service yes yes"
NetRulesBindable = "snasdlclink snasyncdriver non non 100"
NetRulesType = "dcasdlc_"$(Instance)" snasdlclink"
FullInfName = $(!SNARootDir)"\system\hwsetup\"$(ThisInf)
SoftwareType = "service"
[FileConstantsDCASDLCDD]
;
; Product Info
;
ProductVersion = "1.0"
ProductName = "DCASYNCDD"
ProductFullName = $(ProductName)"_"$(ProductVersion)"_"$(Instance)
ProductRegBase = $(!NTN_SoftwareBase)"\Microsoft"
ProductType = "Driver"
ProductImagePath = "DCASYNC.SYS"
ProductDepends = {}
ProductParams = {}
ProductExtraParams = {}
ProductExclusive = $(TRUE)
ProductDLL = ""
ProductServicePrefix = "DCASYNC"
ProductServiceQuery = $(FALSE)
;
; Registry Key Information
;
SNAServiceType = "DRIVER"
;
; NetRules Stuff
;
NetRulesClass = "snasyncdriver basic yes"
NetRulesTitle = "DCA SDLC/X.25 Device Driver"
NetRulesUse = "driver yes yes"
NetRulesBindable = ""
NetRulesType = "dcasyncdd snasyncdriver"
FullInfName = $(!SNARootDir)"\system\hwsetup\"$(ThisInf)
SoftwareType = "driver"
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;
; GENERAL CONSTANTS SECTION
; -------------------------
; This section is responsible for defining some general constants that
; are used in this INF script. These constants include flow control
; variables, exit codes, and registry reference numbers.
;
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
[GeneralConstants]
;++++++++++++++++++++++++++++++++++++
;
; Flow Control Variables:
; From will generally represents the label we just came from while To
; represents the label we are headed to.
;
;++++++++++++++++++++++++++++++++++++
from = ""
to = ""
;++++++++++++++++++++++++++++++++++++
;
; Booleans:
;
;++++++++++++++++++++++++++++++++++++
TRUE = 1
FALSE = 0
!True = "1"
!False = "0"
;++++++++++++++++++++++++++++++++++++
;
; Other values
;
;++++++++++++++++++++++++++++++++++++
NOTIFY = 2
;++++++++++++++++++++++++++++++++++++
;
; Registry Initialization Parameters:
;
;++++++++++++++++++++++++++++++++++++
NoTitle = 0
KeyNull = ""
KeyProduct = ""
KeyParameters = ""
;++++++++++++++++++++++++++++++++++++
;
; Other Initialization Parameters:
;
;++++++++++++++++++++++++++++++++++++
ExitState = "Active"
OldVersionExisted = $(FALSE)
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;
; LANGUAGE-DEPENDENT DIALOG CONSTANTS SECTION
; -------------------------------------------
; This section is responsible for defining dialog constants that are
; language dependent.
;
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;++++++++++++++++++++++++++++++++++++
;
; Common Button Names:
;
;++++++++++++++++++++++++++++++++++++
[DialogConstantsENG]
Help = "&Help"
Exit = "C&ancel"
Continue = "&Continue"
Cancel = "C&ancel"
OK = "&OK"
HelpContext = ""
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;
; LANGUAGE-DEPENDENT FILE CONSTANTS SECTION
; -----------------------------------------
; This section is responsible for defining language dependent information.
;
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
[FileConstantsENG]
;
; The following name should include the name of the IHV as per the example
;
SetupTitle = "DCA SDLC Link Service Setup"
[FileConstantsDCASDLCLS_ENG]
ProductTitle = "DCA SDLC Link Service"
ProductDesc = "DCA SDLC Link Service for "$(!SNA_ProductName)
[FileConstantsDCASDLCDD_ENG]
ProductTitle = "DCA SDLC/X.25 Device Driver"
ProductDesc = "DCA SDLC/X.25 Device Driver for "$(!SNA_ProductName)
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;
; DATE SECTION
; ------------
; This section is responsible for establishing the value of the "Now"
; variable. This variable is a list of the following format:
; { Seconds from 1-1-1970, Year, Month, Day, Hour, Minute, Second }
;
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
[LoadSetupLibrary]
LoadLibrary "x" $(!STF_WINDOWSSYSPATH)\setupdll.dll !LIBHANDLE
exit
[date]
Now = {} ? $(!LIBHANDLE) GetSystemDate
[FreeSetupLibrary]
FreeLibrary $(!LIBHANDLE)
exit
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;
; INPUT DIALOGS SECTION
; ---------------------
; This section should contain all the information about the input dialogs.
;
; FORMAT:
; The format of the section name is the string name concatenated with the
; Language represented by the section.
; [InputDialog1LNG1]
; ...
; [InputDialog2LNG1]
; ...
;
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
[DoSDLCLSConfigENG]
DlgTemplate = IDD_IBMSDLCLSCONFIG
DlgType = "RadioCombination"
Caption = $(!P:SetupTitle)
DlgText1 = "Service Name: "$(ServiceName)
EditLabel1 = "&Title:"
EditTextIn = { $(ServiceTitle) }
EditTextLim = { 40 }
NotifyFields = { "NO" }
RadioGroupA = "Line T&ype"
RadioTextA1 = "&Leased"
RadioTextA2 = "Switched: &Server-Stored Number"
RadioTextA3 = "Switched: &Modem-Stored Number"
RadioTextA4 = "Switched: Ma&nual Dial"
ComboLabel1 = "&Interrupt"
ComboLabel2 = "I/&O Address"
ComboLabel3 = "&DMA Channel"
RadioOptionsGreyed = {}
CheckText1 = "Constant &RTS"
CBOptionsGreyed = {}
HelpContext = #( HelpContextIDs, $(DlgTemplate), 1 )
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;
; INPUT DIALOGS SCRIPTS
; ---------------------
; This section should contain all the scripts for doing input dialogs.
; Each script may return as many parameters as it wants, so long as the
; first parameter is the status and is one of the following:
;
; STATUS_SUCCESSFUL
; STATUS_FAILED
; STATUS_USERCANCEL
; STATUS_USERBACK
;
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
;
; DoSDLCLSConfig:
;
; DESCRIPTION: This shell script pops up a dialog to get the configuration
; of this product.
;
; INPUT: $($0) : Service Name
; $($1) : Current Title
; $($2) : Current Card Type Index
; $($3) : Current Line Type
; $($4) : Current Carrier
; $($5) : Current Manual Dial setting
;
; OUTPUT: $($R0): Status
; $($R1): Changes flag
; $($R2): New Title
; $($R3): New Card Type (01 - 06)
; $($R4): New Line Type
; $($R5): New Carrier
; $($R6): New Manual Dial setting
;
;()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
[DoSDLCLSConfig]
set ServiceName = $($0)
set ServiceTitle = $($1)
set DriverIndex = $($2)
set LineType = $($3)
set Carrier = $($4)
set FRadio4 = $($5)
set SvDriverIndex = $($2)
set SvLineType = $($3)
set SvCarrier = $($4)
set SvFRadio4 = $($5)
set Status = STATUS_SUCCESSFUL
set Changes = 0
;
; Read in all registry entries related to DCASYNC
;
OpenRegKey $(!REG_H_LOCAL), "", "SYSTEM\CurrentControlSet\Services\DCASYNC\Parameters\ExtraParameters", $(!REG_KEY_READ), KeyDriver
ifstr(i) $(KeyDriver) == $(KeyNull)
DCASYNCcfg1 = 0
DCASYNCcfg2 = 0
DCASYNCcfg3 = 0 ; Added MAX3 06/18/96
DCASYNCls1 = ""
DCASYNCls2 = ""
DCASYNCls3 = "" ; Added MAX3 06/18/96
else
GetRegValue $(KeyDriver) "DCAISCAConfigData1" DCASYNCcfg1
GetRegValue $(KeyDriver) "DCAISCAConfigData2" DCASYNCcfg2
GetRegValue $(KeyDriver) "DCAISCAConfigData3" DCASYNCcfg3 ; Added MAX3 06/18/96
GetRegValue $(KeyDriver) "Data1LS" DCASYNCls1
GetRegValue $(KeyDriver) "Data2LS" DCASYNCls2
GetRegValue $(KeyDriver) "Data3LS" DCASYNCls3 ; Added MAX3 06/18/96
set DCASYNCcfg1 = *( $(DCASYNCcfg1), 4 )
set DCASYNCcfg2 = *( $(DCASYNCcfg2), 4 )
set DCASYNCcfg3 = *( $(DCASYNCcfg3), 4 ) ; Added MAX3 06/18/96
set DCASYNCls1 = *( $(DCASYNCls1), 4 )
set DCASYNCls2 = *( $(DCASYNCls2), 4 )
set DCASYNCls3 = *( $(DCASYNCls3), 4 ) ; Added MAX3 06/18/96
CloseRegKey $(KeyDriver)
endif
;
; See if this is a new LS, and if so then is there is room to
; hold it
;
ifstr(i) $(ServiceName) == $(DCASYNCls1)
goto ConfigLS010
endif
ifstr(i) $(ServiceName) == $(DCASYNCls2)
goto ConfigLS010
endif
ifstr(i) $(ServiceName) == $(DCASYNCls3) ; Added MAX3 06/18/96
goto ConfigLS010 ; Added MAX3 06/18/96
endif ; Added MAX3 06/18/96
ifstr(i) $(DCASYNCls1) == ""
goto ConfigLS010
endif
ifstr(i) $(DCASYNCls2) == ""
goto ConfigLS010
endif
ifstr(i) $(DCASYNCls3) == "" ; Added MAX3 06/18/96
goto ConfigLS010 ; Added MAX3 06/18/96
endif ; Added MAX3 06/18/96
set Status = STATUS_FAILED ; Added MAX3 06/18/96
; Removed MAX3 06/18/96 shell $(!SubroutineInf) SetupMessage $(!STF_LANGUAGE) NONFATAL "The maximum of 2 DCA SDLC/X.25 boards are already configured."
shell $(!SubroutineInf) SetupMessage $(!STF_LANGUAGE) NONFATAL "The maximum of 3 DCA SDLC/X.25 boards are already configured." ; Added MAX3 06/18/96
Return $(Status), $(Changes), $(ServiceTitle), $(DriverIndex), $(LineType), $(Carrier), $(FRadio4)
ConfigLS010 =+
read-syms DialogConstants
read-syms DialogConstants$(!STF_LANGUAGE)
read-syms DoSDLCLSConfig$(!STF_LANGUAGE)
set-add Temp = $(LineType), 1
set RadioIn = { *( {1,3,2}, $(Temp)) }
ifstr(i) $(FRadio4) == $(!True)
set RadioIn = { "4" }
endif
;
; Set up choices based on bus type
;
ifstr(i) $(!STF_BUSTYPE) == "MCA"
set ComboListIn1 = { "3", "4", "7" }
set ComboListIn2 = { "380-387", "388-38F", "3A0-3A7", "3A8-3AF" }
set ComboListIn3 = { "1", "5", "7", "None" }
else
set ComboListIn1 = { "3", "4", "7" }
set ComboListIn2 = { "380-387", "388-38F", "3A0-3A7", "370-377" }
set ComboListIn3 = { "1", "3", "None" }
endif
;
; Figure out if this is a new or modify config and set DriverParams
; accordingly.
;
set DriverParams = 0
ifstr(i) $(ServiceName) == $(DCASYNCls1)
set DriverParams = $(DCASYNCcfg1)
endif
ifstr(i) $(ServiceName) == $(DCASYNCls2)
set DriverParams = $(DCASYNCcfg2)
endif
ifstr(i) $(ServiceName) == $(DCASYNCls3) ; Added MAX3 06/18/96
set DriverParams = $(DCASYNCcfg3) ; Added MAX3 06/18/96
endif ; Added MAX3 06/18/96
ifint $(DriverParams) == 0
set DriverParams = "310"
endif
;
; Figure out what board settings were previously chosen.
;
set Temp = $(DriverParams)
ifint $(Temp) > 700
set ComboListOut1 = "7"
set-sub Temp = $(Temp),700
else-ifint $(Temp) > 400
set ComboListOut1 = "4"
set-sub Temp = $(Temp),400
else
set ComboListOut1 = "3"
set-sub Temp = $(Temp),300
endif
ifint $(Temp) >= 50
set ComboListOut2 = "3A8-3AF"
set-sub Temp = $(Temp),50
else-ifint $(Temp) >= 40
set ComboListOut2 = "370-377"
set-sub Temp = $(Temp),40
else-ifint $(Temp) >= 30
set ComboListOut2 = "3A0-3A7"
set-sub Temp = $(Temp),30
else-ifint $(Temp) >= 20
set ComboListOut2 = "388-38F"
set-sub Temp = $(Temp),20
else
set ComboListOut2 = "380-387"
set-sub Temp = $(Temp),10
endif
ifint $(Temp) == 1
set ComboListOut3 = "1"
else-ifint $(Temp) == 3
set ComboListOut3 = "3"
else-ifint $(Temp) == 5
set ComboListOut3 = "5"
else-ifint $(Temp) == 7
set ComboListOut3 = "7"
else
set ComboListOut3 = "None"
endif
set ComboListItemsIn = { ComboListIn1, ComboListIn2, ComboListIn3 }
set ComboListItemsOut = { ComboListOut1, ComboListOut2, ComboListOut3 }
ifint $(Carrier) == 0
set CheckItemsIn = { "OFF" }
else
set CheckItemsIn = { "ON" }
endif
RefreshDlg =+
ui start $(DlgTemplate) $(!IHVDLGHANDLE)
ifstr(i) $(DLGEVENT) == "Exit"
set Status = STATUS_USERCANCEL
else
;
; Compute new driver index
;
ifstr(i) $(!NTN_InstallMode) == configure ; Added MAX3 06/18/96
; Removed MAX3 06/18/96 ifstr(i) $(DCASYNCls1) == ""
; Removed MAX3 06/18/96 ifstr(i) $(DCASYNCls2) == ""
; Removed MAX3 06/18/96; Nothing in the first slot and nothing in the second, assume first
; Removed MAX3 06/18/96; index entry as appropriate
; Removed MAX3 06/18/96 ifstr(i) $(!NTN_InstallMode) == install
; Removed MAX3 06/18/96 ifstr(i) $(!STF_BUSTYPE) == "MCA"
; Removed MAX3 06/18/96 set DriverIndex = "05"
; Removed MAX3 06/18/96 else
; Removed MAX3 06/18/96 set DriverIndex = "03"
; Removed MAX3 06/18/96 endif
; Removed MAX3 06/18/96 else
; Must be config
Debug-Output "BBDeviceName="$(!BBDeviceName)
set DriverIndex = "03" ;;rmh004
ifstr(i) $(!BBDeviceName) == "DCADL$03"
set DriverIndex = "03"
else-ifstr(i) $(!BBDeviceName) == "DCADL$04"
set DriverIndex = "04"
else-ifstr(i) $(!BBDeviceName) == "DCADL$05"
set DriverIndex = "05"
else-ifstr(i) $(!BBDeviceName) == "DCADL$06"
set DriverIndex = "06"
endif
; Removed MAX3 06/18/96 endif
else ;Added MAX3 06/18/96
; must be install ;Added MAX3 06/18/96
ifstr(i) $(DCASYNCls1) == "" ;Added MAX3 06/18/96
set DriverIndex = "03" ;Added MAX3 06/18/96
else ;Added MAX3 06/18/96
ifstr(i) $(DCASYNCls2) == "" ;Added MAX3 06/18/96
set DriverIndex = "04" ;Added MAX3 06/18/96
else ;Added MAX3 06/18/96
ifstr(i) $(DCASYNCls3) == "" ;Added MAX3 06/18/96
set DriverIndex = "05" ;Added MAX3 06/18/96
endif ;Added MAX3 06/18/96
endif ;Added MAX3 06/18/96
endif ;Added MAX3 06/18/96
;Added MAX3 06/18/96
endif ;Added MAX3 06/18/96
; Removed MAX3 06/18/96; We had a second slot entry assume the proper idx
; Removed MAX3 06/18/96 ifstr(i) $(!NTN_InstallMode) == install
; Removed MAX3 06/18/96 ifstr(i) $(!STF_BUSTYPE) == "MCA"
; Removed MAX3 06/18/96 set DriverIndex = "06"
; Removed MAX3 06/18/96 else
; Removed MAX3 06/18/96 set DriverIndex = "04"
; Removed MAX3 06/18/96 endif
; Removed MAX3 06/18/96 else
; Removed MAX3 06/18/96 set DriverIndex = "03"
; Removed MAX3 06/18/96 ifstr(i) $(!BBDeviceName) == "DCADL$03"
; Removed MAX3 06/18/96 set DriverIndex = "03"
; Removed MAX3 06/18/96 else-ifstr(i) $(!BBDeviceName) == "DCADL$04"
; Removed MAX3 06/18/96 set DriverIndex = "04"
; Removed MAX3 06/18/96 else-ifstr(i) $(!BBDeviceName) == "DCADL$05"
; Removed MAX3 06/18/96 set DriverIndex = "05"
; Removed MAX3 06/18/96 else-ifstr(i) $(!BBDeviceName) == "DCADL$06"
; Removed MAX3 06/18/96 set DriverIndex = "06"
; Removed MAX3 06/18/96 endif
; Removed MAX3 06/18/96 endif
; Removed MAX3 06/18/96 endif
; Removed MAX3 06/18/96 else
; Removed MAX3 06/18/96; This is if we had one in the first slot. So set the idx for
; Removed MAX3 06/18/96; the first one
; Removed MAX3 06/18/96 ifstr(i) $(!NTN_InstallMode) == install
; Removed MAX3 06/18/96 ; We are installing
; Removed MAX3 06/18/96 ifstr(i) $(!STF_BUSTYPE) == "MCA"
; Removed MAX3 06/18/96 set DriverIndex = "06"
; Removed MAX3 06/18/96 else
; Removed MAX3 06/18/96 set DriverIndex = "04"
; Removed MAX3 06/18/96 endif
; Removed MAX3 06/18/96 else
; Removed MAX3 06/18/96 ; We must be configuring
; Removed MAX3 06/18/96 set DriverIndex = "03"
; Removed MAX3 06/18/96 ifstr(i) $(!BBDeviceName) == "DCADL$03"
; Removed MAX3 06/18/96 set DriverIndex = "03"
; Removed MAX3 06/18/96 else-ifstr(i) $(!BBDeviceName) == "DCADL$04"
; Removed MAX3 06/18/96 set DriverIndex = "04"
; Removed MAX3 06/18/96 else-ifstr(i) $(!BBDeviceName) == "DCADL$05"
; Removed MAX3 06/18/96 set DriverIndex = "05"
; Removed MAX3 06/18/96 else-ifstr(i) $(!BBDeviceName) == "DCADL$06"
; Removed MAX3 06/18/96 set DriverIndex = "06"
; Removed MAX3 06/18/96 endif
; Removed MAX3 06/18/96 endif
; Removed MAX3 06/18/96
; Removed MAX3 06/18/96 endif
; Removed MAX3 06/18/96
;
; Compute new driver params
;
set DriverParams = 0
ifint $(ComboListOut1) == 3
set-add DriverParams = $(DriverParams),300
else-ifint $(ComboListOut1) == 4
set-add DriverParams = $(DriverParams),400
else
set-add DriverParams = $(DriverParams),700
endif
ifstr(i) $(ComboListOut2) == "380-387"
set-add DriverParams = $(DriverParams),10
endif
ifstr(i) $(ComboListOut2) == "388-38F"
set-add DriverParams = $(DriverParams),20
endif
ifstr(i) $(ComboListOut2) == "3A0-3A7"
set-add DriverParams = $(DriverParams),30
endif
ifstr(i) $(ComboListOut2) == "370-377"
set-add DriverParams = $(DriverParams),40
endif
ifint $(ComboListOut3) == 1
set-add DriverParams = $(DriverParams),1
else-ifint $(ComboListOut3) == 3
set-add DriverParams = $(DriverParams),3
else
set-add DriverParams = $(DriverParams),0
endif
;
; See if new driver params conflicts with another SDLC driver
;
; Since we allow three cards, there are two other cards that we Added MAX3 06/18/96
; need to check for conflicts Added MAX3 06/18/96
;Removed MAX3 06/18/96 set DPOther = 0
set DPOther1 = 0 ;Added MAX3 06/18/96
set DPOther2 = 0 ;Added MAX3 06/18/96
;Removed MAX3 06/18/96 ifstr(i) $(ServiceName) == "SnaSdlc1"
;Removed MAX3 06/18/96 ifstr(i) $(DCASYNCls1) == "SnaSdlc2"
;Removed MAX3 06/18/96 set DPOther = $(DCASYNCcfg1)
;Removed MAX3 06/18/96 endif
;Removed MAX3 06/18/96 ifstr(i) $(DCASYNCls2) == "SnaSdlc2"
;Removed MAX3 06/18/96 set DPOther = $(DCASYNCcfg2)
;Removed MAX3 06/18/96 endif
;Removed MAX3 06/18/96 else
;Removed MAX3 06/18/96 ifstr(i) $(DCASYNCls1) == "SnaSdlc1"
;Removed MAX3 06/18/96 set DPOther = $(DCASYNCcfg1)
;Removed MAX3 06/18/96 endif
;Removed MAX3 06/18/96 ifstr(i) $(DCASYNCls2) == "SnaSdlc1"
;Removed MAX3 06/18/96 set DPOther = $(DCASYNCcfg2)
;Removed MAX3 06/18/96 endif
;Removed MAX3 06/18/96 endif
;Removed MAX3 06/18/96 ifint $(DPOther) == 0
;Removed MAX3 06/18/96 set DPOther = "999"
;Removed MAX3 06/18/96 endif
Debug-Output "DriverIndex="$(DriverIndex)
ifstr(i) $(DriverIndex) == "03" ;Added MAX3 06/18/96
set DPOther1 = $(DCASYNCcfg2) ;Added MAX3 06/18/96
set DPOther2 = $(DCASYNCcfg3) ;Added MAX3 06/18/96
endif ;Added MAX3 06/18/96
;Added MAX3 06/18/96
ifstr(i) $(DriverIndex) == "04" ;Added MAX3 06/18/96
set DPOther1 = $(DCASYNCcfg1) ;Added MAX3 06/18/96
set DPOther2 = $(DCASYNCcfg3) ;Added MAX3 06/18/96
endif ;Added MAX3 06/18/96
;Added MAX3 06/18/96
ifstr(i) $(DriverIndex) == "05" ;Added MAX3 06/18/96
set DPOther1 = $(DCASYNCcfg1) ;Added MAX3 06/18/96
set DPOther2 = $(DCASYNCcfg2) ;Added MAX3 06/18/96
endif ;Added MAX3 06/18/96
;Added MAX3 06/18/96
ifint $(DPOther1) == 0 ;Added MAX3 06/18/96
set DPOther1 = "999" ;Added MAX3 06/18/96
endif ;Added MAX3 06/18/96
;Added MAX3 06/18/96
ifint $(DPOther2) == 0 ;Added MAX3 06/18/96
set DPOther2 = "999" ;Added MAX3 06/18/96
endif ;Added MAX3 06/18/96
set DPThis = $(DriverParams)
;
; Check the IRQ
;
set-div i1 = $(DPThis), 100
;Removed MAX3 06/18/96 set-div i2 = $(DPOther), 100
;Removed MAX3 06/18/96 ifint $(i1) == $(i2)
;Removed MAX3 06/18/96 shell $(!SubroutineInf) SetupMessage $(!STF_LANGUAGE) NONFATAL "This interrupt setting is in conflict with the other DCA SDLC board."
;Removed MAX3 06/18/96 ui pop 1
;Removed MAX3 06/18/96 goto RefreshDlg
;Removed MAX3 06/18/96 else
;Removed MAX3 06/18/96 set-mul tem = $(i1), 100
;Removed MAX3 06/18/96 set-sub DPThis = $(DPThis), $(tem)
;Removed MAX3 06/18/96 set-mul tem = $(i2), 100
;Removed MAX3 06/18/96 set-sub DPOther = $(DPOther), $(tem)
;Removed MAX3 06/18/96 endif
set-div i2 = $(DPOther1), 100 ;Added MAX3 06/18/96
ifint $(i1) == $(i2) ;Added MAX3 06/18/96
shell $(!SubroutineInf) SetupMessage $(!STF_LANGUAGE) NONFATAL "This interrupt setting is in conflict with the other DCA SDLC board." ;Added MAX3 06/18/96
ui pop 1 ;Added MAX3 06/18/96
goto RefreshDlg ;Added MAX3 06/18/96
endif ;Added MAX3 06/18/96
set-mul tem = $(i2), 100 ;Added MAX3 06/18/96
set-sub DPOther1 = $(DPOther1), $(tem);Added MAX3 06/18/96
;Added MAX3 06/18/96
set-div i2 = $(DPOther2), 100 ;Added MAX3 06/18/96
ifint $(i1) == $(i2) ;Added MAX3 06/18/96
shell $(!SubroutineInf) SetupMessage $(!STF_LANGUAGE) NONFATAL "This interrupt setting is in conflict with the other DCA SDLC board." ;Added MAX3 06/18/96
ui pop 1 ;Added MAX3 06/18/96
goto RefreshDlg ;Added MAX3 06/18/96
endif ;Added MAX3 06/18/96
set-mul tem = $(i2), 100 ;Added MAX3 06/18/96
set-sub DPOther2 = $(DPOther2), $(tem);Added MAX3 06/18/96
;Added MAX3 06/18/96
set-mul tem = $(i1), 100 ;Added MAX3 06/18/96
set-sub DPThis = $(DPThis), $(tem) ;Added MAX3 06/18/96
;
; Check the I/O address
;
set-div i1 = $(DPThis), 10
;Removed MAX3 06/18/96 set-div i2 = $(DPOther), 10
;Removed MAX3 06/18/96 ifint $(i1) == $(i2)
;Removed MAX3 06/18/96 shell $(!SubroutineInf) SetupMessage $(!STF_LANGUAGE) NONFATAL "This I/O address setting is in conflict with the other DCA SDLC board.";Added MAX3 06/18/96
;Removed MAX3 06/18/96 ui pop 1
;Removed MAX3 06/18/96 goto RefreshDlg
;Removed MAX3 06/18/96 else
;Removed MAX3 06/18/96 set-mul tem = $(i1), 10
;Removed MAX3 06/18/96 set-sub DPThis = $(DPThis), $(tem)
;Removed MAX3 06/18/96 set-mul tem = $(i2), 10
;Removed MAX3 06/18/96 set-sub DPOther = $(DPOther), $(tem)
;Removed MAX3 06/18/96 endif
set-div i2 = $(DPOther1), 10 ;Added MAX3 06/18/96
ifint $(i1) == $(i2) ;Added MAX3 06/18/96
shell $(!SubroutineInf) SetupMessage $(!STF_LANGUAGE) NONFATAL "This I/O address setting is in conflict with the other DCA SDLC board.";Added MAX3 06/18/96
ui pop 1 ;Added MAX3 06/18/96
goto RefreshDlg ;Added MAX3 06/18/96
endif ;Added MAX3 06/18/96
set-mul tem = $(i2), 10 ;Added MAX3 06/18/96
set-sub DPOther1 = $(DPOther1), $(tem);Added MAX3 06/18/96
;Added MAX3 06/18/96
set-div i2 = $(DPOther2), 10 ;Added MAX3 06/18/96
ifint $(i1) == $(i2) ;Added MAX3 06/18/96
shell $(!SubroutineInf) SetupMessage $(!STF_LANGUAGE) NONFATAL "This I/O address setting is in conflict with the other DCA SDLC board.";Added MAX3 06/18/96
ui pop 1 ;Added MAX3 06/18/96
goto RefreshDlg ;Added MAX3 06/18/96
endif ;Added MAX3 06/18/96
set-mul tem = $(i2), 10 ;Added MAX3 06/18/96
set-sub DPOther2 = $(DPOther2), $(tem);Added MAX3 06/18/96
;Added MAX3 06/18/96
set-mul tem = $(i1), 10 ;Added MAX3 06/18/96
set-sub DPThis = $(DPThis), $(tem) ;Added MAX3 06/18/96
;
; Check the DMA
;
set-div i1 = $(DPThis), 1
;Removed MAX3 06/18/96 set-div i2 = $(DPOther), 1
;Removed MAX3 06/18/96 ifint $(i1) == $(i2)
;Removed MAX3 06/18/96 ifint $(i1) > 0
;Removed MAX3 06/18/96 shell $(!SubroutineInf) SetupMessage $(!STF_LANGUAGE) NONFATAL "This DMA channel setting is in conflict with the other DCA SDLC board.";Added MAX3 06/18/96
;Removed MAX3 06/18/96 ui pop 1
;Removed MAX3 06/18/96 goto RefreshDlg
;Removed MAX3 06/18/96 endif
;Removed MAX3 06/18/96 endif
set-div i2 = $(DPOther1), 1 ;Added MAX3 06/18/96
ifint $(i1) == $(i2) ;Added MAX3 06/18/96
ifint $(i1) > 0 ;Added MAX3 06/18/96
shell $(!SubroutineInf) SetupMessage $(!STF_LANGUAGE) NONFATAL "This DMA channel setting is in conflict with the other DCA SDLC board.";Added MAX3 06/18/96
ui pop 1 ;Added MAX3 06/18/96
goto RefreshDlg ;Added MAX3 06/18/96
endif
endif ;Added MAX3 06/18/96
;Added MAX3 06/18/96
set-div i2 = $(DPOther2), 1 ;Added MAX3 06/18/96
ifint $(i1) == $(i2) ;Added MAX3 06/18/96
ifint $(i1) > 0 ;Added MAX3 06/18/96
shell $(!SubroutineInf) SetupMessage $(!STF_LANGUAGE) NONFATAL "This DMA channel setting is in conflict with the other DCA SDLC board.";Added MAX3 06/18/96
ui pop 1 ;Added MAX3 06/18/96
goto RefreshDlg ;Added MAX3 06/18/96
endif
endif ;Added MAX3 06/18/96
set LineType = *( {0,2,1,1}, *( $(RadioOut), 1 ) )
ifstr(i) *( $(RadioOut), 1 ) == "4"
set FRadio4 = $(!True)
else
set FRadio4 = $(!False)
endif
ifstr(i) *( $(CheckItemsOut), 1 ) == "OFF"
set Carrier = 0
else
set Carrier = 1
endif
;
; Check title against those configured for other link services
;
set TmpTitle = *( $(EditTextOut), 1 )
ifstr(i) $(TmpTitle) == ""
shell $(!SubroutineInf) SetupMessage $(!STF_LANGUAGE) NONFATAL +
"Please enter at least one character for the link service title."
ui pop 1
goto RefreshDlg
endif
set TmpFlag = $(!False)
ForListDo $(!LinkServiceList)
ifstr(i) $(TmpTitle) == *( $($), 2 )
set TmpSvcName = *( $($), 1 )
ifstr(i) $(ServiceName) != $(TmpSvcName)
set TmpFlag = $(!True)
endif
endif
EndForListDo
ifstr(i) $(TmpFlag) == $(!False)
set ServiceTitle = *( $(EditTextOut), 1 )
else
shell $(!SubroutineInf) SetupMessage $(!STF_LANGUAGE) NONFATAL +
"The title """$(TmpTitle)""" is already in use by link service "$(TmpSvcName)"."
ui pop 1
goto RefreshDlg
endif
ifstr(i) $(DriverIndex) != $(SvDriverIndex)
set Changes = 1
endif
ifstr(i) $(LineType) != $(SvLineType)
set Changes = 1
endif
ifstr(i) $(Carrier) != $(SvCarrier)
set Changes = 1
endif
ifstr(i) $(FRadio4) != $(SvFRadio4)
set Changes = 1
endif
set Status = STATUS_SUCCESSFUL
;
; Write the new driver params and ls type to the registry
;
OpenRegKey $(!REG_H_LOCAL), "", "SYSTEM\CurrentControlSet\Services\DCASYNC\Parameters\ExtraParameters", $(!REG_KEY_READWRITE), KeyDriver
ifstr(i) $(KeyDriver) == $(KeyNull)
set ErrMesg = "Can't Find Device Driver Service Entry."
set ErrProc = "DoSDLCLSConfig"
set ErrFunc = "OpenRegKey"
goto fatal_registry
endif
ifstr(i) $(ServiceName) == $(DCASYNCls1)
SetRegValue $(KeyDriver) { "DCAISCAConfigData1", $(NoTitle), $(!REG_VT_DWORD), $(DriverParams) }
goto ConfigLS090
endif
ifstr(i) $(ServiceName) == $(DCASYNCls2)
SetRegValue $(KeyDriver) { "DCAISCAConfigData2", $(NoTitle), $(!REG_VT_DWORD), $(DriverParams) }
goto ConfigLS090
endif
ifstr(i) $(ServiceName) == $(DCASYNCls3) ;Added MAX3 06/18/96
SetRegValue $(KeyDriver) { "DCAISCAConfigData3", $(NoTitle), $(!REG_VT_DWORD), $(DriverParams) };Added MAX3 06/18/96
goto ConfigLS090 ;Added MAX3 06/18/96
endif ;Added MAX3 06/18/96
ifstr(i) $(DCASYNCls1) == ""
SetRegValue $(KeyDriver) { "DCAISCAConfigData1", $(NoTitle), $(!REG_VT_DWORD), $(DriverParams) }
SetRegValue $(KeyDriver) { "Data1LS", $(NoTitle), $(!REG_VT_SZ), $(ServiceName) }
goto ConfigLS090
endif ;Added MAX3 06/18/96
ifstr(i) $(DCASYNCls2) == "" ;Added MAX3 06/18/96
;Removed MAX3 06/18/96 else
SetRegValue $(KeyDriver) { "DCAISCAConfigData2", $(NoTitle), $(!REG_VT_DWORD), $(DriverParams) }
SetRegValue $(KeyDriver) { "Data2LS", $(NoTitle), $(!REG_VT_SZ), $(ServiceName) }
goto ConfigLS090
endif
ifstr(i) $(DCASYNCls3) == "" ;Added MAX3 06/18/96
SetRegValue $(KeyDriver) { "DCAISCAConfigData3", $(NoTitle), $(!REG_VT_DWORD), $(DriverParams) };Added MAX3 06/18/96
SetRegValue $(KeyDriver) { "Data3LS", $(NoTitle), $(!REG_VT_SZ), $(ServiceName) };Added MAX3 06/18/96
goto ConfigLS090 ;Added MAX3 06/18/96
endif ;Added MAX3 06/18/96
ConfigLS090 =+
CloseRegKey $(KeyDriver)
endif
ui pop 1
Return $(Status), $(Changes), $(ServiceTitle), +
$(DriverIndex), $(LineType), $(Carrier), $(FRadio4)
;()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
;
; 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)
;()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
;
; 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
;
; $($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)
goto returnoptions
else
set Status = STATUS_NOLANGUAGE
goto finish_ReturnOptions
endif
;++++++++++++++++++++++++++++++++++++
;
; returnoptions:
; get the options from the Options and OptionsText sections and set appropriate
; return values.
;
;++++++++++++++++++++++++++++++++++++
returnoptions = +
set OptionList = ^(Options, 1)
set OptionTextList = ^(OptionsText$($0), 1)
set Status = STATUS_SUCCESSFUL
;++++++++++++++++++++++++++++++++++++
;
; finish_ReturnOptions:
;
;++++++++++++++++++++++++++++++++++++
finish_ReturnOptions = +
Return $(Status) $(OptionList) $(OptionTextList)
;()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
;
; ReturnSNAOptions
;
; DESCRIPTION: To return the option list supported by this INF and
; recognized by SNA Server. This script also returns
; the localized text list representing those options.
;
;
; INPUT: None
;
; OUTPUT: $($R0): STATUS: STATUS_SUCCESSFUL |
; STATUS_NOLANGUAGE
; STATUS_FAILED
;
; $($R1): Option List
; $($R2): Option Text List
;
;()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
[ReturnSNAOptions]
set Status = STATUS_FAILED
set SNAOptionList = {}
set SNAOptionTextList = {}
set LANG = $(!STF_LANGUAGE)
;
; Check if the language requested is supported
;
set LanguageList = ^(LanguagesSupported, 1)
ifcontains(i) $(LANG) in $(LanguageList)
goto returnSNAoptions
else
set Status = STATUS_NOLANGUAGE
goto finish_ReturnSNAOptions
endif
;++++++++++++++++++++++++++++++++++++
;
; returnSNAoptions:
; get the options from the Options and OptionsText sections and set appropriate
; return values.
;
;++++++++++++++++++++++++++++++++++++
returnSNAoptions = +
set SNAOptionList = ^(SNAOptions, 1)
set OptionList = ^(Options, 1)
set SNAOptionTextList = {}
set Status = STATUS_SUCCESSFUL
;
; Check that each of the SNA Options is a valid option and compile
; the list of text descriptions
;
ForListDo $(SNAOptionList)
ifcontains $($) in $(OptionList)
set SNAOptionTextList = >( $(SNAOptionTextList), +
#(OptionsText$(LANG), $($), 1) )
else
set Status = STATUS_FAILED
goto finish_ReturnSNAOptions
endif
; TODO: whenever language gets checked, they use an (i) check.
; the question is: are section names case sensitive or case
; insensitive. if they are case insensitive, might as well
; make this a case insensitive check. if they are case
; sensitive, report this as a bug.
; CODENAME: CASECHECK
EndForListDo
;++++++++++++++++++++++++++++++++++++
;
; finish_ReturnSNAOptions:
;
;++++++++++++++++++++++++++++++++++++
finish_ReturnSNAOptions = +
Return $(Status) $(SNAOptionList) $(SNAOptionTextList)
;()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
;
; ReturnSNAAdds
;
; DESCRIPTION: To return the list of dependencies and their text
; descriptions for a particular option.
;
;
; INPUT: $($0): Option used.
;
; OUTPUT: $($R0): STATUS: STATUS_SUCCESSFUL |
; STATUS_NOLANGUAGE
; STATUS_FAILED
;
; $($R1): Dependency List
; $($R2): Dependency Text List
;
;()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
[ReturnSNAAdds]
set Status = STATUS_FAILED
set SNAAddList = {}
set SNAAddTextList = {}
set LANG = $(!STF_LANGUAGE)
;
; Check if the language requested is supported
;
set LanguageList = ^(LanguagesSupported, 1)
ifcontains(i) $(LANG) in $(LanguageList)
goto returnSNAadds
else
set Status = STATUS_NOLANGUAGE
goto finish_ReturnSNAAdds
endif
;++++++++++++++++++++++++++++++++++++
;
; returnSNAadds:
; get the additional options for an option and compile their text list
;
;++++++++++++++++++++++++++++++++++++
returnSNAadds = +
set SNAAddList = ^(SNAOptionAdds$($0), 1)
set OptionList = ^(Options, 1)
set Status = STATUS_SUCCESSFUL
;
; Check that each of the SNA Dependencies is a valid option and compile
; the list of text descriptions
;
ForListDo $(SNAAddList)
ifcontains $($) in $(OptionList)
set SNAAddTextList = >( $(SNAAddTextList), +
#(OptionsText$(LANG), $($), 1) )
else
set Status = STATUS_FAILED
goto finish_ReturnSNAAdds
endif
; TODO: Check CODENAME: CASECHECK
EndForListDo
;++++++++++++++++++++++++++++++++++++
;
; finish_ReturnSNAAdds:
;
;++++++++++++++++++++++++++++++++++++
finish_ReturnSNAAdds = +
Return $(Status) $(SNAAddList) $(SNAAddTextList)
;************************************************************************
;************************************************************************
; SNA INVOCATION SECTION
;************************************************************************
;************************************************************************
;()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
;
; SnaInvocation
;
; DESCRIPTION: To perform operations requested by the SNA Setup
;
; INPUT: NTN_XXXXX and STF_XXXXX variables defined
;
; OUTPUT: $($R0): STATUS: STATUS_SUCCESSFUL |
; STATUS_NOLANGUAGE |
; STATUS_USERCANCEL |
; STATUS_FAILED
;
;()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
[SnaInvocation]
set LongOption = $(!NTN_InfOption)
set Changes = 0
set Instance = "xx"
Split-String $(LongOption) "_" OptionList
QueryListSize OptionSize $(OptionList)
ifint $(OptionSize) == 3
set Option = *( $(OptionList), 1 )
set Instance = *( $(OptionList), 3 )
else
set Option = $(LongOption)
endif
;
; These three variables describe the execution of the installation.
; AddCopy adds the files in the file list to the copy list
; DoCopy actually copies the files on the spot
;
ifstr(i) $(!NTN_InstallMode) == install
read-syms InstallSteps$(Option)
set !AddCopy = $(AddFilesToCopyList)
set !DoCopy = $(CopyFilesInCopyList)
ifstr(i) $(!NTN_InfType) == "LOCAL"
set !AddCopy = NO
set !DoCopy = NO
endif
Else
set !AddCopy = NO
set !DoCopy = NO
Endif
shell "" CommonSection $(Option) $(Instance)
set Status = $($R0)
set ReturnData = $($R1)
set Changes = $($R2)
Return $(Status) $(ReturnData) $(Changes)
;************************************************************************
;************************************************************************
; NCPA INVOCATION SECTION
;************************************************************************
;************************************************************************
;()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
;
; InstallOption
;
; DESCRIPTION: To perform operations requested by the NCPA
;
; INPUT: NTN_XXXXX and STF_XXXXX variables defined
;
; OUTPUT: $($R0): STATUS: STATUS_SUCCESSFUL |
; STATUS_NOLANGUAGE |
; STATUS_USERCANCEL |
; STATUS_FAILED
;
;()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
[InstallOption]
set LongOption = $(!NTN_InfOption)
set Changes = 0
set Instance = "xx"
set !SNA_ProductName = "SNA Server"
Split-String $(LongOption) "_" OptionList
QueryListSize OptionSize $(OptionList)
ifint $(OptionSize) == 3
set Option = *( $(OptionList), 1 )
set Instance = *( $(OptionList), 3 )
else
set Option = $(LongOption)
endif
;
; These three variables describe the execution of the installation.
; AddCopy adds the files in the file list to the copy list
; DoCopy actually copies the files on the spot
;
ifstr(i) $(!NTN_InstallMode) == "install"
read-syms InstallSteps$(Option)
set !AddCopy = YES
set !DoCopy = YES
Else
set !AddCopy = NO
set !DoCopy = NO
Endif
;
; Set SNA Root Directory before reading File Constants
;
OpenRegKey $(!REG_H_LOCAL), "", +
"Software\Microsoft\SNA Server\2.0\Setup", +
$(!REG_KEY_READ), KeySNAServices
ifstr(i) $(KeySNAServices) != {}
GetRegValue $(KeySNAServices) "RootDir" RootDirValue
ifstr(i) $(RootDirValue) != ""
set !SNARootDir = *( $(RootDirValue), 4 )
endif
endif
shell $(!UtilityInf) GetBusType
ifstr(i) $($R0) == STATUS_SUCCESSFUL
set !STF_BUSTYPE = $($R1)
else
set !STF_BUSTYPE = "ISA"
endif
ifstr(i) $(!NTN_InstallMode) != "install"
read-syms FileConstants
read-syms FileConstants$(Option)
OpenRegKey $(!REG_H_LOCAL), "", +
$(ProductRegBase)"\"$(ProductFullName)"\CurrentVersion", +
$(!REG_KEY_READWRITE), KeyServiceIndex
ifstr(i) $(KeyServiceIndex) == ""
set ErrMesg = "Can't Find This Product Instance."
set ErrProc = "InstallOption"
set ErrFunc = "OpenRegKey (1)"
goto fatal_registry
endif
GetRegValue $(KeyServiceIndex), "SNAVersion", SNAVersionInfo
set !SNAVersion = *( $(SNAVersionInfo), 4 )
CloseRegKey $(KeyServiceIndex)
;
; This is a Hack.
; Since the NCPA can (now) only configure and remove components, we'll
; assume that it's going to access them inside the SNA Server
; root directory and not in floppy like install would. Therefore,
; DriverDir = SNARootDir.
; At some future point in time, we might consider putting a path in the
; registry.
;
set !DriverDir = $(!SNARootDir)"\system\hwsetup\"
else
;
; This case shouldn't happen, but I honestly don't know how to deal
; with it when it does. I guess I can check if SNA Server is
; installed, and if it's not, tell the user that it must be installed
; before link support can be installed
;
set Hosed = "Probably"
endif
LoadLibrary "" $(DialogLibrary) !DLGHANDLE
shell "" CommonSection $(Option) $(Instance)
set Status = $($R0)
ifstr(i) $($R2) == 1
shell $(!SubroutineInf) SetupMessage $(!STF_LANGUAGE) "STATUS" +
"For the changed parameters to be noticed, you must stop and"$(!LF)+
"restart this link service with the "$(!SNA_ProductName)" Admin program."
else-ifstr(i) $($R2) == 2
shell $(!SubroutineInf) SetupMessage $(!STF_LANGUAGE) "STATUS" +
"You must reboot for the changed parameters to be noticed."
endif
FreeLibrary $(!DLGHANDLE)
Return $(Status) {} $(Changes)
fatal_registry = +
set Error = +
"Fatal Registry Error:"$(!LF)+
$(ErrMesg)$(!LF)+
"File: "$(ThisInf)$(!LF)+
"Procedure: "$(ErrProc)$(!LF)+
"Function: "$(ErrFunc)
shell $(!SubroutineInf) SetupMessage $(!STF_LANGUAGE) "FATAL" $(Error)
Return STATUS_FAILED
;************************************************************************
;************************************************************************
; COMMON SECTION
;************************************************************************
;************************************************************************
;()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
;
; CommonSection
;
; DESCRIPTION: To carry out the install/config/etc. operations
;
; INPUT: NTN_XXXXX and STF_XXXXX variables defined
; $($0): Option to be used
; $($1): Instance to be used
;
; OUTPUT: $($R0): STATUS: STATUS_SUCCESSFUL |
; STATUS_NOLANGUAGE |
; STATUS_EXISTS |
; STATUS_USERCANCEL |
; STATUS_FAILED
;
;()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
[CommonSection]
StartWait
set Option = $($0)
set Instance = $($1)
set Index = "CurrentVersion"
set RetData = {}
set Changes = 0
;
; Check if the language requested is supported
;
set LanguageList = ^(LanguagesSupported, 1)
ifcontains(i) $(!STF_LANGUAGE) in $(LanguageList)
goto languageexists
else
set Status = STATUS_NOLANGUAGE
goto end
endif
;++++++++++++++++++++++++++++++++++++
;
; languageexists:
;
;++++++++++++++++++++++++++++++++++++
languageexists = +
;
; Define some constants, read some variable sections, and set the date
;
StartWait
read-syms GeneralConstants
read-syms FileConstants
read-syms FileConstants$(!STF_LANGUAGE)
read-syms FileConstants$(Option)
read-syms FileConstants$(Option)_$(!STF_LANGUAGE)
install LoadSetupLibrary
detect date
install FreeSetupLibrary
SetHelpFile $(!DriverDir)$(ThisHlp) $(HlpMin) $(HlpMax)
LoadLibrary "" $(!DriverDir)$(ThisSrl) !IHVDLGHANDLE
ifstr(i) $(!IHVDLGHANDLE) == ""
goto set_status_failed
endif
set to = Begin
set from = Begin
;
; Assume that all is well as we begin
;
set CommonStatus = STATUS_SUCCESSFUL
EndWait
;++++++++++++++++++++++++++++++++++++
;
; Begin:
; 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 = +
ifstr(i) $(!NTN_InstallMode) == deinstall
set StartLabel = remove_component
else-ifstr(i) $(!NTN_InstallMode) == fullremove
set StartLabel = remove_component
else-ifstr(i) $(!NTN_InstallMode) == snaremove
set StartLabel = remove_component
else-ifstr(i) $(!NTN_InstallMode) == getbindings
set StartLabel = getbind_component
else-ifstr(i) $(!NTN_InstallMode) == bind
set StartLabel = bind_component
else-ifstr(i) $(!NTN_InstallMode) == configure
set StartLabel = config_component
else ;; install
set StartLabel = install_component
endif
goto set_defaults_$(Option)
;++++++++++++++++++++++++++++++++++++
;
; set_defaults_DCASDLCLS
;
;++++++++++++++++++++++++++++++++++++
set_defaults_DCASDLCLS = +
set ServiceName = $(Option)
set ServiceTitle = $(ProductTitle)
set ServiceDesc = $(ProductDesc)
set DriverIndex = "03" ; DCA SDLC 1
set LineType = "0" ; Leased
set Carrier = "0" ; Not constant
set Radio4Flag = "0" ; Manual dial type
goto finish_defaults
;++++++++++++++++++++++++++++++++++++
;
; set_defaults_DCASDLCDD
;
;++++++++++++++++++++++++++++++++++++
set_defaults_DCASDLCDD = +
set ServiceName = $(Option)
set ServiceTitle = $(ProductTitle)
set ServiceDesc = $(ProductDesc)
goto finish_defaults
;++++++++++++++++++++++++++++++++++++
;
; finish_defaults:
;
;++++++++++++++++++++++++++++++++++++
finish_defaults = +
set from = end
set to = end
goto $(StartLabel)
;++++++++++++++++++++++++++++++++++++
;
; install_component:
;
;++++++++++++++++++++++++++++++++++++
install_component = +
;
; First, check if there are any existing services of this product
; already in the registry.
;
shell $(!UtilityInf) FindSNAProductServices, +
$(ProductRegBase), $(ProductFullName)
ifint $($ShellCode) != 0
goto ShellCodeError
endif
set Status = $($R0)
set SvcIndexList = $($R1)
set SvcNameList = $($R2)
set SvcTitleList = $($R3)
set SvcDescList = $($R4)
ifstr(i) $(Status) == STATUS_FAILED
set ErrMesg = "Can't Find This Product."
set ErrProc = "install_component"
set ErrFunc = "FindSNAProductServices"
goto fatal_registry
endif
;
; if there are no services of this product installed, it could mean
; that the product doesn't exist. Either way, we are installing service
; index "01" and on to modify params.
;
QueryListSize SvcIndexListSize $(SvcIndexList)
set ProductExists = $(TRUE)
ifint $(SvcIndexListSize) == 0
ifstr(i) $(Status) == STATUS_NOSUCHPRODUCT
set ProductExists = $(FALSE)
endif
set Instance = "01"
goto install_nextstep
endif
;
; If there is one instance of this service and this product is an
; exclusive install, return with the appropriate status.
;
ifint $(ProductExclusive) != $(FALSE)
ifint $(SvcIndexListSize) == 1
set Status = STATUS_EXISTS
ifint $(ProductExclusive) == $(NOTIFY)
shell $(!SubroutineInf) SetupMessage $(!STF_LANGUAGE) NONFATAL +
"This product is already installed and"$(!LF)+
"can only be installed once."
endif
goto end
endif
endif
shell $(!UtilityInf) FindNextAvailableIndex $(SvcIndexList)
ifint $($ShellCode) != 0
goto ShellCodeError
endif
set Status = $($R0)
set Instance = $($R1)
ifstr(i) $(Status) != STATUS_SUCCESSFUL
goto end
endif
;++++++++++++++++++++++++++++++++++++
;
; install_nextstep:
; we have a service index and are ready to start the
; process of installing an instance.
;
;++++++++++++++++++++++++++++++++++++
install_nextstep = +
read-syms FileConstants$(Option)
set TmpStr = ""
ifint $(Instance) < 10
split-string $(Instance) "0" TmpList
QueryListSize TmpSize $(TmpList)
ifstr(i) *($(TmpList),1) != "0"
set TmpStr = $(TmpStr)*($(TmpList),1)
endif
ifint $(TmpSize) > 1
set TmpStr = $(TmpStr)*($(TmpList),2)
endif
else
set TmpStr = $(Instance)
endif
set ServiceTitle = $(ProductTitle)" #"$(TmpStr)
ifint $(ProductServiceQuery) == $(TRUE)
shell $(!UtilityInf) EnterServiceName, +
$(ProductTitle), +
$(ProductServicePrefix), +
$(Instance)
ifint $($ShellCode) != 0
goto ShellCodeError
endif
set Status = $($R0)
set ServiceName = $($R1)
ifstr(i) $(Status) != STATUS_SUCCESSFUL
goto end
endif
else
set ServiceName = $(ProductServicePrefix)
endif
goto modify_params
;++++++++++++++++++++++++++++++++++++
;
; config_component:
; get the current values for all the parameters and prepare them for
; modify_params.
;
;++++++++++++++++++++++++++++++++++++
config_component = +
read-syms FileConstants$(Option)
;
; Try and open this product and see if it's even installed.
;
shell $(!UtilityInf) FindSNAProductServices $(ProductRegBase), +
$(ProductFullName)
ifint $($ShellCode) != 0
goto ShellCodeError
endif
set Status = $($R0)
set SvcIndexList = $($R1)
set SvcNameList = $($R2)
set SvcTitleList = $($R3)
set SvcDescList = $($R4)
ifstr(i) $(Status) != STATUS_SUCCESSFUL
set ErrMesg = "Can't Find This Product."
set ErrProc = "config_component"
set ErrFunc = "FindSNAProductServices"
goto fatal_registry
endif
shell $(!UtilityInf) GrepUniqueServiceInfo "Index", +
$(Instance), +
$(SvcIndexList), +
$(SvcNameList),+
$(SvcTitleList),+
$(SvcDescList)
ifint $($ShellCode) != 0
goto ShellCodeError
endif
set Status = $($R0)
set ServiceIndex = $($R1)
set ServiceName = $($R2)
set ServiceTitle = $($R3)
set ServiceDesc = $($R4)
ifstr(i) $(Status) != STATUS_SUCCESSFUL
goto end
endif
;++++++++++++++++++++++++++++++++++++
;
; read_params:
; read the parameters from the SCA and assign them to the appropriate
; variables.
;
;++++++++++++++++++++++++++++++++++++
read_params = +
;
; Find the entry in the Service Control Architecture and get a handle
; to the Parameters Key and to the ExtraParameters key if one exists.
;
shell $(!UtilityInf) FindSNAService, $(ServiceName)
ifint $($ShellCode) != 0
goto ShellCodeError
endif
set Status = $($R0)
set KeyService = $($R1)
set KeyParameters = $($R2)
set KeyExtraParams = $($R3)
ifstr(i) $(Status) != STATUS_SUCCESSFUL
CloseRegKey $(KeyService)
CloseRegKey $(KeyParameters)
CloseRegKey $(KeyExtraParams)
set ErrMesg = "Can't Find Service Entry For Instance"$(ServiceName)
set ErrProc = "read_params"
set ErrFunc = "FindSNAService"
goto fatal_registry
endif
set OldVersionExisted = $(TRUE)
set ValueName = ""
set ValueData = ""
set ValueStr = ""
set ValueList = {}
;
; Get the old values from the parameters key
;
EnumRegValue $(KeyParameters) ValueList
;
; if there's an ExtraParameters subkey, add those values to the list
;
ifstr(i) $(KeyExtraParams) != $(KeyNull)
EnumRegValue $(KeyExtraParams) ExtraValueList
ForListDo $(ExtraValueList)
set ValueList = >( $(ValueList), $($) )
EndForListDo
endif
ForListDo $(ValueList)
set ValueItem = $($)
set ValueName = *($(ValueItem), 1)
set ValueData = *($(ValueItem), 4)
goto assign_value_$(Option)
;++++++++++++++++++++++++++++++++++++
;
; assign_value_DCASDLCLS:
;
;++++++++++++++++++++++++++++++++++++
assign_value_DCASDLCLS = +
ifstr(i) $(ValueName) == "DriverNumber"
set DriverNumber = $(ValueData)
else-ifstr(i) $(ValueName) == "DeviceName"
set DeviceName = $(ValueData)
set DriverIndex = "03"
set !BBDeviceName = $(ValueData)
ifstr(i) $(DeviceName) == "DCADL$03"
set DriverIndex = "03"
else-ifstr(i) $(DeviceName) == "DCADL$04"
set DriverIndex = "04"
else-ifstr(i) $(DeviceName) == "DCADL$05"
set DriverIndex = "05"
else-ifstr(i) $(DeviceName) == "DCADL$06"
set DriverIndex = "06"
endif
else-ifstr(i) $(ValueName) == "LineType"
set LineType = $(ValueData)
else-ifstr(i) $(ValueName) == "Carrier"
set Carrier = $(ValueData)
else-ifstr(i) $(ValueName) == "Radio4Flag"
ifstr(i) $(ValueData) == "1"
set Radio4Flag = $(!True)
else
set Radio4Flag = $(!False)
endif
endif
goto finish_assign_value
;++++++++++++++++++++++++++++++++++++
;
; assign_value_DCASDLCDD:
;
;++++++++++++++++++++++++++++++++++++
assign_value_DCASDLCDD = +
goto finish_assign_value
;++++++++++++++++++++++++++++++++++++
;
; finish_assign_value:
;
;++++++++++++++++++++++++++++++++++++
finish_assign_value = +
EndForListDo
goto assign_extra_$(Option)
;++++++++++++++++++++++++++++++++++++
;
; assign_extra_DCASDLCLS:
;
;++++++++++++++++++++++++++++++++++++
assign_extra_DCASDLCLS = +
goto finish_assign_extra
;++++++++++++++++++++++++++++++++++++
;
; assign_extra_DCASDLCDD:
;
;++++++++++++++++++++++++++++++++++++
assign_extra_DCASDLCDD = +
goto finish_assign_extra
;++++++++++++++++++++++++++++++++++++
;
; finish_assign_extra:
;
;++++++++++++++++++++++++++++++++++++
finish_assign_extra = +
goto modify_params
;++++++++++++++++++++++++++++++++++++
;
; modify_params:
; allow the user to bang away at the parameters until they are happy
;
;++++++++++++++++++++++++++++++++++++
modify_params = +
set from = modify_params
goto modify_params_$(Option)
;++++++++++++++++++++++++++++++++++++
;
; modify_params_DCASDLCLS:
;
;++++++++++++++++++++++++++++++++++++
modify_params_DCASDLCLS = +
shell "" DoSDLCLSConfig $(ServiceName), +
$(ServiceTitle), +
$(DriverIndex), +
$(LineType), +
$(Carrier), +
$(Radio4Flag)
ifint $($ShellCode) != 0
goto ShellCodeError
endif
set Status = $($R0)
ifstr(i) $(Status) != STATUS_SUCCESSFUL
goto end
else
set Changes = $($R1)
set ServiceTitle = $($R2)
set DriverIndex = $($R3)
set LineType = $($R4)
set Carrier = $($R5)
set Radio4Flag = $($R6)
set DriverNumber = $(DriverIndex)
set DeviceName = "DCADL$"$(DriverIndex)
endif
goto finish_modify_params
;++++++++++++++++++++++++++++++++++++
;
; modify_params_DCASDLCDD:
;
;++++++++++++++++++++++++++++++++++++
modify_params_DCASDLCDD = +
goto finish_modify_params
;++++++++++++++++++++++++++++++++++++
;
; finish_modify_params:
;
;++++++++++++++++++++++++++++++++++++
finish_modify_params = +
goto adjust_params
;++++++++++++++++++++++++++++++++++++
;
; adjust_params:
; if there is an old version, the registry keys and values exist and all we
; have to do is modify them. otherwise, if we're installing from scratch,
; we have to create those keys and values.
;
;++++++++++++++++++++++++++++++++++++
adjust_params = +
ifint $(OldVersionExisted) == $(TRUE)
ifstr(i) $(!NTN_InstallMode) == "configure"
goto write_params
endif
endif
;++++++++++++++++++++++++++++++++++++
;
; create_regvals:
; create the necessary parts of the registry
;
;++++++++++++++++++++++++++++++++++++
create_regvals = +
Shell $(!UtilityInf) +
CreateSNAService, +
$(ServiceName), +
$(SNAServiceType), +
$(ProductImagePath), +
$(ProductDepends), +
$(ProductParams), +
$(ProductExtraParams), +
$(!SNARootDir)"\System\"$(ProductImagePath), +
7
ifint $($ShellCode) != 0
goto ShellCodeError
endif
set Status = $($R0)
set KeyService = $($R1)
set KeyParameters = $($R2)
set KeyExtraParams = $($R3)
ifstr(i) $(Status) != STATUS_SUCCESSFUL
CloseRegKey $(KeyService)
CloseRegKey $(KeyParameters)
CloseRegKey $(KeyExtraParams)
set ErrMesg = "Can't Create Service Entry For Instance."
set ErrProc = "create_regvals"
set ErrFunc = "CreateSNAService"
goto fatal_registry
endif
Shell $(!UtilityInf) CreateSNARegEntry, $(ProductRegBase), +
$(ProductFullName)
ifint $($ShellCode) != 0
goto ShellCodeError
endif
set Status = $($R0)
set KeyProductBase = $($R1)
set KeyProduct = $($R2)
set KeyServiceIndex = $($R3)
set KeyNetRules = $($R4)
ifstr(i) $(Status) != STATUS_SUCCESSFUL
CloseRegKey $(KeyProductBase)
CloseRegKey $(KeyProduct)
CloseRegKey $(KeyServiceIndex)
CloseRegKey $(KeyNetRules)
set ErrMesg = "Can't Create Product Entry For Instance."
set ErrProc = "create_regvals"
set ErrFunc = "CreateSNARegEntry"
goto fatal_registry
endif
shell $(!UtilityInf) AddValueList, $(KeyServiceIndex), +
{ { ServiceName , $(NoTitle), $(!REG_VT_SZ), $(ServiceName) }, +
{ InfName , $(NoTitle), $(!REG_VT_SZ), $(FullInfName) }, +
{ SoftwareType, $(NoTitle), $(!REG_VT_SZ), $(SoftwareType) }, +
{ SNAVersion , $(NoTitle), $(!REG_VT_SZ), $(!SNAVersion) } }
set NROption = $(Option)"_"$(Instance)
set NRTitle = $(NetRulesTitle)
set NRClass = { $(NetRulesClass) }
set NRBindForm = $(ServiceName)" yes yes container"
set NRUse = $(NetRulesUse)
set NRBindable = { $(NetRulesBindable) }
set NetRulesValues = { +
{ InfName , $(NoTitle), $(!REG_VT_SZ), $(FullInfName) }, +
{ InfOption , $(NoTitle), $(!REG_VT_SZ), $(NROption) }, +
{ title , $(NoTitle), $(!REG_VT_SZ), $(NRTitle) }, +
{ use , $(NoTitle), $(!REG_VT_SZ), $(NRuse) }, +
{ bindform , $(NoTitle), $(!REG_VT_SZ), $(NRBindForm) }, +
{ type , $(NoTitle), $(!REG_VT_SZ), $(NetRulesType) }, +
}
;
; Here we enumerate all installed link services of this type, looking
; for the "class" and "bindable" regvals. We only write these values
; if we have no other installed links of this type, or we don't find
; these two values among the links we examine.
;
; Enum on KeyProductBase, SplitString each on "_", compare first string
; with ProductName, if match look in CurrentVersion\NetRules for these
; two values.
;
set Found = $(!False)
EnumRegKey $(KeyProductBase) TmpList
ForListDo $(TmpList)
set TmpName = *( $($), 1 )
Split-String $(TmpName) "_" TmpSplit
ifstr(i) *( $(TmpSplit), 1 ) == $(ProductName)
OpenRegKey $(KeyProductBase), "", +
$(TmpName)"\CurrentVersion\NetRules", +
$(!REG_KEY_READ), TmpNRKey
ifstr(i) $(TmpNRKey) != $(KeyNull)
EnumRegValue $(TmpNRKey) TmpNRList
ForListDo $(TmpNRList)
ifstr(i) *($($),1) == "class"
set Found = $(!True)
endif
EndForListDo
CloseRegKey $(TmpNRKey)
endif
endif
EndForListDo
set TmpList = {}
set TmpName = {}
set TmpSplit = {}
set TmpNRList = {}
ifstr(i) $(Found) == $(!False)
set NetRulesValues = >( $(NetRulesValues), +
{ class, $(NoTitle), $(!REG_VT_MULTI_SZ), $(NRClass) } )
set NetRulesValues = >( $(NetRulesValues), +
{ bindable, $(NoTitle), $(!REG_VT_MULTI_SZ), $(NRBindable) } )
endif
shell $(!UtilityInf) AddValueList $(KeyNetRules) $(NetRulesValues)
ifint $(ProductExists) == $(FALSE)
read-syms ProgressCopyVars
install InstallRemove
endif
goto write_params
;++++++++++++++++++++++++++++++++++++
;
; write_params:
;
;++++++++++++++++++++++++++++++++++++
write_params = +
ifstr $(KeyProductBase) == $(KeyNull)
shell $(!UtilityInf) FindSNARegEntry, +
$(ProductRegBase), +
$(ProductFullName)
ifint $($ShellCode) != 0
goto ShellCodeError
endif
set Status = $($R0)
set KeyProductBase = $($R1)
set KeyProduct = $($R2)
set KeyServiceIndex = $($R3)
set KeyNetRules = $($R4)
ifstr(i) $(Status) != STATUS_SUCCESSFUL
CloseRegKey $(KeyProductBase)
CloseRegKey $(KeyProduct)
CloseRegKey $(KeyServiceIndex)
CloseRegKey $(KeyNetRules)
set ErrMesg = "Can't Find Product Entry For Instance."
set ErrProc = "write_params"
set ErrFunc = "FindSNARegEntry"
goto fatal_registry
endif
endif
ifstr $(KeyService) == $(KeyNull)
shell $(!UtilityInf) FindSNAService, $(ServiceName)
ifint $($ShellCode) != 0
goto ShellCodeError
endif
set Status = $($R0)
set KeyService = $($R1)
set KeyParameters = $($R2)
set KeyExtraParams = $($R3)
ifstr(i) $(Status) != STATUS_SUCCESSFUL
CloseRegKey $(KeyService)
CloseRegKey $(KeyParameters)
CloseRegKey $(KeyExtraParams)
set ErrMesg = "Can't Find Service Entry For Instance."
set ErrProc = "write_params"
set ErrFunc = "FindSNAService"
goto fatal_registry
endif
endif
goto write_params_$(Option)
;++++++++++++++++++++++++++++++++++++
;
; write_params_DCASDLCLS:
;
;++++++++++++++++++++++++++++++++++++
write_params_DCASDLCLS = +
ifstr(i) $(Radio4Flag) == $(!True)
set RadioVal = "1"
else
set RadioVal = "0"
endif
set FullOption = $(Option)"_"$(Instance)
set ProductParams = { +
{ IHVDLL , $(NoTitle), $(!REG_VT_SZ), $(ProductDLL) },+
{ InfName , $(NoTitle), $(!REG_VT_SZ), $(FullInfName) },+
{ InfOption , $(NoTitle), $(!REG_VT_SZ), $(FullOption) },+
{ DriverName , $(NoTitle), $(!REG_VT_SZ), "DCASYNC" } +
}
set ProductExtraParams = { +
{ DeviceName , $(NoTitle), $(!REG_VT_SZ), $(DeviceName) }, +
{ LineType , $(NoTitle), $(!REG_VT_DWORD), $(LineType) }, +
{ Carrier , $(NoTitle), $(!REG_VT_DWORD), $(Carrier) }, +
{ Radio4Flag , $(NoTitle), $(!REG_VT_DWORD), $(RadioVal) } +
}
goto finish_write_params
;++++++++++++++++++++++++++++++++++++
;
; write_params_DCASDLCDD:
;
;++++++++++++++++++++++++++++++++++++
write_params_DCASDLCDD = +
set FullOption = $(Option)"_"$(Instance)
set ProductParams = { +
{ InfName , $(NoTitle), $(!REG_VT_SZ) , $(FullInfName) },+
{ InfOption , $(NoTitle), $(!REG_VT_SZ) , $(FullOption) } +
}
set ProductExtraParams = {}
goto finish_write_params
;++++++++++++++++++++++++++++++++++++
;
; finish_write_params:
;
;++++++++++++++++++++++++++++++++++++
finish_write_params = +
shell $(!UtilityInf) AddValueList, $(KeyServiceIndex), +
{ +
{ Title , $(NoTitle), $(!REG_VT_SZ), $(ServiceTitle) }, +
{ Description, $(NoTitle), $(!REG_VT_SZ), $(ServiceDesc) } +
}
ifint $($ShellCode) != 0
goto ShellCodeError
endif
shell $(!UtilityInf) AddValueList, $(KeyParameters), +
{ +
{ Title , $(NoTitle), $(!REG_VT_SZ), $(ServiceTitle) }, +
{ Description, $(NoTitle), $(!REG_VT_SZ), $(ServiceDesc) } +
}
ifint $($ShellCode) != 0
goto ShellCodeError
endif
ifstr(i) $(ProductParams) != {}
shell $(!UtilityInf) AddValueList, $(KeyParameters), +
$(ProductParams)
ifint $($ShellCode) != 0
goto ShellCodeError
endif
endif
ifstr(i) $(ProductExtraParams) != {}
shell $(!UtilityInf) AddValueList, $(KeyExtraParams), +
$(ProductExtraParams)
ifint $($ShellCode) != 0
goto ShellCodeError
endif
endif
set RetData = >( $(RetData), { $(Instance), +
$(ServiceName), +
$(ServiceTitle), +
$(ServiceDesc), +
$(!NTN_InstallMode), +
} )
CloseRegKey $(KeyProductBase)
CloseRegKey $(KeyProduct)
CloseRegKey $(KeyServiceIndex)
CloseRegKey $(KeyNetRules)
CloseRegKey $(KeyService)
CloseRegKey $(KeyParameters)
CloseRegKey $(KeyExtraParams)
goto successful
;++++++++++++++++++++++++++++++++++++
;
; getbind_component:
;
;++++++++++++++++++++++++++++++++++++
getbind_component = +
goto getbind_$(Option)
;++++++++++++++++++++++++++++++++++++
;
; getbind_DCASDLCLS:
;
;++++++++++++++++++++++++++++++++++++
getbind_DCASDLCLS = +
set RetData = { {"01", "DCASDLCDD", "", "", "getbindings"} }
goto finish_getbind_component
;++++++++++++++++++++++++++++++++++++
;
; getbind_DCASDLCDD:
;
;++++++++++++++++++++++++++++++++++++
getbind_DCASDLCDD = +
goto finish_getbind_component
;++++++++++++++++++++++++++++++++++++
;
; finish_getbind_component:
;
;++++++++++++++++++++++++++++++++++++
finish_getbind_component = +
goto successful
;++++++++++++++++++++++++++++++++++++
;
; bind_component:
;
;++++++++++++++++++++++++++++++++++++
bind_component = +
set Error = "Sorry. No Bindings Feature Yet."
goto fatal_msg
;++++++++++++++++++++++++++++++++++++
;
; remove_component:
;
;++++++++++++++++++++++++++++++++++++
remove_component = +
read-syms FileConstants$(Option)
;
; we need to set ourselved up with these variables for later use
;
shell $(!UtilityInf) FindSNAProductServices +
$(ProductRegBase), +
$(ProductFullName)
ifint $($ShellCode) != 0
goto ShellCodeError
endif
set Status = $($R0)
set SvcIndexList = $($R1)
set SvcNameList = $($R2)
set SvcTitleList = $($R3)
set SvcDescList = $($R4)
ifstr(i) $(Status) == STATUS_NOSUCHPRODUCT
goto successful
endif
ifstr(i) $(Status) == STATUS_FAILED
set ErrMesg = "Can't Open Product Entry In Registry."
set ErrProc = "remove_component"
set ErrFunc = "FindSNAProductServices"
goto fatal_registry
endif
;
; This will be a counter that will be used to decide whether or not
; the product key should be removed at the end
;
QueryListSize SvcIndexListSize $(SvcIndexList)
ifstr(i) $(!NTN_InstallMode) == "fullremove"
set RemoveMode = "Full"
goto remove_all_pieces
endif
set RemoveMode = "Partial"
ifstr(i) $(!NTN_InstallMode) == "snaremove"
; Hack. Here we search for bindings and remove only if nothing
; else needs this piece.
ifstr(i) $(Option) == "DCASDLCDD"
set PN = #( FileConstantsDCASDLCLS, ProductName, 1)
set PV = #( FileConstantsDCASDLCLS, ProductVersion, 1)
shell $(!UtilityInf) FindSNAProductServices $(ProductRegBase) +
$(PN)"_"$(PV)
set _Status = $($R0)
set _List = $($R1)
ifstr(i) $(_List) != {}
goto successful
endif
shell $(!UtilityInf) FindSNAProductServices $(ProductRegBase) +
"DCAX25LS_1.0"
set _Status = $($R0)
set _List = $($R1)
ifstr(i) $(_Status) == STATUS_FAILED
goto set_status_failed
endif
ifstr(i) $(_List) != {}
goto successful
endif
endif
endif
shell $(!UtilityInf) GrepUniqueServiceInfo "Index", +
$(Instance), +
$(SvcIndexList), +
$(SvcNameList), +
$(SvcTitleList), +
$(SvcDescList)
ifint $($ShellCode) != 0
goto ShellCodeError
endif
set Status = $($R0)
set RemoveIndex = $($R1)
set RemoveName = $($R2)
set RemoveTitle = $($R3)
set RemoveDesc = $($R4)
goto remove_one_piece
;++++++++++++++++++++++++++++++++++++
;
; remove_all_pieces:
;
;++++++++++++++++++++++++++++++++++++
remove_all_pieces = +
ForListDo $(SvcIndexList)
ifstr(i) $(KeyProductBase) != $(KeyNull)
CloseRegKey $(KeyProductBase)
endif
set RemoveIndex = $($)
shell $(!UtilityInf) GrepUniqueServiceInfo "Index", +
$(RemoveIndex), +
$(SvcIndexList), +
$(SvcNameList), +
$(SvcTitleList), +
$(SvcDescList)
ifint $($ShellCode) != 0
goto ShellCodeError
endif
set Status = $($R0)
set RemoveIndex = $($R1)
set RemoveName = $($R2)
set RemoveTitle = $($R3)
set RemoveDesc = $($R4)
ifstr(i) $(Status) != STATUS_SUCCESSFUL
goto end
endif
set TInstance = $(Instance)
set Instance = $(RemoveIndex)
read-syms FileConstants$(Option)
set Instance = $(TInstance)
goto remove_one_piece
;++++++++++++++++++++++++++++++++++++
;
; remove_next_piece:
;
;++++++++++++++++++++++++++++++++++++
remove_next_piece = +
EndForListDo
goto remove_product
;++++++++++++++++++++++++++++++++++++
;
; remove_one_piece:
;
;++++++++++++++++++++++++++++++++++++
remove_one_piece = +
shell $(!UtilityInf) FindSNARegEntry, $(ProductRegBase), +
$(ProductFullName)
ifint $($ShellCode) != 0
goto ShellCodeError
endif
set Status = $($R0)
set KeyProductBase = $($R1)
set KeyProduct = $($R2)
set KeyServiceIndex = $($R3)
set KeyNetRules = $($R4)
ifstr(i) $(Status) != STATUS_SUCCESSFUL
CloseRegKey $(KeyProductBase)
CloseRegKey $(KeyProduct)
CloseRegKey $(KeyProductVer)
CloseRegKey $(KeyNetRules)
set ErrMesg = "Can't Find Product Entry For Instance."
set ErrProc = "remove_one_piece"
set ErrFunc = "FindSNARegEntry"
goto fatal_registry
endif
;
; If we're coming in as the device driver, check to see if
; any other SNA components (i.e., other sync link services)
; are bound to it -- if so, don't remove the driver!
;
ifstr(i) $(Option) == "DCASDLCDD"
set Another = $(!False)
set KeySM = $(KeyNull)
OpenRegKey $(!REG_H_LOCAL) "" "Software\Microsoft" $(!REG_KEY_READ) KeySM
ifstr(i) $(KeySM) != $(KeyNull)
EnumRegKey $(KeySM) TmpList
ForListDo $(TmpList) ; look at every key under Software\Microsoft
ifstr(i) $(Another) == $(!False) ; skip the rest if we found one
set KeyCV = $(KeyNull)
OpenRegKey $(KeySM) "" *($($),1)"\CurrentVersion" $(!REG_KEY_READ) KeyCV
ifstr(i) $(KeyCV) != $(KeyNull)
set SnaVerValue = ""
GetRegValue $(KeyCV) "SNAVersion" SnaVerValue
ifstr(i) $(SnaVerValue) != "" ; it's an SNA component
set SWTypeValue = ""
GetRegValue $(KeyCV) "SoftwareType" SWTypeValue
ifstr(i) $(SWTypeValue) != "" ; it's an SNA component
ifstr(i) *($(SWTypeValue),4) == "service" ; link service
set SvcNameValue = ""
GetRegValue $(KeyCV) "ServiceName" SvcNameValue
ifstr(i) $(SvcNameValue) != ""
set LoopSvcName = *($(SvcNameValue),4)
ifstr(i) $(LoopSvcName) != $(ServiceName) ; REVIEW: must be link service svcname
ifstr(i) $(LoopSvcName) != "SnaServr"
; Now we know we're a link service and we're not the
; same one we're trying to remove. Let's see what
; we're bound to.
set KeyLnk = $(KeyNull)
OpenRegKey $(!REG_H_LOCAL) "" +
"System\CurrentControlSet\Services\"$(LoopSvcName)"\Linkage" +
$(!REG_KEY_READ) KeyLnk
ifstr(i) $(KeyLnk) != $(KeyNull)
set BindValue = ""
GetRegValue $(KeyLnk) "Bind" BindValue
ifstr(i) $(BindValue) != ""
set BindList = *($(BindValue),4)
ForListDo $(BindList)
Split-String $($) "\" BindStr
QueryListSize BindSize $(BindStr)
set BindCmp = *($(BindStr),$(BindSize))
; The acid test...
ifstr(i) $(BindCmp) == $(ProductServicePrefix)
set Another = $(!True)
endif
EndForListDo
endif
CloseRegKey $(KeyLnk)
endif ; KeyLnk
endif ; SvcName != SNA Server
endif ; SvcName != this link SvcName
endif ; SvcNameValue
endif ; SWType == service
endif ; SWTypeValue
endif ; SNAVersion exists
CloseRegKey $(KeyCV)
endif ; KeyCV
endif ; Another == False
EndForListDo
CloseRegKey $(KeySM)
endif ; KeySM
endif ; DCASDLCDD
ifstr(i) $(Another) == $(!True)
goto successful ; Bail out, don't remove this component!
endif
;
; Get rid of this service instance in the product keys
;
CloseRegKey $(KeyServiceIndex)
CloseRegKey $(KeyNetRules)
DeleteRegTree $(KeyProduct) $(RemoveIndex)
CloseRegKey $(KeyProduct)
;
; If deleteing link service then set its cooraspoding DCAISCAConfigurationData
; value to 0 in DCASYNC
;
OpenRegKey $(!REG_H_LOCAL), "", "SYSTEM\CurrentControlSet\Services\DCASYNC\Parameters\ExtraParameters", $(!REG_KEY_READWRITE), KeyDriver
ifstr(i) $(KeyDriver) != $(KeyNull)
GetRegValue $(KeyDriver) "Data1LS" DCASYNCls1
GetRegValue $(KeyDriver) "Data2LS" DCASYNCls2
GetRegValue $(KeyDriver) "Data3LS" DCASYNCls3;Added MAX3 06/18/96
set DCASYNCls1 = *( $(DCASYNCls1), 4 )
set DCASYNCls2 = *( $(DCASYNCls2), 4 )
set DCASYNCls3 = *( $(DCASYNCls3), 4 ) ;Added MAX3 06/18/96
ifstr(i) $(RemoveName) == $(DCASYNCls1)
SetRegValue $(KeyDriver) { "DCAISCAConfigData1", $(NoTitle), $(!REG_VT_DWORD), 0 }
SetRegValue $(KeyDriver) { "Data1LS", $(NoTitle), $(!REG_VT_SZ), "" }
endif
ifstr(i) $(RemoveName) == $(DCASYNCls2)
SetRegValue $(KeyDriver) { "DCAISCAConfigData2", $(NoTitle), $(!REG_VT_DWORD), 0 }
SetRegValue $(KeyDriver) { "Data2LS", $(NoTitle), $(!REG_VT_SZ), "" }
endif
ifstr(i) $(RemoveName) == $(DCASYNCls3) ;Added MAX3 06/18/96
SetRegValue $(KeyDriver) { "DCAISCAConfigData3", $(NoTitle), $(!REG_VT_DWORD), 0 } ;Added MAX3 06/18/96
SetRegValue $(KeyDriver) { "Data3LS", $(NoTitle), $(!REG_VT_SZ), "" } ;Added MAX3 06/18/96
endif ;Added MAX3 06/18/96
CloseRegKey $(KeyDriver)
endif
shell $(!UtilityInf) DeleteSNAService $(RemoveName)
;
; Special Hack Alert:
;
; When we have multiple instances of the same type of link
; service installed, only ONE of those instances may have
; the "class" and "bindable" values present under their
; NetRules key. If the link service we've just deleted
; was the one that had those values, we need to search the
; remaining instances (if any) for those values, and if not
; found, we must add them to the first instance we find.
; What a hassle.
;
set Found = $(!False)
set SaveName = ""
OpenRegKey $(!REG_H_LOCAL), "", "Software\Microsoft", +
$(!REG_KEY_READ), KeySM
ifstr(i) $(KeySM) != $(KeyNull)
EnumRegKey $(KeySM) TmpList
ForListDo $(TmpList)
ifstr(i) $(Found) == $(!False)
set TmpName = *( $($), 1 )
Split-String $(TmpName) "_" TmpSplit
ifstr(i) *( $(TmpSplit), 1 ) == $(ProductName)
ifstr(i) $(TmpName) != $(ProductFullName)
OpenRegKey $(KeySM), "", +
$(TmpName)"\CurrentVersion\NetRules", +
$(!REG_KEY_READ), TmpNRKey
ifstr(i) $(TmpNRKey) != $(KeyNull)
ifstr(i) $(SaveName) == ""
set SaveName = $(TmpName)
endif
EnumRegValue $(TmpNRKey) TmpNRList
ForListDo $(TmpNRList)
ifstr(i) *( $($), 1 ) == "class"
set Found = $(!True)
endif
EndForListDo
CloseRegKey $(TmpNRKey)
endif
endif
endif
endif
EndForListDo
set TmpList = {}
set TmpName = ""
set TmpSplit = ""
set TmpNRList = {}
ifstr(i) $(Found) == $(!False)
ifstr(i) $(SaveName) != ""
OpenRegKey $(KeySM), "", +
$(SaveName)"\CurrentVersion\NetRules", +
$(!REG_KEY_READWRITE), TmpNRKey
ifstr(i) $(TmpNRKey) != $(KeyNull)
shell $(!UtilityInf) AddValueList $(TmpNRKey), +
{{ class, $(NoTitle), $(!REG_VT_MULTI_SZ), {$(NetRulesClass)}}, +
{ bindable, $(NoTitle), $(!REG_VT_MULTI_SZ), {$(NetRulesBindable)}}}
CloseRegKey $(TmpNRKey)
endif
endif
endif
CloseRegKey $(KeySM)
endif
;
; Done with that NetRules weirdness. Let's get on with it:
;
set-sub SvcIndexListSize = $(SvcIndexListSize), 1
OpenRegKey $(!REG_H_LOCAL), "", $(ProductRegBase), +
$(!REG_KEY_READWRITE), KeyProductTemp
ifstr(i) $(KeyProductTemp) != ""
DeleteRegTree $(KeyProductTemp) $(ProductFullName)
CloseRegKey $(KeyProductTemp)
endif
;
; Delete the EventLog entry for the device driver.
;
; OpenRegKey $(!REG_H_LOCAL), "", +
; "System\CurrentControlSet\Services\EventLog\System", +
; $(!REG_KEY_READWRITE), KeyProduct
; ifstr(i) $(!NTN_InstallMode) == "fullremove"
; ifstr(i) $(KeyProduct) != $(KeyNull)
; DeleteRegTree $(KeyProduct), "DCASYNC"
; endif
; endif
; CloseRegKey $(KeyProduct)
ifstr(i) $(!NTN_InstallMode) == "fullremove"
install InstallRemove
endif
set RetData = >( $(RetData), { $(RemoveIndex), +
$(RemoveName), +
$(RemoveTitle), +
$(RemoveDesc), +
$(!NTN_InstallMode), +
} )
ifstr(i) $(RemoveMode) == "Full"
goto remove_next_piece
endif
;++++++++++++++++++++++++++++++++++++
;
; remove_product:
;
;++++++++++++++++++++++++++++++++++++
remove_product = +
goto finish_remove_component
;++++++++++++++++++++++++++++++++++++
;
; finish_remove_component:
;
;++++++++++++++++++++++++++++++++++++
finish_remove_component = +
goto successful
;++++++++++++++++++++++++++++++++++++
;++++++++++++++++++++++++++++++++++++
;
; Escape Hatches:
;
;++++++++++++++++++++++++++++++++++++
;++++++++++++++++++++++++++++++++++++
;++++++++++++++++++++++++++++++++++++
;
; successful:
; this part actually copies the files if the DoCopy variable is on
;
;++++++++++++++++++++++++++++++++++++
successful = +
set Status = STATUS_SUCCESSFUL
goto end
;++++++++++++++++++++++++++++++++++++
;
; warning_msg:
; a warning display
;
;++++++++++++++++++++++++++++++++++++
warning_msg = +
; TODO: This is how the template does warnings. Do we have a better way?
; Do we want to do it differently?
; CODENAME: WARNINGS
Shell $(!SubroutineInf) SetupMessage, $(!STF_LANGUAGE), "WARNING", $(Error)
ifint $($ShellCode) != 0
goto ShellCodeError
endif
set DLGEVENT = $($R1)
ifstr(i) $(DLGEVENT) == "OK"
goto $(to)
else-ifstr(i) $(DLGEVENT) == "CANCEL"
goto $(from)
else
set Status = STATUS_FAILED
goto end
endif
;++++++++++++++++++++++++++++++++++++
;
; nonfatal_msg:
; a non-fatal display
;
;++++++++++++++++++++++++++++++++++++
nonfatal_msg = +
; TODO: See CODENAME: WARNINGS
Shell $(!SubroutineInf) SetupMessage, $(!STF_LANGUAGE), "NONFATAL", $(Error)
ifint $($ShellCode) != 0
goto ShellCodeError
endif
set DLGEVENT = $($R1)
ifstr(i) $(DLGEVENT) == "OK"
goto $(from)
else
goto "end"
endif
;++++++++++++++++++++++++++++++++++++
;
; fatal_registry:
; something failed in the registry access
;
;++++++++++++++++++++++++++++++++++++
fatal_registry = +
set Error = +
"Fatal Registry Error:"$(!LF)+
$(ErrMesg)$(!LF)+
"File: "$(ThisInf)$(!LF)+
"Procedure: "$(ErrProc)$(!LF)+
"Function: "$(ErrFunc)
goto fatal_msg
;++++++++++++++++++++++++++++++++++++
;
; fatal_msg:
; a fatal error display
;
;++++++++++++++++++++++++++++++++++++
fatal_msg = +
; TODO: See CODENAME: WARNINGS
Shell $(!SubroutineInf) SetupMessage, $(!STF_LANGUAGE), "FATAL", $(Error)
ifint $($ShellCode) != 0
goto ShellCodeError
endif
goto set_status_failed
;++++++++++++++++++++++++++++++++++++
;
; ShellCodeError:
; a shell error to be displayed
;
;++++++++++++++++++++++++++++++++++++
ShellCodeError = +
; TODO: See CODENAME: WARNINGS
set DlgType = "MessageBox"
set STF_MB_TITLE = "Error: "$(SetupTitle)
set STF_MB_TEXT = "Shell Code Error"
set STF_MB_TYPE = 1
set STF_MB_ICON = 3
set STF_MB_DEF = 1
ui start "Error Message"
goto set_status_failed
;++++++++++++++++++++++++++++++++++++
;
; set_status_failed:
; last step before exiting
;
;++++++++++++++++++++++++++++++++++++
set_status_failed = +
set Status = STATUS_FAILED
goto end
;++++++++++++++++++++++++++++++++++++
;
; end:
; this exit point sets the CommonStatus to the current status
; then returns the status and return data
;
;++++++++++++++++++++++++++++++++++++
end = +
ifstr(i) $(!IHVDLGHANDLE) != ""
FreeLibrary $(!IHVDLGHANDLE)
set !IHVDLGHANDLE = ""
endif
set CommonStatus = $(Status)
Return $(CommonStatus) $(RetData) $(Changes)
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;
; INSTALLATION AND FILE SECTION
; -----------------------------
; This section is responsible for installing the component and listing all
; the necessary files etc.
;
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;========================================================================
;
; INSTALL
; -------
; The IHV should follow the following template for this section. It is
; responsible for file copying and registry initialization.
;
;========================================================================
[InstallRemove]
set STF_OVERWRITE = "ALWAYS"
set SNADirList = { "hwsetup", "system" }
set SNAToList = { "system\hwsetup", "system" }
ifstr(i) $(!NTN_InstallMode) == "install"
ifstr(i) $(!AddCopy) == "YES"
ForListDo $(SNADirList)
ifstr(i) $($) != "hwsetup"
set Ext = $(ThisFile)
else
set Ext = ""
endif
set To = *( $(SNAToList), $(#) )
AddSectionFilesToCopyList "FilesFor_"$($)"_"$(Option) +
$(!DriverDir)$(Ext), +
$(!SNARootDir)"\"$(To)
EndForListDo
else
AddSectionFilesToCopyList "FilesFor_system_"$(Option) +
$(!DriverDir)"dcasdlc\"$(Ext), +
$(!SNARootDir)"\system"
CopyFilesInCopyList
endif
ifstr(i) $(!DoCopy) == "YES"
CopyFilesInCopyList
endif
else
set !_FileRemoveList = {}
ForListDo $(SNADirList)
set SNADir = *( $(SNAToList), $(#) )
set FullPath = $(!SNARootDir)"\"$(SNADir)
set FileList = ^( "FilesFor_"$($)"_"$(Option), 2 )
ForListDo $(FileList)
set !_FileRemoveList = >( $(!_FileRemoveList), +
$(FullPath)"\"$($) )
EndForListDo
EndForListDo
endif
exit
;========================================================================
;
; FILES
; -----
; These should list the files to be installed for each particular option.
;
; FORMAT:
; The format is "FilesFor_" concatenated with the directory where they will
; end up, another underscore, and the option whose files these are.
; Currently, directories that can take files are:
; hwsetup - the inf file, its help and libraries
; ntbin - executables
; ntsys - system files
; The format includes an enumeration constant and a name for each file, as well
; as a number of possible flags
; 1, file1.spu
; 1, file2.spu
; ...
;
;========================================================================
[FilesFor_hwsetup_DCASDLCLS]
1, dcasdlc.inf
1, dcasdlc.hlp
1, dcasdlc.srl
1, dcautl.dll
[FilesFor_system_DCASDLCLS]
;;rmh002 1, dcasdlc.dll
[FilesFor_hwsetup_DCASDLCDD]
[FilesFor_system_DCASDLCDD]
1, dcasync.sys
Download Driver Pack
After your driver has been downloaded, follow these simple steps to install it.
Expand the archive file (if the download file is in zip or rar format).
If the expanded file has an .exe extension, double click it and follow the installation instructions.
Otherwise, open Device Manager by right-clicking the Start menu and selecting Device Manager.
Find the device and model you want to update in the device list.
Double-click on it to open the Properties dialog box.
From the Properties dialog box, select the Driver tab.
Click the Update Driver button, then follow the instructions.
Very important: You must reboot your system to ensure that any driver updates have taken effect.
For more help, visit our Driver Support section for step-by-step videos on how to install drivers for every file type.