home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 1998 March
/
CHIPCD_3_98.iso
/
software
/
testsoft
/
exchange
/
connect
/
msmcon
/
bin
/
ecsdlc.inf
< prev
next >
Wrap
INI File
|
1997-08-25
|
68KB
|
2,372 lines
;************************************************************************
;************************************************************************
;
; ECSDLC.INF
;
; Eicon SDLC Link Support and Device Driver INF file
;
; History:
;
; 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 Support diskette"
;========================================================================
;
; 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]
ECSDLCLS
; ECSDLCDD
;========================================================================
;
; 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]
ECSDLCLS = "SNA Eicon SDLC Link Service"
; ECSDLCDD = "SNA Eicon 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]
ECSDLCLS
;========================================================================
;
; 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
;
;========================================================================
[SNAOptionAddsECSDLCLS]
; ECSDLCDD
;========================================================================
;
; 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]
; ...
;
;========================================================================
[InstallStepsECSDLCLS]
AddFilesToCopyList = YES
CopyFilesInCopyList = YES
;[InstallStepsECSDLCDD]
; 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_SDLCSETUP = 101
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;
; 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 = "ECSDLC"
ThisInf = $(ThisFile)".INF"
ThisSrl = $(ThisFile)".SRL"
ThisHlp = $(ThisFile)".HLP"
HlpMin = "80"
HlpMax = "80"
$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 Supports have this value, all
; others should have a NULL string ("") for this value.
;
;++++++++++++++++++++++++++++++++++++
[FileConstantsECSDLCLS]
;
; Product Info
;
ProductVersion = "1.0"
ProductName = "ECSDLCLS"
ProductFullName = $(ProductName)"_"$(ProductVersion)"_"$(Instance)
ProductRegBase = $(!NTN_SoftwareBase)"\Eicon"
ProductType = "Link"
ProductImagePath = "SNALINK.EXE"
ProductDepends = {}
ProductParams = {}
ProductExtraParams = {}
ProductExclusive = $(FALSE)
ProductDLL = "ECSDLC.DLL"
ProductServicePrefix = "SnaSdlc"
ProductServiceQuery = $(TRUE)
;
; Registry Key Information
;
SNAServiceType = "CESLINK"
;
; NetRules Stuff
;
NetRulesClass = "snasdlclink snalink"
NetRulesTitle = "SNA SDLC Link Service"
NetRulesUse = "service yes yes"
NetRulesBindable = "snasdlclink snasyncdriver non non 100"
NetRulesType = "snasdlc snasdlclink"
FullInfName = $(!SNARootDir)"\system\hwsetup\"$(ThisInf)
SoftwareType = "service"
;[FileConstantsECSDLCDD]
;
; Product Info
;
;ProductVersion = "1.0"
;ProductName = "ECSYNCDD"
;ProductFullName = $(ProductName)"_"$(ProductVersion)"_"$(Instance)
;ProductRegBase = $(!NTN_SoftwareBase)"\Microsoft"
;ProductType = "Driver"
;ProductImagePath = "ECSYNC.SYS"
;ProductDepends = {}
;ProductParams = {}
;ProductExtraParams = {}
;ProductExclusive = $(TRUE)
;ProductDLL = ""
;ProductServicePrefix = "ECSYNC"
;ProductServiceQuery = $(FALSE)
;
; Registry Key Information
;
;SNAServiceType = "DRIVER"
;
; NetRules Stuff
;
;NetRulesClass = "snasyncdriver basic yes"
;NetRulesTitle = "Eicon SDLC/X.25 Device Driver"
;NetRulesUse = "driver yes yes"
;NetRulesBindable = ""
;NetRulesType = "snasyncdd 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
;++++++++++++++++++++++++++++++++++++
;
; 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 = ""
;++++++++++++++++++++++++++++++++++++
;
; SDLC Card Types:
;
;++++++++++++++++++++++++++++++++++++
[SDLCDriverNumbers_ENG]
; quite stupid, I know ...
"01" = 01
"02" = 02
"03" = 03
"04" = 04
"05" = 05
"06" = 06
"07" = 07
"08" = 08
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;
; 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 = "Eicon SDLC Link Service Setup"
[FileConstantsECSDLCLS_ENG]
ProductTitle = "Eicon SDLC Link Service"
ProductDesc = "Eicon SDLC Link Support for SNA Server"
;[FileConstantsECSDLCDD_ENG]
;ProductTitle = "Eicon SDLC/X.25 Device Driver"
;ProductDesc = "Eicon SDLC/X.25 Device Driver for SNA Server"
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;
; 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_SDLCSETUP
;DlgType = "MultiEdit"
DlgType = "RadioCombination"
Caption = $(!P:SetupTitle)
DlgText1 = "Service Name: "$(ServiceName)
EditLabel1 = "&Title:"
EditTextIn = { $(ServiceTitle) }
EditTextLim = { 40 }
ComboLabel1 = "Car&d Port:"
NotifyFields = { "NO" }
RadioGroup = "Line T&ype"
RadioText1 = "&Leased"
RadioText2 = "Switched: SNA &Server-Stored Number"
RadioText3 = "Switched: &Modem-Stored Number"
RadioText4 = "Switched: Ma&nual Dial"
RadioOptionsGreyed = {}
CheckText1 = "Constant Ca&rrier"
CBOptionsGreyed = {}
;HelpContext = #( HelpContextIDs, $(DlgTemplate), 1 )
HelpContext = 80
Advanced = "Ad&vanced"
Other1 = "Ad&vanced"
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;
; 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
; $($3) : Current Line Type
; $($4) : Current Carrier
;
; OUTPUT: $($R0): STATUS: One of the above
; $($R1): New Title
; $($R2): New Card Type (01 - 06)
; $($R3): New Line Type
; $($R4): New Carrier
;
;()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
[DoSDLCLSConfig]
more_ui = +
set ServiceName = $($0)
set ServiceTitle = $($1)
set DriverNumber = $($2)
set LineType = $($3)
set Carrier = $($4)
set SvDriverNumber = $($2)
set SvLineType = $($3)
set SvCarrier = $($4)
set Changes = 0
read-syms DialogConstants
read-syms DialogConstants$(!STF_LANGUAGE)
read-syms DoSDLCLSConfig$(!STF_LANGUAGE)
;
; set the default values
;
set Status = STATUS_SUCCESSFUL
; set-sub Temp = $(DriverNumber), 1
set Temp = $(DriverNumber)
set ComboListIn1 = ^( SDLCDriverNumbers"_"$(!STF_LANGUAGE), 0 )
set ComboListOut1 = *( $(ComboListIn1), $(Temp) )
set ComboListItemsIn = { ComboListIn1 }
set ComboListItemsOut = { ComboListOut1 }
set-add Temp = $(LineType), 1
set RadioIn = { *( {1,3,2}, $(Temp)) }
ifint $(Carrier) == 0
set CheckItemsIn = { "OFF" }
else
set CheckItemsIn = { "ON" }
endif
ui start $(DlgTemplate) $(!IHVDLGHANDLE)
ifstr(i) $(DLGEVENT) == "DLGBUTTON1"
ui pop 1
OpenRegKey $(!REG_H_LOCAL), "", +
"Software\Eicon\Ecnb\CurrentVersion", +
$(!REG_KEY_READ), KeyWANServices
ifstr(i) $(KeyWANServices) != {}
GetRegValue $(KeyWANServices) "RootPath" RootPathValue
ifstr(i) $(RootPathValue) != ""
set !WANRootDir = *( $(RootPathValue), 4 )
endif
endif
RunProgram ExitCode "" "" $(!WANRootDir)\eccfgwnt.exe $(!WANRootDir)\eccfg.eic /DD /DA
goto more_ui
endif
ifstr(i) $(DLGEVENT) == "Exit"
set Status = STATUS_USERCANCEL
else
set Status = STATUS_SUCCESSFUL
set ServiceTitle = *( $(EditTextOut), 1 )
set DriverNumber = #( SDLCDriverNumbers"_"$(!STF_LANGUAGE), +
$(ComboListOut1), 1 )
; set DriverNumber = *( $(EditTextOut), 2 )
set LineType = *( {0,2,1,1}, *( $(RadioOut), 1 ) )
ifstr(i) *( $(CheckItemsOut), 1 ) == "OFF"
set Carrier = 0
else
set Carrier = 1
endif
ifstr(i) $(DriverNumber) != $(SvDriverNumber)
set Changes = 1
endif
ifstr(i) $(LineType) != $(SvLineType)
set Changes = 1
endif
ifstr(i) $(Carrier) != $(SvCarrier)
set Changes = 1
endif
endif
ui pop 1
Return $(Status), $(Changes), $(ServiceTitle), +
$(DriverNumber), $(LineType), $(Carrier)
;()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
;
; 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"
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 Server 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_ECSDLCLS
;
;++++++++++++++++++++++++++++++++++++
set_defaults_ECSDLCLS = +
set ServiceName = $(Option)
set ServiceTitle = $(ProductTitle)
set ServiceDesc = $(ProductDesc)
set DriverNumber = "1" ; Eicon SDLC 1
set LineType = "0" ; Leased
set Carrier = "0" ; Not constant
goto finish_defaults
;++++++++++++++++++++++++++++++++++++
;
; set_defaults_ECSDLCDD
;
;++++++++++++++++++++++++++++++++++++
; set_defaults_ECSDLCDD = +
; 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)
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_ECSDLCLS:
;
;++++++++++++++++++++++++++++++++++++
assign_value_ECSDLCLS = +
; ifstr(i) $(ValueName) == "DriverNumber"
ifstr(i) $(ValueName) == "EcPort"
set DriverNumber = $(ValueData)
else-ifstr(i) $(ValueName) == "LineType"
set LineType = $(ValueData)
else-ifstr(i) $(ValueName) == "Carrier"
set Carrier = $(ValueData)
endif
goto finish_assign_value
;++++++++++++++++++++++++++++++++++++
;
; assign_value_ECSDLCDD:
;
;++++++++++++++++++++++++++++++++++++
; assign_value_ECSDLCDD = +
; goto finish_assign_value
;++++++++++++++++++++++++++++++++++++
;
; finish_assign_value:
;
;++++++++++++++++++++++++++++++++++++
finish_assign_value = +
EndForListDo
goto assign_extra_$(Option)
;++++++++++++++++++++++++++++++++++++
;
; assign_extra_ECSDLCLS:
;
;++++++++++++++++++++++++++++++++++++
assign_extra_ECSDLCLS = +
goto finish_assign_extra
;++++++++++++++++++++++++++++++++++++
;
; assign_extra_ECSDLCDD:
;
;++++++++++++++++++++++++++++++++++++
; assign_extra_ECSDLCDD = +
; 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_ECSDLCLS:
;
;++++++++++++++++++++++++++++++++++++
modify_params_ECSDLCLS = +
shell "" DoSDLCLSConfig $(ServiceName), +
$(ServiceTitle), +
$(DriverNumber), +
$(LineType), +
$(Carrier)
ifint $($ShellCode) != 0
goto ShellCodeError
endif
set Status = $($R0)
ifstr(i) $(Status) != STATUS_SUCCESSFUL
goto end
else
set Changes = $($R1)
set ServiceTitle = $($R2)
set DriverNumber = $($R3)
set LineType = $($R4)
set Carrier = $($R5)
endif
goto finish_modify_params
;++++++++++++++++++++++++++++++++++++
;
; modify_params_ECSDLCDD:
;
;++++++++++++++++++++++++++++++++++++
; modify_params_ECSDLCDD = +
; 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) }, +
{ class , $(NoTitle), $(!REG_VT_MULTI_SZ), $(NRClass) }, +
{ type , $(NoTitle), $(!REG_VT_SZ), $(NetRulesType) }, +
{ bindable , $(NoTitle), $(!REG_VT_MULTI_SZ), $(NRBindable) } +
}
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_ECSDLCLS:
;
;++++++++++++++++++++++++++++++++++++
write_params_ECSDLCLS = +
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), "" } +
}
set ProductExtraParams = { +
;; { DriverNumber, $(NoTitle), $(!REG_VT_DWORD), $(DriverNumber) }, +
{ EcPort , $(NoTitle), $(!REG_VT_DWORD), $(DriverNumber) }, +
{ LineType , $(NoTitle), $(!REG_VT_DWORD), $(LineType) }, +
{ Carrier , $(NoTitle), $(!REG_VT_DWORD), $(Carrier) } +
}
goto finish_write_params
;++++++++++++++++++++++++++++++++++++
;
; write_params_ECSDLCDD:
;
;++++++++++++++++++++++++++++++++++++
; write_params_ECSDLCDD = +
; 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_ECSDLCLS:
;
;++++++++++++++++++++++++++++++++++++
getbind_ECSDLCLS = +
; set RetData = { {"01", "ECSDLCDD", "", "", "getbindings"} }
goto finish_getbind_component
;++++++++++++++++++++++++++++++++++++
;
; getbind_ECSDLCDD:
;
;++++++++++++++++++++++++++++++++++++
; getbind_ECSDLCDD = +
; 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) == "ECSDLCDD"
; set PN = #( FileConstantsECSDLCLS, ProductName, 1)
; set PV = #( FileConstantsECSDLCLS, ProductVersion, 1)
; shell $(UtilityInf) FindSNAProductServices $(ProductRegBase) +
; $(PN)"_"$(PV)
; set _Status = $($R0)
; set _List = $($R1)
;
; ifstr(i) $(_List) != {}
; goto successful
; endif
; shell $(UtilityInf) FindSNAProductServices $(ProductRegBase) +
; "ECX25LS_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
;
; Get rid of this service instance in the product keys
;
CloseRegKey $(KeyServiceIndex)
CloseRegKey $(KeyNetRules)
DeleteRegTree $(KeyProduct) $(RemoveIndex)
CloseRegKey $(KeyProduct)
shell $(UtilityInf) DeleteSNAService $(RemoveName)
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), "ECSYNC"
; 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 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
CreateDir $(!SNARootDir)"\system\hwsetup\ecsdlc"
AddSectionFilesToCopyList "FilesFor_system_"$(Option) +
$(!DriverDir)$(Ext), +
$(!SNARootDir)"\system\hwsetup\ecsdlc"
else
AddSectionFilesToCopyList "FilesFor_system_"$(Option) +
$(!DriverDir)"ecsdlc\"$(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_ECSDLCLS]
1, ecsdlc.inf
1, ecsdlc.hlp
1, ecsdlc.srl
[FilesFor_system_ECSDLCLS]
1, ecsdlc.dll
;[FilesFor_system_ECSDLCDD]
;1, ecsync.sys