home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 1998 March
/
CHIPCD_3_98.iso
/
software
/
testsoft
/
exchange
/
connect
/
msmcon
/
bin
/
ecx25.inf
< prev
next >
Wrap
INI File
|
1997-08-25
|
67KB
|
2,437 lines
;************************************************************************
;
; Name: ECX25.INF
;
;
; History: andyg, t-danfr Aug 05 92 Initial design
; andyg Oct 20 92 Massive cleanup
; mjt@eicon Feb 92 Port for ecx25
;
;************************************************************************
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;
; 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).
; NOTE: TAGFILE and other flags must be all caps (bogus!) and the white
; space must be exactly as shown.
;
; 1 = "Diskette 1 Label", TAGFILE = "Disk1.Tag"
; 2 = "Diskette 2 Label", TAGFILE = "Disk2.Tag"
; ...
;
;========================================================================
[Source Media Descriptions]
1 = "SNA Link Service Diskette"
;========================================================================
;
; OPTION TYPE
; -----------
; This identifies the Option type we are dealing with. Most SNA link
; services should have "NetService" as the option type. The list of
; option types for 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
;
;========================================================================
[Identification]
OptionType = NetService
;========================================================================
;
; LANGUAGES SUPPORTED
; -------------------
; The human languages supported by this script. Each dialog to be presented
; to the user must have a separate text section for each language supported.
; These sections will be indexed by the three-letter code for the language
; in use.
;
;========================================================================
[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.
;
; You should go through this script and do a global search/replace on
; IHVLINK and IHVDDRV so that they reflect the true names of the IHV
; components.
;
;========================================================================
[Options]
ECX25
; IHVDDRV
;========================================================================
;
; OPTION TEXT SECTION
; -------------------
; These are text strings used to identify the option to the user. There
; are separate sections for each language supported.
;
; You should set these strings to describe the IHV link service you're
; writing the setup script for.
;
; FORMAT:
; The format of the section name is "OptionsText" concatenated with the
; Language represented by the section.
; [OptionsTextLNG1]
; ...
; [OptionsTextLNG2]
; ...
;
;========================================================================
[OptionsTextENG]
ECX25 = "SNA Eicon X.25 (QLLC) Link Service"
; IHVDDRV = "Device Driver for IHV Link Support"
;========================================================================
;
; SNA OPTION LIST
; ---------------
; This is the list of options available to the SNA Services user. This list
; is presented to the user in a list box in the SNA Services Setup program.
;
;========================================================================
[SNAOptions]
ECX25
;========================================================================
;
; SNA OPTION ADDITIONALS
; ----------------------
; This section specifies the additional options that should be installed for
; each of the main options. The SNA Services 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]
; ...
;
;========================================================================
[SNAOptionAddsECX25]
; IHVDDRV
;========================================================================
;
; INSTALLATION STEPS SECTION
; --------------------------
; In this section, you define which steps will be taken in the installation
; procedure.
;
; FORMAT:
; The format is "InstallSteps" concatenated with the option name
; [InstallStepsOPT1]
; ...
;
;========================================================================
[InstallStepsECX25]
AddFilesToCopyList = YES
CopyFilesInCopyList = YES
;[InstallStepsIHVDDRV]
; 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:
; These variables specify which help topic to bring up when the
; user clicks the Help button. There should be one of these for
; each dialog box with a Help button. Look in the main SNA Setup
; .INF files for lots of examples.
;
;++++++++++++++++++++++++++++++++++++
[HelpContextIDs]
IDD_ECX25CONFIG = 101
IDD_ECX25DRVCONFIG = 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 as macros.
; HlpMin and HlpMax should be set to one less and one more than
; the least and greatest HelpContextID.
;
;++++++++++++++++++++++++++++++++++++
[FileConstants]
UtilityInf = $(!SNARootDir)"\SETUPUTL.INF"
SubroutineInf = $(!STF_WINDOWSSYSPATH)"\SUBROUTN.INF"
DialogLibrary = $(!SNARootDir)"\SETUP.SRL"
ThisFile = "ECX25"
ThisInf = $(ThisFile)".INF"
ThisSrl = $(ThisFile)".SRL"
ThisHlp = $(ThisFile)".HLP"
HlpMin = "256"
HlpMax = "256"
$ShellCode = 0
;++++++++++++++++++++++++++++++++++++
;
; Product Information Subsection:
; This subsection contains lots of product information that will be used
; in the registry.
;
; For the SNAServiceType value, please refer to the "SNAServiceTypes" section
; in the SNAUTILS.INF file. Also, only Link Supports have this value, all
; others should have a NULL string ("") for this value. Again, look at the
; existing link support setup .INF files for examples.
;
;++++++++++++++++++++++++++++++++++++
[FileConstantsECX25]
;
; Product Info
;
ProductVersion = "1.0"
ProductName = "ECX25"
ProductFullName = $(ProductName)"_"$(ProductVersion)"_"$(Instance)
ProductRegBase = $(!NTN_SoftwareBase)"\Eicon"
ProductType = "Link"
ProductImagePath = "SNALINK.EXE"
; ProductDepends = {"EcNB"}
ProductDepends = {}
ProductParams = {}
ProductExtraParams = {}
ProductExclusive = $(FALSE)
ProductDLL = "ECX25.DLL"
ProductServicePrefix = "SnaX25"
ProductServiceQuery = $(TRUE)
;
; Registry Key Information
;
; SNAServiceType should be: CESDFT for a DFT link, CESX25 for an X.25 link,
; CESTR for Token Ring, CESLINK for a SDLC link.
;
SNAServiceType = "CESX25"
;
; NetRules Stuff
;
NetRulesClass = "snax25link snalink"
NetRulesTitle = "SNA X.25 Link Service"
NetRulesUse = "service yes yes"
;NetRulesBindable = "snax25link snasyncdriver non non 100"
NetRulesBindable = ""
NetRulesType = "snax25 snax25link"
FullInfName = $(!SNARootDir)"\system\hwsetup\"$(ThisInf)
SoftwareType = "service"
; NetRulesClass = x25linkservice
; FullInfName = $(!SNARootDir)"\system\hwsetup\"$(ThisInf)
; ServiceType = "service"
;[FileConstantsIHVDDRV]
;
; Product Info
;
; ProductVersion = "1.0"
; ProductName = "IHVDDRV"
; ProductFullName = $(ProductName)"_"$(ProductVersion)
; ProductRegBase = $(!NTN_SoftwareBase)"\Microsoft"
; ProductType = "Driver"
; ProductImagePath = "IHVDDRV.SYS"
; ProductDepends = {}
; ProductParams = {}
; ProductExtraParams = {}
; ProductExclusive = $(TRUE)
; ProductDLL = ""
; ProductServicePrefix = "IHVDDRV"
; ProductServiceQuery = $(FALSE)
;
; Registry Key Information
;
; SNAServiceType = "DRIVER"
;
; NetRules Stuff
;
; NetRulesClass = dftdevdriver
; FullInfName = $(!SNARootDir)"\system\hwsetup\"$(ThisInf)
; ServiceType = "service"
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;
; 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 toward.
;
;++++++++++++++++++++++++++++++++++++
from = ""
to = ""
;++++++++++++++++++++++++++++++++++++
;
; Booleans:
;
;++++++++++++++++++++++++++++++++++++
FALSE = 0
TRUE = 1
;++++++++++++++++++++++++++++++++++++
;
; 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 = ""
Other1 = "Ad&vanced"
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;
; LANGUAGE-DEPENDENT FILE CONSTANTS SECTION
; -----------------------------------------
; This section is responsible for defining language dependent information.
;
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;
; The following name should include the name of the IHV as per the example
;
[FileConstantsENG]
SetupTitle = "Eicon X.25 Link Service Setup"
[FileConstantsECX25_ENG]
ProductTitle = "Eicon X.25/QLLC Link Service"
ProductDesc = "Eicon X.25/QLLC Link Service for "$(!SNA_ProductName)
;[FileConstantsIHVDDRV_ENG]
; ProductTitle = "IHV Device Driver"
; ProductDesc = "IHV Device Driver for SNA Services"
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;
; 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]
; ...
;
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
[DoX25LSConfigENG]
;
; Items to configure are:
;
; LNUA
; XIDRetries
; XIDTimers
; StationID
; PortNumber
;
;
;
DlgTemplate = IDD_X25SETUP
DlgType = "MultiEdit"
Caption = $(!P:SetupTitle)
DlgText1 = "Service Name: "$(ServiceName)
EditLabel1 = "&Local Title:"
EditLabel2 = "Local &NUA Address:"
;EditLabel3 = "EiconCard Port &Port Number:"
EditLabel3 = "Car&d Port"
EditLabel4 = "&Station ID (hex):"
EditTextIn = { $(ServiceTitle), +
$(LNUA), $(EcPort), $(StationID) }
EditTextLim = { 40, 15, 2, 4 }
;HelpContext = #(HelpContextIDs, IDD_X25SETUP, 1 )
HelpContext = 256
;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
;
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
;
; The following section was lifted from IBMDFT.INF, and shows the way to
; configure the IBM DFT link service. It's really meant as a guideline
; for you to examine and follow when writing your own install script.
; You might also want to look at the other link service install scripts,
; notably IBMX25.INF as it has lots of parameters, and SNADLC.INF as it
; interacts with the NCPA and network bindings a little differently.
;
; DoDFTLSConfig
;
; DESCRIPTION: This shell script pops up a dialog to get the configuration
; of this product.
;
; INPUT: $($0) : Service Name
; $($1) : Current Title
; $($2) : local NUA
; $($3) : eicon Card port
; $($4) : station address
;
; OUTPUT: $($R0): STATUS: One of the above
; $($R1): New Title
; $($R2): local NUA
; $($R3): eicon card port
; $($R4): station address
;
;
;()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
[DoX25LSConfig]
set ServiceName = $($0)
set ServiceTitle = $($1)
set LNUA = $($2)
set EcPort = $($3)
set StationID = $($4)
set-dectohex StationID = $(StationID)
read-syms DialogConstants
read-syms DialogConstants$(!STF_LANGUAGE)
read-syms DoX25LSConfig$(!STF_LANGUAGE)
begin = +
set Status = STATUS_SUCCESSFUL
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 begin
endif
ifstr(i) $(DLGEVENT) == "Exit"
set Status = STATUS_USERCANCEL
else
set Status = STATUS_SUCCESSFUL
set Error = {}
set ServiceTitle = *( $(EditTextOut), 1 )
set LNUA = *( $(EditTextOut), 2 )
set EcPort = *( $(EditTextOut), 3 )
ifint $(EcPort) < 1
set Error = >( $(Error), ERROR_PORT )
else-ifint $(EcPort) > 48
set Error = >( $(Error), ERROR_PORT )
endif
set StationID = *( $(EditTextOut), 4 )
;
; Convert to decimal
;
ifstr(i) $(StationID) != ""
; set-hextodec StationID = "0x"$(StationID)
set-hextodec StationID = $(StationID)
endif
ifint $(StationID) < 1
set Error = >( $(Error), ERROR_STATION )
else-ifint $(StationID) > 255
set Error = >( $(Error), ERROR_STATION )
endif
ForListDo $(Error)
set Status = STATUS_REPEAT
ifstr(i) $($) == ERROR_PORT
shell $(!P:SubroutineInf) SetupMessage $(!STF_LANGUAGE) +
"NONFATAL" +
"The EiconCard port parameter must be a number"$(!LF)+
"between 1 and 48."$(!LF)$(!LF)+
"Please reconfigure."
endif
ifstr(i) $($) == ERROR_STATION
shell $(!P:SubroutineInf) SetupMessage $(!STF_LANGUAGE) +
"NONFATAL" +
"The station ID parameter must be a number"$(!LF)+
"between 0x1 and 0xFF."$(!LF)$(!LF)+
"Please reconfigure."
endif
EndForListDo
endif
ifstr(i) $(Status) == STATUS_REPEAT
goto begin
endif
ui pop 1
Return $(Status), $(ServiceTitle), $(LNUA), $(EcPort), $(StationID)
;()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
;
; Identify
;
; DESCRIPTION: To verify that this INF deals with the same type of options
; as we are about to use.
;
; INPUT: None
;
; OUTPUT: $($R0): STATUS: STATUS_SUCCESSFUL
; $($R1): Option Type (NetService...)
; $($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
; localized 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 an
; appropriate return value.
;
;++++++++++++++++++++++++++++++++++++
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 Services. 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
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
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)
set Changes = 1
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
;
; Set WAN Services Directory before reading File Constants
;
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
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 services 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)
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 {} $(Changes)
;************************************************************************
;************************************************************************
; 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_ECX25
;
;++++++++++++++++++++++++++++++++++++
set_defaults_ECX25 =+
set ServiceName = $(Option)
set ServiceTitle = $(ProductTitle)
set ServiceDesc = $(ProductDesc)
set LNUA = "000000000000000"
set EcPort = "1"
set StationID = "193" ; 0xC1
goto finish_defaults
;++++++++++++++++++++++++++++++++++++
;
; set_defaults_IHVDDRV
;
;++++++++++++++++++++++++++++++++++++
;set_defaults_IHVDDRV =+
; 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 = ""
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
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_ECX25:
;
;++++++++++++++++++++++++++++++++++++
assign_value_ECX25 =+
ifstr(i) $(ValueName) == "LNUA"
set LNUA = $(ValueData)
else-ifstr(i) $(ValueName) == "EcPort"
set EcPort = $(ValueData)
else-ifstr(i) $(ValueName) == "StationID"
set StationID = $(ValueData)
endif
goto finish_assign_value
;++++++++++++++++++++++++++++++++++++
;
; assign_value_IHVDDRV:
;
;++++++++++++++++++++++++++++++++++++
;assign_value_IHVDDRV =+
; goto finish_assign_value
;++++++++++++++++++++++++++++++++++++
;
; finish_assign_value:
;
;++++++++++++++++++++++++++++++++++++
finish_assign_value =+
EndForListDo
goto assign_extra_$(Option)
;++++++++++++++++++++++++++++++++++++
;
; assign_extra_ECX25:
;
;++++++++++++++++++++++++++++++++++++
assign_extra_ECX25 = +
goto finish_assign_extra
;++++++++++++++++++++++++++++++++++++
;
; assign_extra_IHVDDRV:
;
;++++++++++++++++++++++++++++++++++++
;assign_extra_IHVDDRV =+
; 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_ECX25:
;
;++++++++++++++++++++++++++++++++++++
modify_params_ECX25 = +
shell "" DoX25LSConfig $(ServiceName), +
$(ServiceTitle), +
$(LNUA), +
$(EcPort), +
$(StationID)
ifint $($ShellCode) != 0
goto ShellCodeError
endif
set Status = $($R0)
ifstr(i) $(Status) != STATUS_SUCCESSFUL
goto end
else
set ServiceTitle = $($R1)
set LNUA = $($R2)
set EcPort = $($R3)
set StationID = $($R4)
endif
goto finish_modify_params
;++++++++++++++++++++++++++++++++++++
;
; modify_params_IHVDDRV:
;
;++++++++++++++++++++++++++++++++++++
;modify_params_IHVDDRV =+
; 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) }, +
{ class , $(NoTitle), $(!REG_VT_MULTI_SZ), $(NRClass) }, +
{ 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_ECX25:
;
;++++++++++++++++++++++++++++++++++++
write_params_ECX25 =+
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 = { +
{ LNUA , $(NoTitle), $(!REG_VT_SZ) , $(LNUA) }, +
{ EcPort, $(NoTitle), $(!REG_VT_DWORD), $(EcPort) }, +
{ StationID, $(NoTitle), $(!REG_VT_DWORD), $(StationID)} +
}
; OpenRegKey $(!REG_H_LOCAL), "", +
; "SYSTEM\CurrentControlSet\Services\"+
; "IHVDDRV\Parameters\ExtraParameters",+
; $(!REG_KEY_READWRITE), KeyDriverParams
;
; ifstr(i) $(KeyDriverParams) == $(KeyNull)
; set ErrMesg = "Can't Find Device Driver Service Entry."
; set ErrProc = "write_params_IBMTRLS"
; set ErrFunc = "OpenRegKey"
; goto fatal_registry
; endif
;
; shell $(UtilityInf) AddValueList, $(KeyDriverParams), +
; { +
; { LNUA , $(NoTitle), $(!REG_VT_SZ) , $(LNUA) },+
; { EcPort, $(NoTitle), $(!REG_VT_DWORD), $(EcPort) }, +
; { StationID, $(NoTitle), $(!REG_VT_DWORD), $(StationID)} +
; }
;
;
; CloseRegKey $(KeyDriverParams)
goto finish_write_params
;++++++++++++++++++++++++++++++++++++
;
; write_params_IHVDDRV:
;
;++++++++++++++++++++++++++++++++++++
;write_params_IHVDDRV =+
; set FullOption = $(Option)"_"$(ServiceIndex)
; 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_ECX25:
;
;++++++++++++++++++++++++++++++++++++
getbind_ECX25 =+
; ????? set RetData = { { "01", "IHVDDRV", "", "", "getbindings" } }
; set RetData = { {"CurrentVersion", "IBMX25DD", "", "", "getbindings"} }
; set RetData = { { "01", "ECNB", "", "", "getbindings" } }
goto finish_getbind_component
;++++++++++++++++++++++++++++++++++++
;
; getbind_IHVDDRV:
;
;++++++++++++++++++++++++++++++++++++
;getbind_IHVDDRV =+
; goto finish_getbind_component
;++++++++++++++++++++++++++++++++++++
;
; finish_getbind_component:
;
;++++++++++++++++++++++++++++++++++++
finish_getbind_component =+
goto successful
;++++++++++++++++++++++++++++++++++++
;
; bind_component:
;
;++++++++++++++++++++++++++++++++++++
bind_component =+
set Error = "Network bindings aren't implemented 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) == "IBMX25DD"
; set PN = #( FileConstantsIBMX25LS, ProductName, 1)
; set PV = #( FileConstantsIBMX25LS, ProductVersion, 1)
; shell $(UtilityInf) FindSNAProductServices $(ProductRegBase) +
; $(PN)"_"$(PV)
; set _Status = $($R0)
; set _List = $($R1)
;
; ifstr(i) $(_List) != {}
; goto successful
; endif
; shell $(UtilityInf) FindSNAProductServices $(ProductRegBase) +
; "IBMSDLCLS_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), "IBMSYNCDD"
; 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\ecx25"
AddSectionFilesToCopyList "FilesFor_system_"$(Option) +
$(!DriverDir)$(Ext), +
$(!SNARootDir)"\system\hwsetup\ecx25"
else
AddSectionFilesToCopyList "FilesFor_system_"$(Option) +
$(!DriverDir)"ecx25\"$(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:
; ihvinf - 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_ECX25]
1, ecx25.inf
1, ecx25.hlp
1, ecx25.srl
[FilesFor_system_ECX25]
1, ecx25.dll