Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

8460 lines
315 KiB

;***********************************************************************
;
; OEMNSVRA.INF
;
; NT Remote Access Service (RAS) Network Setup INF file.
;
; This is the main RAS setup INF file.
;
; Modification History:
;
; 11-June-96 RamC Changed all instance of STATUS_NO_EFFECT to
; STATUS_USERCANCEL.
; 17-July-95 MikeMi System is not a valid SoftwareType,
; changed to service
; 01-Aug-92 Ram Cherala Created
;
; NOTE: Please don't randomly change the order of the program or the
; function calls (Shell commands). A lot depends on the order
; in which the functions are called.
;
;-----------------------------------------------------------------------
; OPTION TYPE
; -----------
; This identifies the Option type we are dealing with.
;
; NetAdapter, a netcard / transport combination or just a netcard
; NetDriver, just 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
[Options]
RAS
[GeneralConstants]
;
; Constants to support the use of checkbox dialogs
Chosen = "ON"
NotChosen = "OFF"
TRUE = 1
FALSE = 0
NoTitle = 0
; set this value to 0 to disable debug output during setup
; !DebugOutputControl = 0
FLibraryErrCtl = 1
OldVersionExisted = $(FALSE)
[FileConstants]
HandleNull = ""
PORTSDLGHANDLE = $(HandleNull)
RasServerOption = "Server"
RasClientOption = "Client"
RasAdminOption = "Admin"
RasClientAndServerOption = "ClientAndServer"
; Product Info
!Manufacturer = "Microsoft"
!ProductMajorVersion = "4"
!ProductMinorVersion = "0"
ProductVersion = $(!ProductMajorVersion)"."$(!ProductMinorVersion)
ProductOpSupport = 134 ; 0x0086 ; Display,Removable,Properties,Not Updatable
; EventLog Message File
NetEventDLL = "%SystemRoot%\System32\netevent.dll"
IoLogMsgDll = "%SystemRoot%\System32\drivers\IoLogMsg.dll"
!RasMsgDll = "%SystemRoot%\System32\rasmsg.dll"
; 0x1f (31) allows audit success/failure events to be filtered in the
; event viewer
!RasEventTypeSupported = 31
; this variable is used to hide the selected component so that it is
; not displayed in the list of software/hardware installed by NCPA
; set this to any value other than 0 to hide the component
; set it to 0 to disable hiding.
!HideComponent = 1
; this variable is used to hide the selected component from appearing
; in the bindings list. We want to hide the ndiswan and asyncmac bindings
; so that the user cannot disable them. This variable can take value
; 16 for hiding bindings and 32 for disabling reordering of bindings.
; HideBindings = 16
; it has been decided not to hide the bindings afterall, so it shall
; be written, and so it shall be done!!
HideBindings = 0
; set this flag to 1 to force NCPA to call our inf file for review bindings
fReviewBindings = 1
!RasInfName = "OEMNSVRA.INF"
; !STF_CWDDIR is the directory from where this INF file was invoked & is
; set by NT setup (or NCPA) as the case may be.
ProductFullInfName = $(!STF_CWDDIR)$(!RasInfName)
RasDir = $(!STF_CWDDIR)RAS
ProductPath = $(RasDir)"\"
; Remote Access Service Software data
ProductRASName = "RAS"
ProductRASImagePath = "%SystemRoot%\system32\ras"
ProductRASSvcType = "service"
NetRuleRASClass = "classRasService ""basic"""
NetRuleRASType = "RasService classRasService"
NetRuleRASUse = "system"
!ProductPCIMACName = "PCIMAC"
; RAS Server Software data
; the product name is RemoteAccess and not RasServer because we want to
; be compatible with down level RAS software - i.e. ability to say
; "net start remoteaccess"
ProductRASSVRName = "RemoteAccess"
ProductRASSVRImagePath = "%SystemRoot%\system32\rassrv.exe"
ProductRASSVRSvcType = "service"
NetRuleRASSVRClass = "classRasServer ""basic"""
NetRuleRASSVRType = "RasServer classRasServer"
NetRuleRASSVRUse = $(ProductRASSVRSvcType)
NetRuleRASSVRBindForm = """RasServer"" yes yes container"
; we provide the bindable rule below to enable rassvr to bind to all
; netbios transports. doing this enables an admin to selectively disable
; bindings from the NCPA to disallow client access to particular nets.
; setup, enumerates the bound lanas and provides the non-ras lanas to
; the rasserver as available lannets.
NetRuleRASSVRBindable = {"classRasServer netBiosTransport non non 100",+
"classRasServer ipxTransport non non 100"}
; RAS Manager Software data
ProductRASMANName = "RasMan"
ProductRASMANImagePath = "%SystemRoot%\system32\rasman.exe"
ProductRASMANSvcType = "service"
NetRuleRASMANClass = "classRasManager ""basic"""
NetRuleRASMANType = "RasManager classRasManager"
NetRuleRASMANUse = $(ProductRASMANSvcType)
NetRuleRASMANBindForm = """RasManager"" yes no container"
NetRuleRASMANBindable = ""
; RasArp service data
!ProductRASARPName = "RasArp"
!ProductRASARPImagePath = "\SystemRoot\system32\drivers\rasarp.sys"
; NWLNKRIP AND SAP service data
!ProductRASISNRIPName = "NwlnkRip"
!ProductRASISNSAPName = "NwSapAgent"
!ProductRASISNRIPImagePath = "\SystemRoot\system32\drivers\nwlnkrip.sys"
!ProductRASISNSAPImagePath = "%SystemRoot%\system32\services.exe"
; RAS Autodial Software data
!ProductRASAUTODIALName = "RasAuto"
!ProductRASAUTODIALImagePath = "%SystemRoot%\system32\rasman.exe"
!ProductRASAUTODIALSvcType = "service"
; RAS acd driver data
!ProductRASACDName = "RasAcd"
!ProductRASACDImagePath = "\SystemRoot\system32\drivers\rasacd.sys"
; NDISWAN Software data
!ProductNDISWANName = "NdisWan"
!ProductNDISWANImagePath = "\SystemRoot\system32\drivers\ndiswan.sys"
ProductNDISWANSvcType = "kernel"
ProductNDISWANType = "transport"
!NetRuleNDISWANType = "ndisWanDrv ndisWanTransport"
!NetRuleNDISWANClass = {"ndisWanTransport basic"}
NetRuleNDISWANUse = $(ProductNDISWANType)" yes yes"
!NetRuleNDISWANBindForm = """NdisWan"" yes no container"
; the following variable is global because it is used in the
; UpdateNdisWanInfo routine during ras upgrade.
!NetRuleNDISWANBindable = +
{"rasCapableTransport ndisWanAdapterDialIn non non 100",+
"rasCapableTransport ndisWanAdapterDialOut non non 100",+
"tcpipTransport ndisWanAdapterDialInIP non non 100",+
"tcpipTransport ndisWanAdapterDialOutIP non non 100",+
"netbtTransport ndisWanAdapterDialInIP non non 100",+
"netbtTransport ndisWanAdapterDialOutIP non non 100",+
"ipxTransport ndisWanAdapterDialInOutIPX non non 100",+
"bhService ndisWanAdapterBH non non 100",+
"ndisWanTransport ndisWanAdapterBH non non 100",+
"ndisWanTransport ndisWanAdapterDialIn non non 100",+
"ndisWanTransport ndisWanAdapterDialOut non non 100",+
"ndisWanTransport ndisWanAdapterDialInIP non non 100",+
"ndisWanTransport ndisWanAdapterDialOutIP non non 100",+
"ndisWanTransport ndisWanAdapterDialInOutIPX non non 100"}
; RAS Asymac Software data
ProductRASASYMACName = "AsyncMac"
ProductRASASYMACImagePath = "\SystemRoot\system32\drivers\asyncmac.sys"
ProductRASASYMACType = "driver"
ProductRASASYMACSvcType = "kernel"
NetRuleRASASYMACType = "rasAsyMacDrv rasAsyMacDriver"
NetRuleRASASYMACClass = {"rasAsyMacDriver basic"}
NetRuleRASASYMACUse = $(ProductRASASYMACType)
NetRuleRASASYMACBindForm = """RasAsyMac"" yes no container"
!NetRuleRASASYMACBindable = +
{"rasAsyMacDriver rasAsyMacAdapter non non 100"}
;
; NDISWAN adapter data - we separate the two cases of dialin and dialout
; adapters corresponding to dialin/out ports
!ProductRASHUBDIALINName = "RasHubDialin"
!ProductRASHUBDIALOUTName = "RasHubDialout"
!ProductRASHUBDIALINIPName = "RasHubDialinIp"
!ProductRASHUBDIALOUTIPName = "RasHubDialoutIp"
!ProductRASHUBDIALINOUTIPXName = "RasHubDialinoutIpx"
!ProductNDISWANDIALINName = "NdisWanDialin"
!ProductNDISWANDIALOUTName = "NdisWanDialout"
!ProductNDISWANDIALINIPName = "NdisWanDialinIp"
!ProductNDISWANDIALOUTIPName = "NdisWanDialoutIp"
!ProductNDISWANDIALINOUTIPXName = "NdisWanDialinoutIpx"
!NetRuleHardwareBHType = "ndisWanBH ndisWanAdapterBH"
!NetRuleHardwareBHClass = {"ndisWanAdapterBH basic"}
!NetRuleHardwareBHBindForm = " yes yes container"
!NetRuleHardwareNDISWANBindForm = " yes yes container"
!NetRuleHardwareDIALINType = "ndiswandialin ndisWanAdapterDialIn"
!NetRuleHardwareDIALINClass = {"ndisWanAdapterDialIn basic"}
!NetRuleHardwareDIALINBlock = {"lanmanServer ndisWanAdapterDialIn",+
"tcpipTransport ndisWanAdapterDialIn",+
"netbtTransport ndisWanAdapterDialIn",+
"ipxTransport ndisWanAdapterDialin",+
"lanmanWorkstation ndisWanAdapterDialIn"}
!NetRuleHardwareDIALINIPType = "ndiswandialinIP ndisWanAdapterDialInIP"
!NetRuleHardwareDIALINIPClass = {"ndisWanAdapterDialInIP basic"}
!NetRuleHardwareDIALINIPBlock = {"lanmanServer ndisWanAdapterDialInIP",+
"nbfTransport ndisWanAdapterDialinIP",+
"ipxTransport ndisWanAdapterDialinIP",+
"lanmanWorkstation ndisWanAdapterDialInIP"}
!NetRuleHardwareDIALOUTType = "ndiswandialout ndisWanAdapterDialOut"
!NetRuleHardwareDIALOUTClass = {"ndisWanAdapterDialOut basic"}
!NetRuleHardwareDIALOUTBlock = {"ipxTransport ndisWanAdapterDialOut"}
!NetRuleHardwareDIALOUTIPType = "ndiswandialoutIP ndisWanAdapterDialOutIP"
!NetRuleHardwareDIALOUTIPClass = {"ndisWanAdapterDialOutIP basic"}
!NetRuleHardwareDIALOUTIPBlock = {"ipxTransport ndisWanAdapterDialOutIP",+
"nbfTransport ndisWanAdapterDialOutIP"}
!NetRuleHardwareDIALINOUTIPXType = "ndiswandialinoutIPX ndisWanAdapterDialInOutIPX"
!NetRuleHardwareDIALINOUTIPXClass = {"ndisWanAdapterDialInOutIPX basic"}
!NetRuleHardwareDIALINOUTIPXBlock = {"nbfTransport ndisWanAdapterDialInOutIPX",+
"tcpipTransport ndisWanAdapterDialInOutIPX",+
"netbtTransport ndisWanAdapterDialInOutIPX"}
; RAS Asymac adapter data
NetRuleHardwareRASASYMACType = "rasAsyMac rasAsyMacAdapter"
NetRuleHardwareRASASYMACBindForm = " yes yes container"
NetRuleHardwareRASASYMACClass = {"rasAsyMacAdapter basic"}
; NDIS TAPI device information
!ProductNDISTAPIName = "NdisTapi"
!ProductNDISTAPIImagePath = "\SystemRoot\system32\drivers\ndistapi.sys"
; Performance data
!RasPerfKeyName = "Performance"
!RasPerfLibraryName = "rasctrs.dll"
!RasPerfOpenFunction = "OpenRasPerformanceData"
!RasPerfCloseFunction = "CloseRasPerformanceData"
!RasPerfCollectFunction = "CollectRasPerformanceData"
!RasCounterFileName = "rasctrs.ini"
;
; Registry Key
ProductKeyBase = $(!NTN_SoftwareBase)"\"$(!Manufacturer)
ProductKeyName = $(!NTN_SoftwareBase)"\"$(!Manufacturer)"\"$(ProductRASName)"\CurrentVersion"
!NetworkCardKeyName = $(!NTN_SoftwareBase)"\Microsoft\Windows NT\CurrentVersion\NetworkCards"
RasSvrKeyName = $(!NTN_ServiceBase)"\"$(ProductRASSVRName)
RasSvrParamKeyName = $(!NTN_ServiceBase)"\"$(ProductRASSVRName)"\Parameters"
!RasManSvcKeyName = $(!NTN_ServiceBase)"\"$(ProductRASMANName)
!RasAcdKeyName = $(!NTN_ServiceBase)"\"$(!ProductRASACDName)
!RasArpKeyName = $(!NTN_ServiceBase)"\"$(!ProductRASARPName)
!RasIsnRipKeyName = $(!NTN_ServiceBase)"\"$(!ProductRASISNRIPName)
!RasIsnSapKeyName = $(!NTN_ServiceBase)"\"$(!ProductRASISNSAPName)
!NdisTapiKeyName = $(!NTN_ServiceBase)"\"$(!ProductNDISTAPIName)
!RasManKeyName = $(!NTN_SoftwareBase)"\"$(!Manufacturer)"\"$(ProductRASMANName)"\CurrentVersion"
!RasAutodialKeyName = $(!NTN_ServiceBase)"\"$(!ProductRASAUTODIALName)
RasManParamKeyName = $(!NTN_ServiceBase)"\"$(ProductRASMANName)"\Parameters"
RasManLinkageKeyName = $(!NTN_ServiceBase)"\"$(ProductRASMANName)"\Linkage"
NdisWanParamKeyName = $(!NTN_ServiceBase)"\"$(!ProductNDISWANName)"\Parameters"
NdisWanLinkageKeyName = $(!NTN_ServiceBase)"\"$(!ProductNDISWANName)"\Linkage"
RasAsyMacKeyName = $(!NTN_ServiceBase)"\"$(ProductRASASYMACName)
RasAsyMacParamKeyName = $(!NTN_ServiceBase)"\"$(ProductRASASYMACName)"\Parameters"
RasMacLinkageKeyName = $(!NTN_ServiceBase)"\"$(ProductRASASYMACName)"\Linkage"
RasTapiDevicesKeyName = $(!NTN_SoftwareBase)"\"$(!Manufacturer)"\"$(ProductRASName)"\TAPI DEVICES"
LinkageKeyName = $(!NTN_ServiceBase)"\"$(Product$(Option)Name)"\Linkage"
!ProductNDISWANKeyName = $(!NTN_SoftwareBase)"\"$(!Manufacturer)"\"$(!ProductNDISWANName)"\CurrentVersion"
ProductRASASYMACKeyName = $(!NTN_SoftwareBase)"\"$(!Manufacturer)"\"$(ProductRASASYMACName)"\CurrentVersion"
RasProtocolsKeyName = $(!NTN_SoftwareBase)"\"$(!Manufacturer)"\"$(ProductRASName)"\PROTOCOLS"
; File names, etc.
!UtilityInf = "UTILITY.INF"
subroutninf = "SUBROUTN.INF"
RascfgDll = "RASCFG.DLL"
Exit_Code = 0
ShellCode = 0
; Program flow control variables.
from = ""
to = ""
; Return codes; Exit_Code is set to one of these
ExitCodeOk = 0
ExitCodeCancel = 1
ExitCodeFatal = 2
KeyNull = ""
!MAXIMUM_ALLOWED = 33554432
!SERVICE_NO_CHANGE = 4294967295
RegistryErrorIndex = NO_ERROR
; size in bytes of various components
ServerSize = 820116
ClientSize = 634260
AdminSize = 513962
; Default installation options
FInstallServer = $(Chosen)
FInstallClient = $(Chosen)
FInstallAdmin = $(Chosen)
[UiVars]
;
; Destination Drive Particulars
VolumeList = {} ? $(!LIBHANDLE) GetHardDriveLetters
VolumeFreeList = {} ? $(!LIBHANDLE) GetHardDriveFreeSpace
VolumeFSList = {} ? $(!LIBHANDLE) GetHardDriveFileSystems
DestVolume = ""
MinHelpID = 25000
MaxHelpID = 25999
[SystemVars]
; these need to be defined by us when the setup.exe is used to invoke
; the .inf file
!STF_PROCESSOR = "" ? $(!LIBHANDLE) GetProcessor
!STF_PLATFORM = "" ? $(!LIBHANDLE) GetPlatform
!STF_WINDOWSPATH = "" ? $(!LIBHANDLE) GetWindowsNtDir
!STF_NTPATH = $(!STF_WINDOWSPATH)
!STF_WINDOWSSYSPATH = "" ? $(!LIBHANDLE) GetWindowsNtSysDir
!STF_COMPUTERNAME = "" ? $(!LIBHANDLE) GetMyComputerName
!STF_USERNAME = "" ? $(!LIBHANDLE) GetMyUserName
!STF_FLOPPYLIST = {} ? $(!LIBHANDLE) GetFloppyDriveLetters
!STF_UNUSEDDRIVES = {} ? $(!LIBHANDLE) GetUnusedDrives
!STF_LANGUAGE = "" ? $(!LIBHANDLE) GetLanguage
!STF_BUSTYPE = "" ? $(!LIBHANDLE) GetMyBusType
!STF_BUSTYPELIST = "" ? $(!LIBHANDLE) GetMyBusTypeList
!NTN_SoftwareBase = "Software"
!NTN_ServiceBase = "System\CurrentControlSet\Services"
!NTN_ScUseRegistry = "NO"
[AvailableSystemMemory]
SystemMemory = "" ? $(!LIBHANDLE) GetMemorySize
MinSystemMemory = 2048
[date]
; Now is a list which contains { Sec from 1-1-1970, Year, Month, Day, Hour,
; Minute, Second }
!CurrentDate = {} ? $(!LIBHANDLE) GetSystemDate
[HelpContextIDs]
; these IDs are based on the HC_UI_RASMAC_BASE defined in
; uimsg.h in the BLT common\h directory. portscfg.h uses
; some of the IDs starting from 25000, so make sure if you
; change these IDs there is no overlap.
HC_RASOPTIONS = 25020
HC_CLIENTACCESS = 25021
HC_INSTALLOVER1 = 25022
HC_INSTALLOVER2 = 25023
;---------------------------------------------------------------------------
; 1. Identify
;
; DESCRIPTION: To verify that this INF deals with the same type of options
; as we are choosing currently.
;
; INPUT: None
;
; OUTPUT: $($R0): STATUS: STATUS_SUCCESSFUL
; $($R1): Option Type (COMPUTER ...)
; $($R2): Diskette description
;---------------------------------------------------------------------------
[Identify]
;
;
read-syms Identification
set Status = STATUS_SUCCESSFUL
set Identifier = $(OptionType)
set Media = #("Source Media Descriptions", 1, 1)
Return $(Status) $(Identifier) $(Media)
;------------------------------------------------------------------------
; 2. ReturnOptions:
;
; DESCRIPTION: To return the option list supported by this INF and the
; localised text list representing the options.
;
;
; INPUT: $($0): Language used. ( ENG | FRN | ... )
;
; OUTPUT: $($R0): STATUS: STATUS_SUCCESSFUL |
; STATUS_NOLANGUAGE
; STATUS_FAILED
;
; $($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
;
; form a list of all the options and another of the text representing
;
returnoptions = +
set OptionList = ^(Options, 1)
set OptionTextList = ^(OptionsText$($0), 1)
set Status = STATUS_SUCCESSFUL
finish_ReturnOptions = +
Return $(Status) $(OptionList) $(OptionTextList)
;***********************************************************************
; SETUP INVOCATION SECTION
;***********************************************************************
;------------------------------------------------------------------------
;
; Shell Commands:
;
; This section is shelled to by main setup program
; The invoking application passes the RasInstallMode environmental
; variable set to either "install" or "configure"
;
[Shell Commands]
set Exit_Code = $(!STF_ERROR_GENERAL)
LoadLibrary "x" $(!STF_SRCDIR)\setupdll.dll !LIBHANDLE
LoadLibrary "x" $(!STF_SRCDIR)\ncpa.cpl !NCPA_HANDLE
ifstr(i) $(!LIBHANDLE) == ""
Debug-Output "OEMNSVRA.INF: unable to load setupdll.dll"
Shell subroutn.inf, SetupMessage $(!STF_LANGUAGE) "FATAL" $(UnableToLoadSetupdll)
set Exit_Code = STATUS_USERCANCEL
exit
endif
ifstr(i) $(!NCPA_HANDLE) == ""
Debug-Output "OEMNSVRA.INF: unable to load ncpa.cpl"
Shell subroutn.inf, SetupMessage $(!STF_LANGUAGE) "FATAL" $(UnableToLoadNcpaCpl)
set Exit_Code = STATUS_USERCANCEL
exit
endif
ifstr(i) $(RAS_INSTALL_MODE) == ""
set RAS_INSTALL_MODE = install
endif
read-syms SystemVars
detect SystemVars
read-syms RasErrors$(!STF_LANGUAGE)
OpenRegKey $(!REG_H_LOCAL) "" "System\CurrentControlSet\Control\ProductOptions" 33554432 KeyProductOption
ifstr(i) $(KeyProductOption) != ""
GetRegValue $(KeyProductOption) "ProductType" ProductTypeList
set TempProductType = *($(ProductTypeList),4)
ifstr(i) $(TempProductType) == "winnt"
set !STF_PRODUCT = WINNT
else-ifstr(i) $(TempProductType) == "lanmannt"
set !STF_PRODUCT = LANMANNT
else-ifstr(i) $(TempProductType) == "servernt"
set !STF_PRODUCT = SERVERNT
else
Debug-Output "OEMNSVRA.INF: invalid Product Type "$(TempProductType)
Shell subroutn.inf, SetupMessage $(!STF_LANGUAGE) "FATAL" $(UnknownProductType)
set Exit_Code = STATUS_USERCANCEL
exit
endif
CloseRegKey $(KeyProductOptions)
else
Debug-Output "OEMNSVRA.INF: unable to determine Product Type "
Shell subroutn.inf, SetupMessage $(!STF_LANGUAGE) "FATAL" $(NoProductType)
set Exit_Code = STATUS_USERCANCEL
exit
endif
Debug-Output "OEMNSVRA.INF: Product Type "$(!STF_PRODUCT)
ifstr(i) $(RAS_INSTALL_MODE) != "install"
ifstr(i) $(RAS_INSTALL_MODE) != "configure"
ifstr(i) $(RAS_INSTALL_MODE) != "deinstall"
Debug-Output "OEMNSVRA.INF: Invalid RAS_INSTALL_MODE "$(RAS_INSTALL_MODE)
Shell subroutn.inf, SetupMessage $(!STF_LANGUAGE) "WARNING" $(InvalidMode)
set Exit_Code = STATUS_USERCANCEL
exit
endif
endif
endif
set !NTN_InstallMode = $(RAS_INSTALL_MODE)
Shell "" InstallOption $(!STF_LANGUAGE) "RAS" $(!STF_SRCDIR) "YES" "YES" "YES"
ifint $($ShellCode) != $( !SHELL_CODE_OK)
Debug-Output "OEMNSVRA.INF: Failed to shell out to InstallOption"
exit
endif
set Exit_Code = $($R0)
; set the Exit_Code so that rasphone.exe can determine if bindings
; should be called or not
ifstr(i) $($R0) == STATUS_SUCCESSFUL
set Exit_Code = 1
endif
Debug-Output "Oemnsvra.inf: install returned "$($R0)
FreeLibrary $(!LIBHANDLE)
FreeLibrary $(!NCPA_HANDLE)
exit
;***********************************************************************
; SETUP (NTLANMAN) INVOCATION SECTION
;***********************************************************************
;------------------------------------------------------------------------
;
; InstallOption:
;
; This section is shelled to by main installation processing.
;
;
; FUNCTION: To copy files representing Options
; To configure the installed option
; To update the registry for the installed option
;
; INPUT: $($0): Language to use
; $($1): OptionID to install
; $($2): SourceDirectory
; $($3): AddCopy (YES | NO)
; $($4): DoCopy (YES | NO)
; $($5): DoConfig (YES | NO)
;
; OUTPUT: $($R0): STATUS: STATUS_SUCCESSFUL |
; STATUS_NOLANGUAGE |
; STATUS_USERCANCEL |
; STATUS_FAILED
;
;------------------------------------------------------------------------
[InstallOption]
Debug-Output "In InstallOption section"
; Set default values for
set Status = STATUS_FAILED
; extract parameters
set Option = $($1)
set SourceDir = $($2)
set AddCopy = $($3)
set DoCopy = $($4)
set DoConfig = $($5)
;
; Check if the language requested is supported
;
set LanguageList = ^(LanguagesSupported, 1)
Ifcontains(i) $($0) NOT-IN $(LanguageList)
Return STATUS_NOLANGUAGE
endif
StartWait
; define all the constants
set-subst LF = "\n"
; read the UI variables and detect their setttings on the local machine
read-syms UiVars
detect UiVars
set !STF_NTPATH = $(!STF_WINDOWSSYSPATH)
GetDriveInPath !STF_NTDRIVE $(!STF_WINDOWSSYSPATH)
read-syms GeneralConstants
read-syms FileConstants
read-syms DialogConstants$(!STF_LANGUAGE)
read-syms FileConstants$(!STF_LANGUAGE)
; read the error messages section
read-syms RasErrors$(!STF_LANGUAGE)
detect date
; set the help file
read-syms HelpContextIDs
SetHelpFile $(!STF_CWDDIR)rassetup.hlp $(MinHelpID) $(MaxHelpID)
set-title $(FunctionTitle)
set to = Begin
set from = Begin
; Assume all is well.
set CommonStatus = STATUS_SUCCESSFUL
Debug-Output "OEMNSVRA.INF: STF_CWDDIR is: "$(!STF_CWDDIR)
Debug-Output "OEMNSVRA.INF: STF_LANGUAGE is: "$(!STF_LANGUAGE)
Debug-Output "OEMNSVRA.INF: Option is: "$(Option)
Debug-Output "OEMNSVRA.INF: NTN_SoftwareBase is: "$(!NTN_SoftwareBase)
Debug-Output "OEMNSVRA.INF: NTN_ServiceBase is: "$(!NTN_ServiceBase)
Begin = +
set !NETCARD_LIST = {}
; note that the reason for the ServerInstalled, ClientInstalled and AdminInstalled flags are not
; really in use any more. The original purpose was to be able to install these components independently,
; but that changed and now a user installs all three on both the NT wksta and server. So, the use of
; these variables and the conditional code can be removed (I just haven't done it due to lack of time)
set ServerInstalled = FALSE
set ClientInstalled = FALSE
set AdminInstalled = FALSE
set DoServer = TRUE
set DoClient = TRUE
set DoAdmin = TRUE
set DoServerOnly = FALSE
set DoClientOnly = FALSE
set DoAdminOnly = FALSE
set DoRas = FALSE
set DoRasSvr = FALSE
set DoRasMan = FALSE
set DoNdisWan = FALSE
set DoRasAsyMac = FALSE
IfStr(i) $(!NTN_InstallMode) == deinstall
Set StartLabel = RemoveRas
else-Ifstr(i) $(!NTN_InstallMode) == Update
set StartLabel = UpgradeRas
else-Ifstr(i) $(!NTN_InstallMode) == configure
set StartLabel = ConfigureRas
else-Ifstr(i) $(!NTN_InstallMode) == bind
set StartLabel = BindingsRas
else
set StartLabel = InstallRas
endif
set from = Begin
set to = end
goto $(StartLabel)
;;;;;;;;;;;;;;;;; INSTALL RAS BEGINS ;;;;;;;;;;;;;;;;;;;;;;
InstallRas = +
StartWait
Debug-Output "In InstallRas Section"
Debug-Output "Origin is "$(!NTN_Origination)
Debug-Output "Install Mode "$(!NTN_InstallMode)
Debug-Output "Install phase "$(!NTN_InstallPhase)
Debug-Output "Copy Flag is "$(DoCopy)
Debug-Output "Option is "$(Option)
Debug-Output "SrcDir is "$(SourceDir)
Debug-Output "STF_WINDOWSPATH is "$(!STF_WINDOWSPATH)
Debug-Output "Context Inf name "$(STF_CONTEXTINFNAME)
Debug-Output "!STF_UNATTENDED is "$(!STF_UNATTENDED)
Debug-Output "!STF_GUI_UNATTENDED is "$(!STF_GUI_UNATTENDED)
Debug-Output "!STF_UNATTENDED_SECTION is "$(!STF_UNATTENDED_SECTION)
; To support Unattended mode of installing RAS (i.e., no UI, but silent install
; unless setup encounters an error) use the following algorithm.
;
; ifstr(i) $(!STF_GUI_UNATTENDED) == YES
; then !STF_UNATTENDED contains the name of the unattended script file
; and !STF_UNATTENDED_SECTION contains the name of the section in the
; script file that we should be reading for RAS parameters.
; else
; this is an attended mode of install
; endif
set RasComponentsList = {} ; list of components installed on the system
set NumInstalled = 0 ; number of installed components
; check if the same version of RAS already exists on the system
OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(!MAXIMUM_ALLOWED) KeyProduct
Ifstr $(KeyProduct) != $(KeyNull)
; if this is primary mode of install, then don't complain if RAS is already
; installed (more than likely by PPTP) and is being installed again by the
; setup wizard.
Ifstr(i) $(!NTN_InstallPhase) == primary
set CommonStatus = STATUS_USERCANCEL
goto end
EndIf
GetRegValue $(KeyProduct) "MajorVersion" VersionInfo
set VersionMajor = *($(VersionInfo), 4)
GetRegValue $(KeyProduct) "MinorVersion" VersionInfo
set VersionMinor = *($(VersionInfo), 4)
set InstalledVersion = $(VersionMajor)"."$(VersionMinor)
ifstr(i) $(ProductVersion) != $(InstalledVersion)
Shell "" QueryRasUpgrade $(ProductRASTitle) $(InstalledVersion) +
$(ProductVersion)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto ShellCodeError
endif
Ifstr(i) $($R1) == "OK"
set from = InstallRas
set to = InstallRas1
goto RemoveRas
else
goto end
endif
endif
shell "" QueryComponentsInstalled $(ProductKeyName)
Ifstr(i) $($R0) == STATUS_SUCCESSFUL
Set RasComponentsList = $($R1)
Set InstalledFlags = $($R2)
Set ServerInstalled = *($(InstalledFlags),1)
Set ClientInstalled = *($(InstalledFlags),2)
Set AdminInstalled = *($(InstalledFlags),3)
Endif
Debug-Output "Installed List is "$(RasComponentsList)
Debug-Output "Installed Flags is "$(InstalledFlags)
QueryListSize NumInstalled $(RasComponentsList)
; the 3 components we install are server, client and admin
ifint $(NumInstalled) == 3
read-syms VerExists$(!STF_LANGUAGE)
set Text = $(Product$(Option)Title)$(Ver)$(ProductVersion)+
$(Text1)
Shell $(subroutninf), SetupMessage $(!STF_LANGUAGE) "NONFATAL" $(Text)
Ifint $($ShellCode) != $(!SHELL_CODE_OK)
Goto fatal
Else-Ifstr(i) $($R0) == STATUS_FAILED
Goto fatal
Else-Ifstr(i) $($R0) == STATUS_USERCANCEL
Goto end
Endif
goto end
endif
CloseRegKey $(KeyProduct)
else
; fRemoveRas indicates to setup that RAS should be removed on failure
; during setup. We want this to happen only on first time install.
InstallRas1 =+
set fRemoveRas = TRUE
endif
goto memorycheck
setupabort = +
read-syms SetupAbortDlg$(!STF_LANGUAGE)
ui start "SetupAbort"
ifstr(i) $(DLGEVENT) == "CONTINUE"
ui pop 1
Exit
else
ui pop 1
Exit
endif
memorycheck = +
read-syms AvailableSystemMemory
detect AvailableSystemMemory
Debug-Output "Available Memory is "$(SystemMemory)
IfInt $(SystemMemory) < $(MinSystemMemory)
read-syms FatalErrorMem$(!STF_LANGUAGE)
shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "FATAL" $(Fatal)
goto setupabort
Else
goto InstallNetwork
EndIf
InstallNetwork =+
; Check if workstation is installed.
ifstr(i) $(DoServer) == FALSE
ifstr(i) $(DoClient) == FALSE
goto CopyResources
endif
endif
goto CopyResources
CopyResources = +
; if it is a primary install then YES at the end of DoAskSource ensures
; that the user is not prompted.
ifstr(i) $(!NTN_InstallMode) == "install"
Ifstr(i) $(DoCopy) == "YES"
Shell $(!UtilityInf), DoAskSource, $(!STF_CWDDIR), $(SourceDir) YES
Ifint $($ShellCode) != $(!SHELL_CODE_OK)
Goto ShellCodeError
Else-Ifstr(i) $($R0) == STATUS_FAILED
Shell $(!UtilityInf) RegistryErrorString "ASK_SOURCE_FAIL"
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto ShellCodeError
endif
set Error = $($R0)
goto fatal
Else-Ifstr(i) $($R0) == STATUS_USERCANCEL
Goto end
Endif
Set !STF_SRCDIR = $($R1)
Set SourceDir = $($R1)
Debug-Output "SrcDir "$(SourceDir)
endif
; Copy the files during install mode only
; Create the program group during install mode only
Debug-Output "OEMNSVRA.INF: Copying files"
Install InstallResources
ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
goto filecopycancel
endif
install InstallRasFiles
ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
goto filecopycancel
endif
endif
StartWait
ifstr(i) $(DoAdminOnly) == TRUE
goto CommonCode
endif
goto PortsConfigure
;;;;;;;;;;;;;;;;;; CONFIGURE RAS BEGINS!!! ;;;;;;;;;;;;;;;;;
ConfigureRas = +
; indicate that RAS was installed before
set OldVersionExisted = $(TRUE)
; find out what was originally installed
read-syms StatusDeterminingConfig$(!STF_LANGUAGE)
shell $(subroutninf) PushBillBoard NETSTATUSDLG $(ReadingConfig)
Set BillboardVisible = 1
StartWait
shell "" QueryComponentsInstalled
Ifstr(i) $($R0) == STATUS_SUCCESSFUL
Set InstalledComps = $($R1)
Set InstalledFlags = $($R2)
Set DoServer = *($(InstalledFlags),1)
Set DoClient = *($(InstalledFlags),2)
Set DoAdmin = *($(InstalledFlags),3)
Set DoServerOnly = *($(InstalledFlags),4)
Set DoClientOnly = *($(InstalledFlags),5)
Set DoAdminOnly = *($(InstalledFlags),6)
Endif
Set ServerInstalled = $(DoServer)
Set ClientInstalled = $(DoClient)
Set AdminInstalled = $(DoAdmin)
Debug-Output "DoServer "$(DoServer)
Debug-Output "DoClient "$(DoClient)
Debug-Output "DoAdmin "$(DoAdmin)
Debug-Output "DoServerOnly "$(DoServerOnly)
Debug-Output "DoClientOnly "$(DoClientOnly)
Debug-Output "DoAdminOnly "$(DoAdminOnly)
Ifint $(BillboardVisible) != 0
Shell "subroutn.inf" PopBillboard
Set BillboardVisible = 0
Endif
ifstr(i) $(DoAdminOnly) == TRUE
read-syms NoConfigAdmin$(!STF_LANGUAGE)
shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "STATUS" $(NoConfigAdmin)
goto end
endif
goto PortsConfigure
PortsConfigure = +
StartWait
read-syms StatusDeterminingConfig$(!STF_LANGUAGE)
shell $(subroutninf) PushBillBoard NETSTATUSDLG $(ReadingConfig)
Set BillboardVisible = 1
LoadLibrary "x" $(!STF_CWDDIR)rascfg.dll PORTSDLGHANDLE
set Result = {}
; determine if the LanmanWorkstation is bound to any netcard and pass
; this information to the RasPortsConfig library procedure.
; This is used for setting the Netbios gateway information and to
; determine if the network connection restore checkbox should be checked.
set fNetcardInstalled = FALSE
shell "" IsNetcardInstalled
ifstr(i) $($R0) == STATUS_SUCCESSFUL
set fNetcardInstalled = $($R1)
endif
Debug-Output "fNetcardInstalled Option "$(fNetcardInstalled)
CheckProtocolsInstalled =+
; determine the installed protocols and pass this information to the
; config dll
shell "" QueryInstalledProtocols
ifstr(i) $($R0) == STATUS_SUCCESSFUL
set fNetbeuiInstalled = $($R1)
set fTcpIpInstalled = $($R2)
set fIpxInstalled = $($R3)
else
read-syms QueryInstalledProtocolsError$(!STF_LANGUAGE)
shell $(subroutninf) SetupMessage $(!STF_LANGUAGE) "FATAL" $(Text)
goto end
endif
; call the dialog library procedure for port configuration
; the inputs to the call are
; Install mode - one of install or configure
; fNetcardInstalled - TRUE if a netcard is installed in the system, else
; FALSE
; ProductPath - SystemRoot\ras
; fNetbeuiInstalled - TRUE if Netbeui is installed, else FALSE
; fTcpIpInstalled - TRUE if TcpIp is installed, else FALSE
; fIpxInstalled - TRUE if Ipx is installed, else FALSE
Ifint $(BillboardVisible) != 0
Shell "subroutn.inf" PopBillboard
Set BillboardVisible = 0
Endif
Debug-Output "!STF_UNATTENDED is "$(!STF_UNATTENDED)
Debug-Output "!STF_GUI_UNATTENDED is "$(!STF_GUI_UNATTENDED)
Debug-Output "!STF_UNATTENDED_SECTION is "$(!STF_UNATTENDED_SECTION)
LibraryProcedure Result, $(PORTSDLGHANDLE), RasPortsConfig $(!STF_HWND) +
$(!NTN_InstallMode) $(fNetcardInstalled) $(ProductPath) +
$(fNetbeuiInstalled) $(fTcpIpInstalled) $(fIpxInstalled) +
$(!STF_GUI_UNATTENDED) $(!STF_UNATTENDED) $(!STF_UNATTENDED_SECTION)
StartWait
; now that we are back in the inf file figure out what the configuration is
; from the Result returned by the dll. Result is a list of strings.
; now that we are back in the inf file figure out what the configuration is
; from the Result returned by the dll. Result is a list of strings.
set NewNumPorts = 0
set NewNumTapiPorts = 0
set NewNumDialoutNBF = 0
set NewNumDialinNBF = 0
set NewNumDialinIP = 0
set NewNumDialoutIP = 0
set NewNumDialinoutIPX = 0
set fSerialInstalled = FALSE
set fUnimodemInstalled = FALSE
set fOtherInstalled = FALSE
; are the protocols selected for dialin or dialout?
set fNetbeuiChosen = FALSE
set fTcpIpChosen = FALSE
set fIpxChosen = FALSE
; are the protocols selected for dialout? (the naming is historical)
set fNetbeuiSelected = FALSE
set fTcpIpSelected = FALSE
set fIpxSelected = FALSE
; are the protocols selected for dialin?
set fNetbeuiAllowed = FALSE
set fTcpIpAllowed = FALSE
set fIpxAllowed = FALSE
; NewNumPorts is a count of serial and "OTHER" (like ether ras)
; ports installed.
; NewNumTapiPorts is a count ofisdn and other TAPI ports installed
set NewNumPorts = *($(Result),1)
set NewNumTapiPorts = *($(Result),2)
set NewNumPortsList = {}
set NullString = ""
Debug-Output "PortsConfigure returned: "$(Result)
Debug-Output "PortsConfigure NewNumPorts: "$(NewNumPorts)
Debug-Output "PortsConfigure NewNumTapiPorts: "$(NewNumTapiPorts)
ifstr(i) $(NewNumPorts) == "EXITSETUP"
Debug-Output "PortsConfigre User selected ExitSetup."
goto RemoveDiskFiles
else-ifstr(i) $(NewNumPorts) == "NOPORTS"
Debug-Output "PortsConfigre: No serial ports detected."
shell $(subroutninf) SetupMessage $(!STF_LANGUAGE) "NONFATAL" $(ErrorNoPorts)
goto RemoveDiskFiles
else-ifstr(i) $(NewNumPorts) == "BADARGS"
Debug-Output "PortsConfigre: bad arguments to dll."
shell $(subroutninf) SetupMessage $(!STF_LANGUAGE) "NONFATAL" $(ErrorBadArgs)
goto RemoveDiskFiles
else-ifstr(i) $(NewNumPorts) == "FAILURE"
Debug-Output "PortsConfigre: Unknown failure."
shell $(subroutninf) SetupMessage $(!STF_LANGUAGE) "NONFATAL" $(ErrorUnknown)
goto RemoveDiskFiles
endif
goto PortsConfigure1
RemoveDiskFiles = +
; remove ras files if user selected cancel or if there were errors during
; install.
set CommonStatus = STATUS_USERCANCEL
ifstr(i) $(!NTN_InstallMode) == "install"
goto filecopycancel
endif
goto end
PortsConfigure1 = +
set NewNumDialoutNBF = *($(Result),3)
Debug-Output "PortsConfigure NewNumDialoutNBF: "$(NewNumDialoutNBF)
set NewNumDialinNBF = *($(Result),4)
Debug-Output "PortsConfigure NewNumDialinNBF: "$(NewNumDialinNBF)
set fSerialInstalled = *($(Result),5)
Debug-Output "PortsConfigure fSerialInstalled: "$(fSerialInstalled)
set fUnimodemInstalled = *($(Result),6)
Debug-Output "PortsConfigure fUnimodemInstalled: "$(fUnimodemInstalled)
set fOtherInstalled = *($(Result),7)
Debug-Output "PortsConfigure fOtherInstalled: "$(fOtherInstalled)
ifstr(i) $(fSerialInstalled) == TRUE
set NewNumPortsList = >($(NewNumPortsList), $(NullString)$(NewNumPorts)$(NullString))
else-ifstr(i) $(fOtherInstalled) == TRUE
set NewNumPortsList = >($(NewNumPortsList), $(NullString)$(NewNumPorts)$(NullString))
else-ifstr(i) $(fUnimodemInstalled) == TRUE
set NewNumPortsList = >($(NewNumPortsList), $(NullString)$(NewNumPorts)$(NullString))
endif
set fNetbeuiSelected = *($(Result),8)
Debug-Output "PortsConfigure NetbeuiSelected: "$(fNetbeuiSelected)
set fTcpIpSelected = *($(Result),9)
Debug-Output "PortsConfigure TcpIpSelected: "$(fTcpIpSelected)
set fIpxSelected = *($(Result),10)
Debug-Output "PortsConfigure IpxSelected: "$(fIpxSelected)
set fNetbeuiAllowed = *($(Result),11)
Debug-Output "PortsConfigure NetbeuiAllowed: "$(fNetbeuiAllowed)
set fTcpIpAllowed = *($(Result),12)
Debug-Output "PortsConfigure TcpIpAllowed: "$(fTcpIpAllowed)
set fIpxAllowed = *($(Result),13)
Debug-Output "PortsConfigure IpxAllowed: "$(fIpxAllowed)
ifstr(i) $(fNetbeuiSelected) == TRUE
set fNetbeuiChosen = TRUE
else
set fNetbeuiChosen = $(fNetbeuiAllowed)
endif
ifstr(i) $(fTcpIpSelected) == TRUE
set fTcpIpChosen = TRUE
else
set fTcpIpChosen = $(fTcpIpAllowed)
endif
ifstr(i) $(fIpxSelected) == TRUE
set fIpxChosen = TRUE
else
set fIpxChosen = $(fIpxAllowed)
endif
; compute the adapters needed for TCP/IP
ifstr(i) $(fTcpIpSelected) == TRUE
set NewNumDialoutIP = $(NewNumDialoutNBF)
endif
ifint $(NewNumDialinNBF) != 0
ifstr(i) $(fTcpIpAllowed) == TRUE
set NewNumDialinIP = 1
endif
endif
Debug-Output "NewNumDialinIP: "$(NewNumDialinIP)
Debug-Output "NewNumDialoutIP: "$(NewNumDialoutIP)
; compute the adapters needed for IPX
; NOTE for Daytona beta this is equal to number of ports
ifstr(i) $(fIpxChosen) == TRUE
; set-add NewNumDialinoutIPX = $(NewNumPorts), $(NewNumTapiPorts)
; Only one IPX binding is required irrespective of how many ports
set NewNumDialinoutIPX = 1
Debug-Output "IPX Selected - NewNumDialinoutIPX: "$(NewNumDialinoutIPX)
endif
; enable the IPX router if the user allows dial-in on IPX protocol
ifstr(i) $(fIpxAllowed) == TRUE
set EnableIpxRouter = 1
else
set EnableIpxRouter = 0
endif
; if nbf is not selected, then reduce the number of bindings accordingly
ifstr(i) $(fNetbeuiAllowed) == FALSE
set NewNumDialinNBF = 0
endif
ifstr(i) $(fNetbeuiSelected) == FALSE
set NewNumDialoutNBF = 0
endif
Debug-Output "NewNumDialinNbf: "$(NewNumDialinNBF)
Debug-Output "NewNumDialoutNbf: "$(NewNumDialoutNBF)
; Determine the network access for each protocol. This controls if the
; remote client can access the entire network or just the RAS server
; when dialed in using the particular protocol.
set NetBiosGtwyEnabled = 0
set EnableIpRouter = 0
set EnableWanRouter = 0
Shell "" GetNetworkAccess
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "error shelling GetNetworkAccess."
goto ShellCodeError
endif
set NetBiosGtwyEnabled = $($R1)
set EnableIpRouter = $($R2)
set EnableWanRouter = $($R3)
; If the NetBiosGtwyEnabled is 0 (point to point connection), then map
; all dialin ports to dialout ports so that the bindings are proper for
; a point to point connection for NBF.
ifint $(NetBiosGtwyEnabled) == 0
ifstr(i) $(fNetbeuiAllowed) == TRUE
set-add NewNumDialoutNBF = $(NewNumDialoutNBF), $(NewNumDialinNBF)
set NewNumDialinNBF = 0
Debug-Output "Mapped dialin ports to dialout ports "$(NewNumDialoutNBF)
endif
endif
; compute the total number of dialin and dialout ports here.
set NewNumDialin = 0
set NewNumDialout = 0
set-add NewNumDialin = $(NewNumDialinNBF), $(NewNumDialinIP)
; since ipx uses one binding marked for dialin/dialout we need
; to make sure that IPX is configured for dialin for this computation
ifstr(i) $(fIpxAllowed) == TRUE
set-add NewNumDialin = $(NewNumDialin), $(NewNumDialinoutIPX)
endif
set-add NewNumDialout = $(NewNumDialoutNBF), $(NewNumDialoutIP)
; since ipx uses one binding marked for dialin/dialout we need
; to make sure that IPX is configured for dialout for this computation
ifstr(i) $(fIpxSelected) == TRUE
set-add NewNumDialout = $(NewNumDialout), $(NewNumDialinoutIPX)
endif
;
; If there is no netcard on the system and the user has configured a dialin
; port install the MSloopback adapter
ifstr(i) $(fNetcardInstalled) == FALSE
ifint $(NewNumDialin) != 0
; let the user know that we are installing the loopback adapter on
; behalf of the user
ifstr(i) $(!STF_INSTALL_MODE) != EXPRESS
read-syms InstallLoopback$(!STF_LANGUAGE)
Shell $(subroutninf) SetupMessage, $(!STF_LANGUAGE), "STATUS", $(Message)
else
set AddCopy = YES
set DoCopy = YES
set DoConfig = YES
; save !NTN_InstallMode and change it to install before shelling the
; inf file.
; save !STF_INSTALL_MODE and change it to EXPRESS before shelling the
; inf file - this triggers the silent mode of install.
set SaveNTN_InstallMode = $(!NTN_InstallMode)
set !NTN_InstallMode = install
Shell "oemnadlb.inf" InstallOption $(!STF_LANGUAGE) "LOOP" $(!STF_SRCDIR) $(AddCopy) $(DoCopy) $(DoConfig)
; restore the environment variables
set !NTN_InstallMode = $(SaveNTN_InstallMode)
Ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "OEMNSVRA.INF: INF oemnadlb.inf SHELL ERROR!"
read-syms InstallLoopback$(!STF_LANGUAGE)
Shell $(subroutninf) SetupMessage, $(!STF_LANGUAGE), "STATUS", $(Error)
Endif
EndIf
endif
endif
goto CommonCode
CommonCode = +
ifstr(i) $(OldVersionExisted) == $(TRUE)
ifstr(i) $(!NTN_InstallMode) == configure
goto WriteParameters
endif
endif
; if no Ras component was installed before, this is the first time
; installation
QueryListSize ListCount $(RasComponentsList)
ifint $(ListCount) == 0
goto FirstTimeInstall
else
ifstr(i) $(DoServer) == TRUE
ifstr(i) $(ClientInstalled) == FALSE
ifstr(i) $(AdminInstalled) == FALSE
set DoRas = TRUE
endif
set DoRasSvr = TRUE
set DoRasMan = TRUE
set DoNdisWan = TRUE
set DoRasAsyMac = TRUE
else
set DoRasSvr = TRUE
endif
set RasComponentsList = >($(RasComponentsList), $(RasServerOption))
endif
ifstr(i) $(DoClient) == TRUE
ifstr(i) $(ServerInstalled) == FALSE
ifstr(i) $(AdminInstalled) == FALSE
set DoRas = TRUE
endif
set DoRasMan = TRUE
set DoNdisWan = TRUE
set DoRasAsyMac = TRUE
endif
set RasComponentsList = >($(RasComponentsList), $(RasClientOption))
endif
ifstr(i) $(DoAdmin) == TRUE
ifstr(i) $(ServerInstalled) == FALSE
ifstr(i) $(ClientInstalled) == FALSE
set DoRas = TRUE
endif
endif
set RasComponentsList = >($(RasComponentsList), $(RasAdminOption))
endif
; we need to update the registry with the new component list
shell "" UpdateComponentsInstalled $(RasComponentsList) $(ProductKeyName)
goto FirstTimeInstall-1
endif
FirstTimeInstall =+
ifstr(i) $(DoServer) == TRUE
set DoRas = TRUE
set DoRasSvr = TRUE
set DoRasMan = TRUE
set DoRasAutodial = TRUE
set DoNdisWan = TRUE
set DoRasAsyMac = TRUE
set RasComponentsList = >($(RasComponentsList), $(RasServerOption))
endif
ifstr(i) $(DoClient) == TRUE
set DoRas = TRUE
set DoRasMan = TRUE
set DoRasAutodial = TRUE
set DoNdisWan = TRUE
set DoRasAsyMac = TRUE
set RasComponentsList = >($(RasComponentsList), $(RasClientOption))
endif
ifstr(i) $(DoAdmin) == TRUE
set DoRas = TRUE
set RasComponentsList = >($(RasComponentsList), $(RasAdminOption))
endif
FirstTimeInstall-1 = +
ifstr(i) $(DoRas) == TRUE
StartWait
read-syms StatusUpdatingRegistry$(!STF_LANGUAGE)
shell $(subroutninf) PushBillBoard NETSTATUSDLG $(CreatingRas)
Set BillboardVisible = 1
set ThisOption = RAS
Shell $(!UtilityInf), InstallSoftwareProduct, $(!Manufacturer),+
$(Product$(ThisOption)Name), $(!RasInfName)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "InstallSoftware bombed out."
goto ShellCodeError
endif
set RegistryErrorIndex = $($R0)
Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR"
Debug-Output "REGISTRY GOODAL"
CloseRegKey $($R1)
CloseRegKey $($R2)
goto fatalregistry
endif
;
; At this point:
; $R1 contains the product version key handle;
; $R2 contains the NetRules subkey handle;
Set SoftProductKey = $($R1)
Set SoftNetRuleKey = $($R2)
; set product key information in the registry
set NewValueList = +
{{Infname ,$(NoTitle),$(!REG_VT_SZ),$(!RasInfName)},+
{SoftwareType,$(NoTitle),$(!REG_VT_SZ),+
$(Product$(ThisOption)SvcType)},+
{Title,$(NoTitle),$(!REG_VT_SZ), $(Product$(ThisOption)Title)},+
{Description,$(NoTitle),$(!REG_VT_SZ),+
$(Product$(ThisOption)Description)},+
{PathName,$(NoTitle),$(!REG_VT_SZ),+
$(Product$(ThisOption)ImagePath)},+
{MajorVersion,$(NoTitle),$(!REG_VT_DWORD),$(!ProductMajorVersion)},+
{MinorVersion,$(NoTitle),$(!REG_VT_DWORD),$(!ProductMinorVersion)},+
{RasComponents,$(NoTitle),$(!REG_VT_MULTI_SZ),$(RasComponentsList)},+
{OperationsSupport,$(NoTitle),$(!REG_VT_DWORD),$(ProductOpSupport)}, +
{InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(!CurrentDate),1)}}
Shell $(!UtilityInf), AddValueList, $(SoftProductKey), $(NewValueList)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
CloseRegKey $(SoftProductKey)
CloseRegKey $(SoftNetRuleKey)
goto ShellCodeError
endif
set RegistryErrorIndex = $($R0)
CloseRegKey $(SoftProductKey)
Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR"
CloseRegKey $(SoftNetRuleKey)
goto fatalregistry
endif
; set netrules information in the registry
set NewValueList = +
{{class, $(NoTitle), $(!REG_VT_SZ), $(NetRule$(ThisOption)Class)},+
{type,$(NoTitle),$(!REG_VT_SZ),$(NetRule$(ThisOption)Type)},+
{use,$(NoTitle),$(!REG_VT_SZ),$(NetRule$(ThisOption)Use)}, +
{InfOption,$(NoTitle),$(!REG_VT_SZ),$(ThisOption)}, +
{Infname ,$(NoTitle),$(!REG_VT_SZ),$(!RasInfName)}}
Shell $(!UtilityInf), AddValueList, $(SoftNetRuleKey), $(NewValueList)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto ShellCodeError
endif
set RegistryErrorIndex = $($R0)
CloseRegKey $(SoftNetRuleKey)
Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR"
goto fatalregistry
endif
endif ; DoRas
ifstr(i) $(DoRasSvr) == TRUE
set ThisOption = RASSVR
set RasSpecificString = $(Product$(ThisOption)Name)
Shell $(!UtilityInf), AddSoftwareComponent, $(!Manufacturer), +
$(Product$(ThisOption)Name), $(Product$(ThisOption)Name), +
$(Product$(ThisOption)DisplayName), +
$(!RasInfName), $(Product$(ThisOption)ImagePath),+
"service", "Network", {"LanmanServer","RasMan"}, "", +
$(!RasMsgDll), $(!RasEventTypeSupported)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "DoRasSvr: AddSoftware bombed out"
goto ShellCodeError
endif
set RegistryErrorIndex = $($R0)
Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR"
Debug-Output "DoRasSvr: Registry Error "$(RegistryErrorIndex)
CloseRegKey $($R1)
CloseRegKey $($R2)
CloseRegKey $($R3)
CloseRegKey $($R4)
CloseRegKey $($R5)
goto fatalregistry
endif
;
; At this point:
; $R1 contains the product version key handle;
; $R2 contains the NetRules subkey handle;
; $R3 contains the new Services key handle; and
; $R4 contains the Parameters key
; $R5 contains the Linkage key
;
Set SoftProductKey = $($R1)
Set SoftNetRuleKey = $($R2)
set SoftServiceKey = $($R3)
Set SoftParamsKey = $($R4)
Set SoftLinkageKey = $($R5)
; set product key information in the registry
set NewValueList = +
{{Infname ,$(NoTitle),$(!REG_VT_SZ),$(!RasInfName)},+
{ServiceName,$(NoTitle),$(!REG_VT_SZ),+
$(Product$(ThisOption)Name)},+
{SoftwareType,$(NoTitle),$(!REG_VT_SZ),+
$(Product$(ThisOption)SvcType)},+
{Title,$(NoTitle),$(!REG_VT_SZ),$(Product$(ThisOption)Title)},+
{Description,$(NoTitle),$(!REG_VT_SZ),+
$(Product$(ThisOption)Description)},+
{PathName,$(NoTitle),$(!REG_VT_SZ),+
$(Product$(ThisOption)ImagePath)},+
{MajorVersion,$(NoTitle),$(!REG_VT_DWORD),$(!ProductMajorVersion)},+
{MinorVersion,$(NoTitle),$(!REG_VT_DWORD),$(!ProductMinorVersion)},+
{InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(!CurrentDate),1)},+
{Hidden,$(NoTitle),$(!REG_VT_DWORD),$(!HideComponent)}}
Shell $(!UtilityInf), AddValueList, $(SoftProductKey), $(NewValueList)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "DoRasSvr:product: AddValueList bombed out"
goto ShellCodeError
endif
set RegistryErrorIndex = $($R0)
CloseRegKey $(SoftProductKey)
Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR"
Debug-Output "DoRasSvr: Registry Error "$(RegistryErrorIndex)
CloseRegKey $(SoftServiceKey)
CloseRegKey $(SoftNetRuleKey)
CloseRegKey $(SoftLinkageKey)
CloseRegKey $(SoftParamsKey)
goto fatalregistry
endif
; set netrules information in the registry
set NewValueList = +
{{class, $(NoTitle), $(!REG_VT_SZ), $(NetRule$(ThisOption)Class)},+
{type,$(NoTitle),$(!REG_VT_SZ),$(NetRule$(ThisOption)Type)},+
{use,$(NoTitle),$(!REG_VT_SZ),$(NetRule$(ThisOption)Use)}, +
{InfOption,$(NoTitle),$(!REG_VT_SZ),$(ThisOption)}, +
{bindform,$(NoTitle),$(!REG_VT_SZ),+
$(NetRule$(ThisOption)BindForm)}, +
{bindable,$(NoTitle),$(!REG_VT_MULTI_SZ),+
$(NetRule$(ThisOption)Bindable)}, +
{Infname ,$(NoTitle),$(!REG_VT_SZ),$(!RasInfName)}}
Shell $(!UtilityInf), AddValueList, $(SoftNetRuleKey), $(NewValueList)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "DoRasSvr:netrules: AddValueList bombed out"
goto ShellCodeError
endif
set RegistryErrorIndex = $($R0)
CloseRegKey $(SoftNetRuleKey)
Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR"
CloseRegKey $(SoftServiceKey)
CloseRegKey $(SoftLinkageKey)
CloseRegKey $(SoftParamsKey)
Debug-Output "DoRasSvr: Registry Error "$(RegistryErrorIndex)
goto fatalregistry
endif
; Set OtherDependencies so that NCPA will generate the proper
; DependOnService value.
; Don't set the netlogon dependency, because there is no
; netlogon service in NT Cairo
;; set Netlogon dependency only for Advanced servers
; Also add NetBIOS dependency if, NetBIOS is installed
set RasDependencies = {"LanmanServer","RasMan"}
OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\NetBios" $(!MAXIMUM_ALLOWED) KeyNetBios
ifstr $(KeyNetBios) != $(KeyNull)
set RasDependencies = >($(RasDependencies),"NetBios")
endif
Debug-Output "DoRasSvr: Adding RasDependencies "$(RasDependencies)
set NewValueList = +
{{OtherDependencies, $(NoTitle), $(!REG_VT_MULTI_SZ),+
$(RasDependencies)}}
Shell $(!UtilityInf), AddValueList, $(SoftLinkageKey), $(NewValueList)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "DoRasSvr:Linkage: AddValueList bombed out"
goto ShellCodeError
endif
set RegistryErrorIndex = $($R0)
CloseRegKey $(SoftLinkageKey)
Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR"
CloseRegKey $(SoftServiceKey)
Debug-Output "DoRasSvr: Registry Error "$(RegistryErrorIndex)
goto fatalregistry
endif
; create default parameters
set NewValueList = +
{{AuthenticateRetries, $(NoTitle), $(!REG_VT_DWORD), 2},+
{AuthenticateTime, $(NoTitle), $(!REG_VT_DWORD), 120},+
{Autodisconnect, $(NoTitle), $(!REG_VT_DWORD), 20},+
{EnableAudit, $(NoTitle), $(!REG_VT_DWORD), 1},+
{CallbackTime, $(NoTitle), $(!REG_VT_DWORD), 2}}
Shell $(!UtilityInf), AddValueList, $(SoftParamsKey), $(NewValueList)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "AddValueList bombed out"
goto ShellCodeError
endif
set RegistryErrorIndex = $($R0)
Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR"
CloseRegKey $(SoftServiceKey)
goto fatalregistry
endif
OpenRegKey $(SoftParamsKey) "" "NetBiosGateway" $(!MAXIMUM_ALLOWED) KeyNetbiosGtwy
ifstr $(KeyNtbiosGtwy) == $(KeyNull)
CreateRegKey $(SoftParamsKey) {"NetBiosGateway",$(NoTitle),GenericClass} "" $(!MAXIMUM_ALLOWED) "" KeyNetbiosGtwy
OpenRegKey $(SoftParamsKey) "" "NetBiosGateway" $(!MAXIMUM_ALLOWED) KeyNetbiosGtwy
endif
set NewValueList = +
{{EnableBroadcast, $(NoTitle), $(!REG_VT_DWORD), 0},+
{EnableNetbiosSessionsAuditing, $(NoTitle), $(!REG_VT_DWORD), 0},+
{MaxDynMem, $(NoTitle), $(!REG_VT_DWORD), 655350},+
{MaxNames, $(NoTitle), $(!REG_VT_DWORD), 255},+
{MaxSessions, $(NoTitle), $(!REG_VT_DWORD), 255},+
{MulticastForwardRate, $(NoTitle), $(!REG_VT_DWORD), 5},+
{SizWorkbuf, $(NoTitle), $(!REG_VT_DWORD), 4500},+
{RemoteListen, $(NoTitle), $(!REG_VT_DWORD), 1},+
{NameUpdateTime, $(NoTitle), $(!REG_VT_DWORD), 120},+
{MaxDgBufferedPerGroupName, $(NoTitle), $(!REG_VT_DWORD), 10},+
{RcvDgSubmittedPerGroupName, $(NoTitle), $(!REG_VT_DWORD), 3},+
{DisableMcastFwdWhenSessionTraffic, $(NoTitle), $(!REG_VT_DWORD), 1},+
{MaxBcastDgBuffered, $(NoTitle), $(!REG_VT_DWORD), 32},+
{NumRecvQueryIndications, $(NoTitle), $(!REG_VT_DWORD), 3}}
Shell $(!UtilityInf), AddValueList, $(KeyNetbiosGtwy), $(NewValueList)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "AddValueList bombed out"
goto ShellCodeError
endif
set RegistryErrorIndex = $($R0)
Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR"
CloseRegKey $(SoftServiceKey)
goto fatalregistry
endif
CloseRegKey $(KeyNetbiosGtwy)
CloseRegKey $(SoftParamsKey)
; Add the performance data to the remoteaccess\performance service key
; and load the perf counters to the registry.
Shell "" UpdatePerfmonInfoHelper $(SoftServiceKey)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "error shelling UpdatePerfmonInfoHelper."
goto ShellCodeError
endif
Ifstr(i) $($R0) != STATUS_SUCCESSFUL
Debug-Output "error returned by UpdatePerfmonInfoHelper."
endif
CloseRegKey $(SoftServiceKey)
endif ; DoRasSvr
InstallRasMan = +
ifstr(i) $(DoRasMan) == TRUE
set ThisOption = RASMAN
set RasSpecificString = $(Product$(ThisOption)Name)
Shell $(!UtilityInf), AddSoftwareComponent, $(!Manufacturer), +
$(Product$(ThisOption)Name), $(Product$(ThisOption)Name), +
$(Product$(ThisOption)DisplayName), +
$(!RasInfName), $(Product$(ThisOption)ImagePath), "serviceshare",+
"Network", {}, "", $(!RasMsgDll), $(!RasEventTypeSupported)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "AddSoftware bombed out"
goto ShellCodeError
endif
set RegistryErrorIndex = $($R0)
Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR"
CloseRegKey $($R1)
CloseRegKey $($R2)
CloseRegKey $($R3)
CloseRegKey $($R4)
CloseRegKey $($R5)
goto fatalregistry
endif
;
; At this point:
; $R1 contains the product version key handle;
; $R2 contains the NetRules subkey handle;
; $R3 contains the new Services key handle; and
; $R4 contains the Parameters key
; $R5 contains the Linkage key
;
Set SoftProductKey = $($R1)
Set SoftNetRuleKey = $($R2)
CloseRegKey $($R3)
Set SoftParamsKey = $($R4)
CloseRegKey $($R5)
; set product key information in the registry
set NewValueList = +
{{Infname ,$(NoTitle),$(!REG_VT_SZ),$(!RasInfName)},+
{ServiceName,$(NoTitle),$(!REG_VT_SZ),+
$(Product$(ThisOption)Name)},+
{SoftwareType,$(NoTitle),$(!REG_VT_SZ),+
$(Product$(ThisOption)SvcType)},+
{Title,$(NoTitle),$(!REG_VT_SZ),$(Product$(ThisOption)Title)},+
{Description,$(NoTitle),$(!REG_VT_SZ),+
$(Product$(ThisOption)Description)},+
{PathName,$(NoTitle),$(!REG_VT_SZ),+
$(Product$(ThisOption)ImagePath)},+
{MajorVersion,$(NoTitle),$(!REG_VT_DWORD),$(!ProductMajorVersion)},+
{MinorVersion,$(NoTitle),$(!REG_VT_DWORD),$(!ProductMinorVersion)},+
{Review, $(NoTitle), $(!REG_VT_DWORD), $(fReviewBindings)}, +
{InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(!CurrentDate),1)},+
{Hidden,$(NoTitle),$(!REG_VT_DWORD),$(!HideComponent)}}
Shell $(!UtilityInf), AddValueList, $(SoftProductKey), $(NewValueList)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "AddValueList bombed out"
goto ShellCodeError
endif
set RegistryErrorIndex = $($R0)
CloseRegKey $(SoftProductKey)
Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR"
CloseRegKey $(SoftNetRuleKey)
CloseRegKey $(SoftParamsKey)
goto fatalregistry
endif
; set netrules information in the registry
set NewValueList = +
{{class, $(NoTitle), $(!REG_VT_SZ), $(NetRule$(ThisOption)Class)},+
{type,$(NoTitle),$(!REG_VT_SZ),$(NetRule$(ThisOption)Type)},+
{use,$(NoTitle),$(!REG_VT_SZ),$(NetRule$(ThisOption)Use)}, +
{bindform,$(NoTitle),$(!REG_VT_SZ),+
$(NetRule$(ThisOption)BindForm)}, +
{bindable,$(NoTitle),$(!REG_VT_SZ),+
$(NetRule$(ThisOption)Bindable)}, +
{InfOption,$(NoTitle),$(!REG_VT_SZ),$(ThisOption)}, +
{Infname ,$(NoTitle),$(!REG_VT_SZ),$(!RasInfName)}}
Shell $(!UtilityInf), AddValueList, $(SoftNetRuleKey), $(NewValueList)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "AddValueList bombed out"
goto ShellCodeError
endif
set RegistryErrorIndex = $($R0)
CloseRegKey $(SoftNetRuleKey)
Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR"
goto fatalregistry
endif
set NewValueList = {{Logging, $(NoTitle), $(!REG_VT_DWORD), 0}}
Shell $(!UtilityInf), AddValueList, $(SoftParamsKey), $(NewValueList)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "AddValueList bombed out"
goto ShellCodeError
endif
set RegistryErrorIndex = $($R0)
Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR"
goto fatalregistry
endif
CloseRegKey $(SoftParamsKey)
; Add RasMan dependency on TapiSrv, a new service
Shell "" AddServiceDependency "RasMan" "tapisrv"
endif ; DoRasMan
ifstr(i) $(DoRasAutodial) == TRUE
set ThisOption = RASAUTODIAL
set RasSpecificString = $(!Product$(ThisOption)Name)
Shell "" InstallSoftwareAndService $(ThisOption)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "Error shelling InstallSoftwareAndService for "$(ThisOption)
goto ShellCodeError
endif
ifstr(i) $($R0) != STATUS_SUCCESSFUL
Debug-Output "Error from InstallSoftwareAndService for"$(ThisOption)
goto end
endif
; Disable the RasAuto service if this is not a NT Workstation
; Also disable the RasAuto service if there is no dialout port configured
; RamC 6/13/96 don't disable RasAuto for NT Server any more because
; redial-on-link-failure is implemented in autodial service and it should
; be enabled if one or more dialout ports are configured.
set DisableAutoDial = FALSE
ifint $(NewNumDialout) == 0
set DisableAutoDial = TRUE
; else-ifstr(i) $(!STF_PRODUCT) != "WINNT"
; set DisableAutoDial = TRUE
endif
ifstr(i) $(DisableAutoDial) == TRUE
OpenRegKey $(!REG_H_LOCAL) "" $(!RasAutodialKeyName) $(!MAXIMUM_ALLOWED) KeyAutodial
ifstr $(KeyAutodial) == $(KeyNull)
Debug-Output "OEMNSVRA.INF: could not open RasAuto key"
else
SetRegValue $(KeyAutodial) {Start, $(NoTitle), $(!REG_VT_DWORD), 4}
CloseRegKey $(KeyAutodial)
endif
endif
; install the RasAcd service
Shell "" InstallRasAcdService
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "Error shelling InstallRasAcdService"
goto ShellCodeError
endif
ifstr(i) $($R0) != STATUS_SUCCESSFUL
Debug-Output "Error from InstallRasAcdService"
goto end
endif
; Make RasAuto dependent on TapiSrv, a new service
Shell "" AddServiceDependency "RasAuto" "RasMan"
endif ; DoRasAutodial
ifstr(i) $(DoNdisWan) == TRUE
set ThisOption = NDISWAN
set RasSpecificString = $(Product$(ThisOption)Name)
Shell $(!UtilityInf), AddSoftwareComponent, $(!Manufacturer), +
$(!Product$(ThisOption)Name), $(!Product$(ThisOption)Name), +
$(!Product$(ThisOption)DisplayName), +
$(!RasInfName), $(!Product$(ThisOption)ImagePath),+
"kernelautostart", "NDISWAN", {}, "", +
$(!RasMsgDll), $(!RasEventTypeSupported)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "AddSoftware bombed out"
goto ShellCodeError
endif
set RegistryErrorIndex = $($R0)
Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR"
CloseRegKey $($R1)
CloseRegKey $($R2)
CloseRegKey $($R3)
CloseRegKey $($R4)
CloseRegKey $($R5)
goto fatalregistry
endif
;
; At this point:
; $R1 contains the product version key handle;
; $R2 contains the NetRules subkey handle;
; $R3 contains the new Services key handle; and
; $R4 contains the Parameters key
; $R5 contains the Linkage key
;
Set SoftProductKey = $($R1)
Set SoftNetRuleKey = $($R2)
CloseRegKey $($R3)
CloseRegKey $($R4)
CloseRegKey $($R5)
; set product key information in the registry
set NewValueList = +
{{Infname ,$(NoTitle),$(!REG_VT_SZ),$(!RasInfName)},+
{ServiceName,$(NoTitle),$(!REG_VT_SZ),+
$(!Product$(ThisOption)Name)},+
{SoftwareType,$(NoTitle),$(!REG_VT_SZ),+
$(Product$(ThisOption)Type)},+
{Title,$(NoTitle),$(!REG_VT_SZ),$(!Product$(ThisOption)Title)},+
{Description,$(NoTitle),$(!REG_VT_SZ),+
$(!Product$(ThisOption)Description)},+
{PathName,$(NoTitle),$(!REG_VT_SZ),+
$(!Product$(ThisOption)ImagePath)},+
{MajorVersion,$(NoTitle),$(!REG_VT_DWORD),$(!ProductMajorVersion)},+
{MinorVersion,$(NoTitle),$(!REG_VT_DWORD),$(!ProductMinorVersion)},+
{BindControl,$(NoTitle),$(!REG_VT_DWORD),$(HideBindings)},+
{InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(!CurrentDate),1)},+
{Hidden,$(NoTitle),$(!REG_VT_DWORD),$(!HideComponent)}}
Shell $(!UtilityInf), AddValueList, $(SoftProductKey), $(NewValueList)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "AddValueList bombed out"
goto ShellCodeError
endif
set RegistryErrorIndex = $($R0)
CloseRegKey $(SoftProductKey)
Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR"
CloseRegKey $(SoftNetRuleKey)
goto fatalregistry
endif
; set netrules information in the registry
set NewValueList = +
{{class, $(NoTitle), $(!REG_VT_MULTI_SZ), $(!NetRule$(ThisOption)Class)},+
{type,$(NoTitle),$(!REG_VT_SZ),$(!NetRule$(ThisOption)Type)},+
{use,$(NoTitle),$(!REG_VT_SZ),$(NetRule$(ThisOption)Use)}, +
{bindform,$(NoTitle),$(!REG_VT_SZ),+
$(!NetRule$(ThisOption)BindForm)}, +
{bindable,$(NoTitle),$(!REG_VT_MULTI_SZ),+
$(!NetRule$(ThisOption)Bindable)}, +
{InfOption,$(NoTitle),$(!REG_VT_SZ),$(ThisOption)}, +
{Infname ,$(NoTitle),$(!REG_VT_SZ),$(!RasInfName)}}
Shell $(!UtilityInf), AddValueList, $(SoftNetRuleKey), $(NewValueList)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "AddValueList bombed out"
goto ShellCodeError
endif
set RegistryErrorIndex = $($R0)
CloseRegKey $(SoftNetRuleKey)
Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR"
goto fatalregistry
endif
; Create an adapter to allow Blood Hound (sniffer) to bind to it.
; this is always created even if blood hound is not installed.
Shell "" InstallNdisWanBHAdapter
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "Cannot add NdisWan Blood hound adapter"
goto ShellCodeError
endif
ifstr(i) $($R0) != STATUS_SUCCESSFUL
set RegistryErrorIndex = $($R0)
Debug-Output "Error installing NdisWan Blood hound adapter"
goto fatalregistry
endif
; Add NDISWAN to the ServiceGroupOrder so that all NDIS components
; load before NdisWan driver.
Shell "" AddNDISWANToServiceGroupOrder
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "Cannot add NDISWAN to ServiceGroupOrder"
goto ShellCodeError
endif
DoNdisWanEnd = +
endif ; DoNdisWan
ifstr(i) $(DoRasAsyMac) == TRUE
set ThisOption = RASASYMAC
set RasSpecificString = $(Product$(ThisOption)Name)
; If a serial port is configured, enable Asymac service else disable it
ifstr(i) $(fSerialInstalled) == TRUE
set AsySoftwareType = "kernelautostart"
else-ifstr(i) $(fOtherInstalled) == TRUE
set AsySoftwareType = "kernelautostart"
else-ifstr(i) $(fUnimodemInstalled) == TRUE
set AsySoftwareType = "kernelautostart"
else
set AsySoftwareType = "kerneldisable"
endif
Shell $(!UtilityInf), AddSoftwareComponent, $(!Manufacturer), +
$(Product$(ThisOption)Name), $(Product$(ThisOption)Name), +
$(Product$(ThisOption)DisplayName), +
$(!RasInfName), $(Product$(ThisOption)ImagePath), $(AsySoftwareType),+
"NDIS", {}, "", $(!RasMsgDll), $(!RasEventTypeSupported)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "AddSoftware bombed out"
goto ShellCodeError
endif
set RegistryErrorIndex = $($R0)
Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR"
CloseRegKey $($R1)
CloseRegKey $($R2)
CloseRegKey $($R3)
CloseRegKey $($R4)
CloseRegKey $($R5)
goto fatalregistry
endif
;
; At this point:
; $R1 contains the product version key handle;
; $R2 contains the NetRules subkey handle;
; $R3 contains the new Services key handle; and
; $R4 contains the Parameters key
; $R5 contains the Linkage key
;
Set SoftProductKey = $($R1)
Set SoftNetRuleKey = $($R2)
CloseRegKey $($R3)
CloseRegKey $($R4)
CloseRegKey $($R5)
; set product key information in the registry
set NewValueList = +
{{Infname ,$(NoTitle),$(!REG_VT_SZ),$(!RasInfName)},+
{ServiceName,$(NoTitle),$(!REG_VT_SZ),+
$(Product$(ThisOption)Name)},+
{SoftwareType,$(NoTitle),$(!REG_VT_SZ),+
$(Product$(ThisOption)Type)},+
{Title,$(NoTitle),$(!REG_VT_SZ),$(Product$(ThisOption)Title)},+
{Description,$(NoTitle),$(!REG_VT_SZ),+
$(Product$(ThisOption)Description)},+
{PathName,$(NoTitle),$(!REG_VT_SZ),+
$(Product$(ThisOption)ImagePath)},+
{MajorVersion,$(NoTitle),$(!REG_VT_DWORD),$(!ProductMajorVersion)},+
{MinorVersion,$(NoTitle),$(!REG_VT_DWORD),$(!ProductMinorVersion)},+
{BindControl,$(NoTitle),$(!REG_VT_DWORD),$(HideBindings)},+
{InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(!CurrentDate),1)},+
{Hidden,$(NoTitle),$(!REG_VT_DWORD),$(!HideComponent)}}
Shell $(!UtilityInf), AddValueList, $(SoftProductKey), $(NewValueList)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "AddValueList bombed out"
goto ShellCodeError
endif
set RegistryErrorIndex = $($R0)
CloseRegKey $(SoftProductKey)
Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR"
CloseRegKey $(SoftNetRuleKey)
goto fatalregistry
endif
; set netrules information in the registry
set NewValueList = +
{{class, $(NoTitle), $(!REG_VT_MULTI_SZ), $(NetRule$(ThisOption)Class)},+
{type,$(NoTitle),$(!REG_VT_SZ),$(NetRule$(ThisOption)Type)},+
{use,$(NoTitle),$(!REG_VT_SZ),$(NetRule$(ThisOption)Use)}, +
{bindform,$(NoTitle),$(!REG_VT_SZ),+
$(NetRule$(ThisOption)BindForm)}, +
{bindable,$(NoTitle),$(!REG_VT_MULTI_SZ),+
$(!NetRule$(ThisOption)Bindable)}, +
{InfOption,$(NoTitle),$(!REG_VT_SZ),$(ThisOption)}, +
{Infname ,$(NoTitle),$(!REG_VT_SZ),$(!RasInfName)}}
Shell $(!UtilityInf), AddValueList, $(SoftNetRuleKey), $(NewValueList)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "AddValueList bombed out"
goto ShellCodeError
endif
set RegistryErrorIndex = $($R0)
CloseRegKey $(SoftNetRuleKey)
Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR"
goto fatalregistry
endif
; Create the HARDWARE\Netcard region and its corresponding service
Shell $(!UtilityInf), AddHardwareComponent, +
$(Product$(ThisOption)Name),$(!RasInfName),+
$(Product$(ThisOption)KeyName)
ifint $($R4) != -1
Set !NETCARD_LIST = >($(!NETCARD_LIST), +
{$(Product$(ThisOption)Name),+
$(!NetworkCardKeyName)"\"$($R4)})
endif
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "Cannot add hardware component"
goto ShellCodeError
endif
set RegistryErrorIndex = $($R0)
Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
Debug-Output "Registry error: add hardware component"
CloseRegKey $($R1)
CloseRegKey $($R2)
CloseRegKey $($R3)
goto fatalregistry
endif
; At this point:
; $R1 Registry key variable for HARDWARE\Netcard\(n)
; $R2 Registry key variable for HARDWARE\Netcard\(n)\\NetRules
; $R3 Registry key handle for <service>\Parameters key
; $R4 Adapter number assigned to adapter
; $R5 Service name generated by combining svc name with adapter
; number
set KeyNetcard = $($R1)
set KeyParameters = $($R3)
set KeyAdapterRules = $($R2)
set AdapterNumber = $($R4)
set NewValueList = +
{{Manufacturer,$(NoTitle),$(!REG_VT_SZ),$(!Manufacturer)},+
{Title,$(NoTitle),$(!REG_VT_SZ),+
"["$($R4)"] "$(Product$(ThisOption)Title)},+
{Description,$(NoTitle),$(!REG_VT_SZ),+
$(Product$(ThisOption)Description)},+
{ProductName,$(NoTitle),$(!REG_VT_SZ),+
$(Product$(ThisOption)Name)},+
{ServiceName,$(NoTitle),$(!REG_VT_SZ),$($R5)},+
{InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(!CurrentDate),1)},+
{Hidden,$(NoTitle),$(!REG_VT_DWORD),$(!HideComponent)}}
Shell $(!UtilityInf), AddValueList, $(KeyNetcard), $(NewValueList)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "ShellCode error"
goto ShellCodeError
endif
CloseRegKey $(KeyNetcard)
set TempProdName = """"$(Product$(ThisOption)Name)$(AdapterNumber)""""
set TempBindForm = $(TempProdName)$(NetRuleHardware$(ThisOption)BindForm)
set NewValueList = +
{{type,$(NoTitle),$(!REG_VT_SZ),+
$(NetRuleHardware$(ThisOption)Type)},+
{bindform,$(NoTitle),$(!REG_VT_SZ),$(TempBindForm)}, +
{class,$(NoTitle),$(!REG_VT_MULTI_SZ),+
$(NetRuleHardware$(ThisOption)Class)}, +
{InfOption,$(NoTitle),$(!REG_VT_SZ),$(ThisOption)}, +
{Infname ,$(NoTitle),$(!REG_VT_SZ),$(!RasInfName)}}
Shell $(!UtilityInf), AddValueList, $(KeyAdapterRules), $(NewValueList)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "ShellCode error."
goto ShellCodeError
endif
set RegistryErrorIndex = $($R0)
Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
Debug-Output "Resgitry error: add value list."
CloseRegKey $(KeyParameters)
CloseRegKey $(KeyAdapterRules)
goto fatalregistry
endif
CloseRegKey $(KeyAdapterRules)
CloseRegKey $(KeyParameters)
endif ; DoRasAsyMac
; Always install the connection wrapper
Shell "" InstallNdisTapiService
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "Error shelling InstallNdisTapiService "
goto ShellCodeError
endif
ifstr(i) $($R0) != STATUS_SUCCESSFUL
set RegistryErrorIndex = $($R0)
Debug-Output "Error installing NdisTapi Service"
goto fatalregistry
endif
;EndCommonCode
goto WriteParameters
WriteParameters = +
; The various parameters for the RAS components are written to the
; registry in this section.
ifstr(i) $(DoAdminOnly) == TRUE
goto WriteParametersOver
endif
StartWait
read-syms StatusUpdatingRegistry$(!STF_LANGUAGE)
shell $(subroutninf) PushBillBoard NETSTATUSDLG $(WritingRasParams)
Set BillboardVisible = 1
Debug-Output "Writing Registry Parameters."
; Write Ras Server parameters
; check if server is installed
ifstr(i) $(DoServer) != TRUE
goto WriteRasMan
endif
; Remote Access Service should be set to autostart only if there is
; at least one dialin port and the server is Advanced.
Debug-Output "OEMNSVRA.INF: Product type "$(!STF_PRODUCT)
Debug-Output "OEMNSVRA.INF: Total dialin ports "$(NewNumDialin)
; default RemoteAccess start type to Demand Start
set RasStartValue = 3
ifstr(i) $(!STF_PRODUCT) != "WINNT"
ifint $(NewNumDialin) != 0
; if this is an advanced server and there is at least one
; dialin port, set start type to Auto Start
set RasStartValue = 2
endif
endif
set KeySvr = $(KeyNull)
OpenRegKey $(!REG_H_LOCAL) "" $(RasSvrKeyName) $(!MAXIMUM_ALLOWED) KeySvr
ifstr $(KeySvr) == $(KeyNull)
Debug-Output "OEMNSVRA.INF: could not open RemoteAccess key"
else
; if the user previously set the start type, then use that value
; otherwise, set to our defaults
ifstr(i) $(!NTN_InstallMode) != install
GetRegValue $(KeySvr) "Start" StartList
ifint $(RegLastError) == 0
set RasStartValue = *($(StartList), 4)
endif
endif
; if there are no dialin ports configured then change the start type
; to Demand only if the service is not currently disabled.
ifint $(NewNumDialin) == 0
ifint $(RasStartValue) != 4
set RasStartValue = 3
endif
endif
Debug-Output "OEMNSVRA.INF: Setting RemoteAccess start type to "$(RasStartValue)
SetRegValue $(KeySvr) {Start,$(NoTitle),$(!REG_VT_DWORD),$(RasStartValue)}
CloseRegKey $(KeySvr)
endif
OpenRegKey $(!REG_H_LOCAL) "" $(RasSvrParamKeyName) $(!MAXIMUM_ALLOWED) KeySrvParams
ifstr $(KeySrvParams) == $(KeyNull)
Debug-Output "OEMNSVRA.INF: could not open RasSvr Params key"
set RegistryErrorIndex = UNABLE_OPEN_SERVICE_PARAMETERS
goto fatalregistry
endif
set NewValueList = +
{{NetBiosGatewayEnabled, $(NoTitle), $(!REG_VT_DWORD), $(NetBiosGtwyEnabled)}}
Shell $(!UtilityInf), AddValueList, $(KeySrvParams), $(NewValueList)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "AddValueList bombed out"
goto ShellCodeError
endif
set RegistryErrorIndex = $($R0)
Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR"
goto fatalregistry
endif
CloseRegKey $(KeySrvParams)
WriteRasMan = +
; Write RasMan parameters
OpenRegKey $(!REG_H_LOCAL) "" $(RasManParamKeyName) $(!MAXIMUM_ALLOWED) KeyRasManParams
ifstr $(KeyRasManParams) == $(KeyNull)
Debug-Output "OEMNSVRA.INF: could not open RasMan Params key"
set RegistryErrorIndex = UNABLE_OPEN_SERVICE_PARAMETERS
goto fatalregistry
endif
; set the appropriate media dll name based on what media type is installed
; on the system.
; rasser is the name of the media DLL - rasser.dll
set MediaValue = {"rastapi"}
ifstr(i) $(fSerialInstalled) == TRUE
set MediaValue = >($(MediaValue), "rasser")
endif
; now determine if any other devices are configured for RAS and add
; those medias as well to the RasMan Medias parameter.
set OtherConfigKey = $(!NTN_SoftwareBase)"\"$(!Manufacturer)"\"$(ProductRASName)"\OTHER DEVICES\CONFIGURED"
set KeyOtherMedia = $(KeyNull)
OpenRegKey $(!REG_H_LOCAL) "" $(OtherConfigKey) $(!MAXIMUM_ALLOWED) +
KeyOtherMedia
ifstr $(KeyOtherMedia) != $(KeyNull)
EnumRegKey $(KeyOtherMedia) OtherList
Debug-Output "oemnsvra.inf: Other Media list "$(OtherList)
ForListDo $(OtherList)
set MediaName = *($($),1)
set KeyMedia = $(KeyNull)
OpenRegKey $(KeyOtherMedia) "" $(MediaName) $(!MAXIMUM_ALLOWED) +
KeyMedia
ifstr $(KeyMedia) != $(KeyNull)
GetRegValue $(KeyMedia), "MediaType" MediaType
Ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
set MediaTypeValue = *($(MediaType),4)
set MediaValue = >($(MediaValue), $(MediaTypeValue))
endif
CloseRegKey $(KeyMedia)
endif
EndForListDo
CloseRegKey $(KeyOtherMedia)
else
Debug-Output "oemnsvra.inf: Other Media not configured"
endif
Debug-Output "Adding Medias as "$(MediaValue)
set NewValueList = {{Medias,$(NoTitle),$(!REG_VT_MULTI_SZ),$(MediaValue)}}
Shell $(!UtilityInf), AddValueList, $(KeyRasManParams), $(NewValueList)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "AddValueList bombed out"
goto ShellCodeError
endif
set RegistryErrorIndex = $($R0)
Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR"
goto fatalregistry
endif
CloseRegKey $(KeyRasManParams)
WriteNdisWan = +
set PrevNumPorts = 0
set PrevNumDialin = 0
set PrevNumDialout = 0
; determine the number of ports currently configured
OpenRegKey $(!REG_H_LOCAL) "" $(RasAsyMacParamKeyName) $(!MAXIMUM_ALLOWED) KeyMacParams
ifstr $(KeyMacParams) == $(KeyNull)
ifstr(i) $(!NTN_InstallMode) == configure
Debug-Output "OEMNSVRA.INF: could not open AsyncMac Params key"
set RegistryErrorIndex = UNABLE_OPEN_SERVICE_PARAMETERS
goto fatalregistry
endif
goto WriteNdisWan1
endif
GetRegValue $(KeyMacParams), "Ports" PortsInfo
GetRegValue $(KeyMacParams), "DialinNBF" DialinNBFInfo
GetRegValue $(KeyMacParams), "DialoutNBF" DialoutNBFInfo
GetRegValue $(KeyMacParams), "DialinIP" DialinIPInfo
GetRegValue $(KeyMacParams), "DialoutIP" DialoutIPInfo
GetRegValue $(KeyMacParams), "DialinoutIPX" DialinoutIPXInfo
set PrevNumPorts = *($(PortsInfo), 4)
set PrevNumDialinNBF = *($(DialinNBFInfo), 4)
set PrevNumDialoutNBF = *($(DialoutNBFInfo), 4)
set PrevNumDialinIP = *($(DialinIPInfo), 4)
set PrevNumDialoutIP = *($(DialoutIPInfo), 4)
set PrevNumDialinoutIPX = *($(DialinoutIPXInfo), 4)
Debug-Output "Ports currently configured "$(PrevNumPorts)
Debug-Output "Ports currently dialin NBF "$(PrevNumDialinNBF)
Debug-Output "Ports currently dialout NBF "$(PrevNumDialoutNBF)
Debug-Output "Ports currently dialin IP "$(PrevNumDialinIP)
Debug-Output "Ports currently diaout IP "$(PrevNumDialoutIP)
Debug-Output "Ports currently diainout IPX "$(PrevNumDialinoutIPX)
CloseRegKey $(KeyMacParams)
WriteNdisWan1 =+
; Write NdisWan parameters and add/delete netcards
set ThisOption = NDISWAN
set RasSpecificString = $(!Product$(ThisOption)Name)
; Always update the EndPoints
OpenRegKey $(!REG_H_LOCAL) "" $(NdisWanParamKeyName) $(!MAXIMUM_ALLOWED) KeyHubParams
ifstr $(KeyHubParams) == $(KeyNull)
Debug-Output "OEMNSVRA.INF: could not open NdisWan Params key"
set RegistryErrorIndex = UNABLE_OPEN_SERVICE_PARAMETERS
goto fatalregistry
endif
set NewValueList = +
{{EndPoints, $(NoTitle), $(!REG_VT_MULTI_SZ), $(NewNumPortsList)}}
Shell $(!UtilityInf), AddValueList, $(KeyHubParams), $(NewValueList)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "AddValueList bombed out"
goto ShellCodeError
endif
set RegistryErrorIndex = $($R0)
CloseRegKey $(KeyHubParams)
Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR"
goto fatalregistry
endif
; if there is no change in the number of dialin/dialout ports
; just update the RasMac section
ifint $(PrevNumDialinNBF) == $(NewNumDialinNBF)
ifint $(PrevNumDialoutNBF) == $(NewNumDialoutNBF)
ifint $(PrevNumDialinIP) == $(NewNumDialinIP)
ifint $(PrevNumDialoutIP) == $(NewNumDialoutIP)
ifint $(PrevNumDialinoutIPX) == $(NewNumDialinoutIPX)
set CommonStatus = STATUS_USERCANCEL
goto WriteRasAsyMac
endif
endif
endif
endif
endif
set NumAddDialinNBF = 0
set NumAddDialoutNBF = 0
set NumRemoveDialinNBF = 0
set NumRemoveDialoutNBF = 0
set NumAddDialinIP = 0
set NumAddDialoutIP = 0
set NumRemoveDialinIP = 0
set NumRemoveDialoutIP = 0
; now calculate the total number of adapters to add and remove for
; each protocol
ifint $(PrevNumDialinNBF) > $(NewNumDialinNBF)
set-sub NumRemoveDialinNBF = $(PrevNumDialinNBF), $(NewNumDialinNBF)
else
set-sub NumAddDialinNBF = $(NewNumDialinNBF), $(PrevNumDialinNBF)
endif
ifint $(PrevNumDialoutNBF) > $(NewNumDialoutNBF)
set-sub NumRemoveDialoutNBF = $(PrevNumDialoutNBF), $(NewNumDialoutNBF)
else
set-sub NumAddDialoutNBF = $(NewNumDialoutNBF), $(PrevNumDialoutNBF)
endif
; we need to determine the #dialout IP adapters to add/remove, because
; these are not shared between nbf and IP.
ifint $(PrevNumDialinIP) > $(NewNumDialinIP)
set-sub NumRemoveDialinIP = $(PrevNumDialinIP), $(NewNumDialinIP)
else
set-sub NumAddDialinIP = $(NewNumDialinIP), $(PrevNumDialinIP)
endif
ifint $(PrevNumDialoutIP) > $(NewNumDialoutIP)
set-sub NumRemoveDialoutIP = $(PrevNumDialoutIP), $(NewNumDialoutIP)
else
set-sub NumAddDialoutIP = $(NewNumDialoutIP), $(PrevNumDialoutIP)
endif
; we need to determine the IPX adapter to remove/add
ifint $(PrevNumDialinoutIPX) > $(NewNumDialinoutIPX)
set-sub NumRemoveDialinoutIPX = $(PrevNumDialinoutIPX), $(NewNumDialinoutIPX)
else
set-sub NumAddDialinoutIPX = $(NewNumDialinoutIPX), $(PrevNumDialinoutIPX)
endif
set NumAddTotal = 0
set NumRemoveTotal = 0
set-add NumAddTotal = $(NumAddDialinNBF), $(NumAddDialoutNBF)
set-add NumAddTotal = $(NumAddTotal), $(NumAddDialinIP)
set-add NumAddTotal = $(NumAddTotal), $(NumAddDialoutIP)
set-add NumAddTotal = $(NumAddTotal), $(NumAddDialinoutIPX)
set-add NumRemoveTotal = $(NumRemoveDialinNBF), $(NumRemoveDialoutNBF)
set-add NumRemoveTotal = $(NumRemoveTotal), $(NumRemoveDialinIP)
set-add NumRemoveTotal = $(NumRemoveTotal), $(NumRemoveDialoutIP)
set-add NumRemoveTotal = $(NumRemoveTotal), $(NumRemoveDialinoutIPX)
Debug-Output "NumAddDialinNBF = "$(NumAddDialinNBF)
Debug-Output "NumAddDialoutNBF = "$(NumAddDialoutNBF)
Debug-Output "NumAddDialinIP = "$(NumAddDialinIP)
Debug-Output "NumAddDialoutIP = "$(NumAddDialoutIP)
Debug-Output "NumAddDialinoutIPX = "$(NumAddDialinoutIPX)
Debug-Output "NumAddTotal = "$(NumAddTotal)
Debug-Output "NumRemoveDialinNBF = "$(NumRemoveDialinNBF)
Debug-Output "NumRemoveDialinIP = "$(NumRemoveDialinIP)
Debug-Output "NumRemoveDialinoutIPX = "$(NumRemoveDialinoutIPX)
Debug-Output "NumRemoveTotal = "$(NumRemoveTotal)
; Open the root of the services area and the root of the networkcards
; registry key and pass these keys to the AddHardwareComponent call.
; this should reduce the number of opens/closes made to the sam
; registry area and speed up the adapter creation.
Shell "utility.inf" BaseServiceKey
set RegistryErrorIndex = $($R0)
Ifstr(i) $(RegistryErrorIndex) == NO_ERROR
Debug-Output "OEMNSVRA.INF: Opened the services base key"
set ServicesBaseKey = $($R1)
else
set ServicesBaseKey = $(KeyNull)
endif
OpenRegKey $(!REG_H_LOCAL) "" $(!NetworkCardKeyName) $(MAXIMUM_ALLOWED) KeyNetcards
Ifstr(i) $(RegistryErrorIndex) == NO_ERROR
Debug-Output "OEMNSVRA.INF: Opened the networkcardkey "
endif
; start with 1
set RasAdapterNumber = 1
; Create the HARDWARE\Netcard region and its corresponding service
AddNdisWanNetCard = +
IfInt $(NumAddTotal) == 0
goto RemoveNdisWanNetCard
else
Debug-Output "In the Add if loop. NumAddTotal = "$(NumAddTotal)
; display the adapter number we are adding so that the user
; knows what is going on
shell $(subroutninf) PushBillBoard NETSTATUSDLG +
$(WritingRasParamsAdd)" "$(NumAddTotal)
set-sub NumAddTotal = $(NumAddTotal),1
Shell $(!UtilityInf), AddHardwareComponent, +
$(!Product$(ThisOption)Name),$(!RasInfName),+
$(!Product$(ThisOption)KeyName), +
$(ServicesBaseKey), $(KeyNetcards), $(RasAdapterNumber)
ifint $($R4) != -1
Set !NETCARD_LIST = >($(!NETCARD_LIST), +
{$(!Product$(ThisOption)Name),+
$(!NetworkCardKeyName)"\"$($R4)})
; save the adapter number for the next call to AddHardwareComponent
set RasAdapterNumber = $($R4)
endif
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "Cannot add hardware component"
goto ShellCodeError
endif
set RegistryErrorIndex = $($R0)
Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
Debug-Output "Registry error: add hardware component"
CloseRegKey $($R1)
CloseRegKey $($R2)
CloseRegKey $($R3)
goto fatalregistry
endif
; At this point:
; $R1 Registry key variable for HARDWARE\Netcard\(n)
; $R2 Registry key variable for HARDWARE\Netcard\(n)\\NetRules
; $R3 Registry key handle for <service>\Parameters key
; $R4 Adapter number assigned to adapter
; $R5 Service name generated by combining svc name with adapter
; number
set KeyNetcard = $($R1)
set KeyParameters = $($R3)
set KeyAdapterRules = $($R2)
set AdapterNumber = $($R4)
set NetcardInfoList = +
{{Manufacturer,$(NoTitle),$(!REG_VT_SZ),$(!Manufacturer)},+
{Title,$(NoTitle),$(!REG_VT_SZ),+
"["$($R4)"] "$(!Product$(ThisOption)Title)},+
{Description,$(NoTitle),$(!REG_VT_SZ),+
$(!Product$(ThisOption)Description)},+
{ServiceName,$(NoTitle),$(!REG_VT_SZ),$($R5)},+
{InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(!CurrentDate),1)},+
{Hidden,$(NoTitle),$(!REG_VT_DWORD),$(!HideComponent)}}
Shell $(!UtilityInf), GetBusTypeNum
set BusTypeNum = $($R1)
ifint $(NumAddDialinNBF) > 0
set-sub NumAddDialinNBF = $(NumAddDialinNBF), 1
set NetcardInfoList = >($(NetcardInfoList), +
{ProductName,$(NoTitle),$(!REG_VT_SZ),+
$(!Product$(ThisOption)DIALINName)})
set ServiceParamList = +
{{EnumExportPref,$(NoTitle),$(!REG_VT_DWORD),0},+
{BusType, $(NoTitle), $(!REG_VT_DWORD), $(BusTypeNum)}}
set AdapterType = $(!NetRuleHardwareDIALINType)
set AdapterClass = $(!NetRuleHardwareDIALINClass)
set AdapterBlock = $(!NetRuleHardwareDIALINBlock)
else-ifint $(NumAddDialoutNBF) > 0
set-sub NumAddDialoutNBF = $(NumAddDialoutNBF), 1
set NetcardInfoList = >($(NetcardInfoList), +
{ProductName,$(NoTitle),$(!REG_VT_SZ),+
$(!Product$(ThisOption)DIALOUTName)})
set ServiceParamList = +
{{EnumExportPref,$(NoTitle),$(!REG_VT_DWORD),1},+
{BusType, $(NoTitle), $(!REG_VT_DWORD), $(BusTypeNum)}}
set AdapterType = $(!NetRuleHardwareDIALOUTType)
set AdapterClass = $(!NetRuleHardwareDIALOUTClass)
set AdapterBlock = $(!NetRuleHardwareDIALOUTBlock)
else-ifint $(NumAddDialinIP) > 0
set-sub NumAddDialinIP = $(NumAddDialinIP), 1
set NetcardInfoList = >($(NetcardInfoList), +
{ProductName,$(NoTitle),$(!REG_VT_SZ),+
$(!Product$(ThisOption)DIALINIPName)})
; we need to identify if we are a server ip binding so that
; we can special case some parameters
set ServiceParamList = +
{{EnumExportPref,$(NoTitle),$(!REG_VT_DWORD),0},+
{AutoIPAddress,$(NoTitle),$(!REG_VT_DWORD),1},+
{ServerAdapter,$(NoTitle),$(!REG_VT_DWORD),1},+
{BusType, $(NoTitle), $(!REG_VT_DWORD), $(BusTypeNum)}}
set AdapterType = $(!NetRuleHardwareDIALINIPType)
set AdapterClass = $(!NetRuleHardwareDIALINIPClass)
set AdapterBlock = $(!NetRuleHardwareDIALINIPBlock)
else-ifint $(NumAddDialoutIP) > 0
set-sub NumAddDialoutIP = $(NumAddDialoutIP), 1
set NetcardInfoList = >($(NetcardInfoList), +
{ProductName,$(NoTitle),$(!REG_VT_SZ),+
$(!Product$(ThisOption)DIALOUTIPName)})
set ServiceParamList = +
{{EnumExportPref,$(NoTitle),$(!REG_VT_DWORD),1},+
{AutoIPAddress,$(NoTitle),$(!REG_VT_DWORD),1},+
{ServerAdapter,$(NoTitle),$(!REG_VT_DWORD),0},+
{BusType, $(NoTitle), $(!REG_VT_DWORD), $(BusTypeNum)}}
set AdapterType = $(!NetRuleHardwareDIALOUTIPType)
set AdapterClass = $(!NetRuleHardwareDIALOUTIPClass)
set AdapterBlock = $(!NetRuleHardwareDIALOUTIPBlock)
else-ifint $(NumAddDialinoutIPX) > 0
set-sub NumAddDialinoutIPX = $(NumAddDialinoutIPX), 1
set NetcardInfoList = >($(NetcardInfoList), +
{ProductName,$(NoTitle),$(!REG_VT_SZ),+
$(!Product$(ThisOption)DIALINOUTIPXName)})
set ServiceParamList = +
{{EnumExportPref,$(NoTitle),$(!REG_VT_DWORD),0},+
{BusType, $(NoTitle), $(!REG_VT_DWORD), $(BusTypeNum)}}
set AdapterType = $(!NetRuleHardwareDIALINOUTIPXType)
set AdapterClass = $(!NetRuleHardwareDIALINOUTIPXClass)
set AdapterBlock = $(!NetRuleHardwareDIALINOUTIPXBlock)
endif
Shell $(!UtilityInf), AddValueList, $(KeyNetcard), $(NetcardInfoList)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "ShellCode error"
goto ShellCodeError
endif
CloseRegKey $(KeyNetcard)
set TempProdName = """"$(!Product$(ThisOption)Name)$(AdapterNumber)""""
set TempBindForm = $(TempProdName)$(!NetRuleHardware$(ThisOption)BindForm)
set AdapterRulesList = +
{{type,$(NoTitle),$(!REG_VT_SZ),+
$(AdapterType)},+
{bindform,$(NoTitle),$(!REG_VT_SZ),$(TempBindForm)},+
{class,$(NoTitle),$(!REG_VT_MULTI_SZ),+
$(AdapterClass)},+
{block,$(NoTitle),$(!REG_VT_MULTI_SZ),+
$(AdapterBlock)},+
{InfOption,$(NoTitle),$(!REG_VT_SZ),$(ThisOption)},+
{Infname ,$(NoTitle),$(!REG_VT_SZ),$(!RasInfName)}}
Shell $(!UtilityInf), AddValueList, $(KeyAdapterRules), $(AdapterRulesList)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "ShellCode error."
goto ShellCodeError
endif
set RegistryErrorIndex = $($R0)
Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
Debug-Output "Resgitry error: add value list."
CloseRegKey $(KeyParameters)
CloseRegKey $(KeyAdapterRules)
goto fatalregistry
endif
CloseRegKey $(KeyAdapterRules)
Shell $(!UtilityInf), AddValueList, $(KeyParameters), $(ServiceParamList)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "ShellCode error."
goto ShellCodeError
endif
CloseRegKey $(KeyParameters)
goto AddNdisWanNetCard
endif ; IfInt NumAddTotal == 0
RemoveNdisWanNetCard = +
ifstr(i) $(ServicesBaseKey) != $(KeyNull)
CloseRegKey $(ServicesBaseKey)
endif
ifstr(i) $(KeyNetcards) != $(KeyNull)
CloseRegKey $(KeyNetcards)
endif
; set the flags to make sure that the tcp and ipx adapters are
; removed
Ifint $(NumRemoveTotal) == 0
goto WriteRasAsyMac
endif
Debug-Output "Removing NdisWan netcard entry..."
; The user removed some ports during configuration, so
; we need to delete the extra ports previously configured
OpenRegKey $(!REG_H_LOCAL) "" $(!NetworkCardKeyName) $(!MAXIMUM_ALLOWED) KeyNetcards
ifstr $(KeyNetcards) == $(KeyNull)
Debug-Output "OEMNSVRA.INF: could not open Netcards key"
set RegistryErrorIndex = UNABLE_OPEN_NETWORKCARD_SECTION
goto fatalregistry
endif
EnumRegKey $(KeyNetcards) NetcardsList
set RemoveDialinList = {}
set RemoveDialinIpList = {}
set RemoveDialoutList = {}
set RemoveDialoutIpList = {}
set RemoveDialinoutIpxList = {}
ForListDo $(NetcardsList)
set KeyName = *($($),1)
OpenRegKey $(KeyNetcards) "" $(KeyName) $(!MAXIMUM_ALLOWED) Card
ifstr $(Card) == $(KeyNull)
Debug-Output "OEMNSVRA.INF: could not open netcard key"
set RegistryErrorIndex = UNABLE_OPEN_NETWORKCARD_SECTION
goto fatalregistry
endif
GetRegValue $(Card), "ProductName" ProductNameInfo
set CardProductName = *($(ProductNameInfo), 4)
ifstr(i) $(CardProductName) == $(!ProductNDISWANDIALINName)
set RemoveDialinList = >($(RemoveDialinList), +
{$(!ProductNDISWANName),+
$(!NetworkCardKeyName)"\"$(KeyName)})
else-ifstr(i) $(CardProductName) == $(!ProductNDISWANDIALINIPName)
set RemoveDialinIpList = >($(RemoveDialinIpList), +
{$(!ProductNDISWANName),+
$(!NetworkCardKeyName)"\"$(KeyName)})
else-ifstr(i) $(CardProductName) == $(!ProductNDISWANDIALOUTName)
set RemoveDialoutList = >($(RemoveDialoutList), +
{$(!ProductNDISWANName),+
$(!NetworkCardKeyName)"\"$(KeyName)})
else-ifstr(i) $(CardProductName) == $(!ProductNDISWANDIALOUTIPName)
set RemoveDialoutIpList = >($(RemoveDialoutIpList), +
{$(!ProductNDISWANName),+
$(!NetworkCardKeyName)"\"$(KeyName)})
else-ifstr(i) $(CardProductName) == $(!ProductNDISWANDIALINOUTIPXName)
set RemoveDialinoutIpxList = >($(RemoveDialinoutIpxList), +
{$(!ProductNDISWANName),+
$(!NetworkCardKeyName)"\"$(KeyName)})
endif
CloseRegKey $(Card)
EndForListDo
CloseRegKey $(KeyNetcards)
; first remove the IP adapter if needed
QueryListSize IpNetCards $(RemoveDialinIpList)
ifint $(IpNetCards) != 0
ForListDo $(RemoveDialinIpList)
ifint $(NumRemoveDialinIP) == 0
goto RemoveDialinIPX
endif
set-sub NumRemoveDialinIP = $(NumRemoveDialinIP), 1
; display the adapter number we are adding so that the user
; knows what is going on
shell $(subroutninf) PushBillBoard NETSTATUSDLG +
$(WritingRasParamsRemove)" "$(NumRemoveTotal)
set-sub NumRemoveTotal = $(NumRemoveTotal), 1
debug-output "Removing hardware component: "$($)
Shell $(!UtilityInf), RemoveHardwareComponent, +
$(!Manufacturer), *($($),1), *($($),2)
EndForListDo
endif
RemoveDialinIPX =+
; then remove the IPX adapter if needed
QueryListSize IpxNetCards $(RemoveDialinoutIpxList)
ifint $(IpxNetCards) != 0
ForListDo $(RemoveDialinoutIpxList)
ifint $(NumRemoveDialinoutIPX) == 0
goto RemoveDialinNBF
endif
set-sub NumRemoveDialinoutIPX = $(NumRemoveDialinoutIPX), 1
debug-output "Removing hardware component: "$($)
; display the adapter number we are adding so that the user
; knows what is going on
shell $(subroutninf) PushBillBoard NETSTATUSDLG +
$(WritingRasParamsRemove)" "$(NumRemoveTotal)
set-sub NumRemoveTotal = $(NumRemoveTotal), 1
Shell $(!UtilityInf), RemoveHardwareComponent, +
$(!Manufacturer), *($($),1), *($($),2)
EndForListDo
endif
RemoveDialinNBF =+
ForListDo $(RemoveDialinList)
ifint $(NumRemoveDialinNBF) == 0
goto RemoveDialout
endif
set-sub NumRemoveDialinNBF = $(NumRemoveDialinNBF), 1
; display the adapter number we are adding so that the user
; knows what is going on
shell $(subroutninf) PushBillBoard NETSTATUSDLG +
$(WritingRasParamsRemove)" "$(NumRemoveTotal)
set-sub NumRemoveTotal = $(NumRemoveTotal), 1
debug-output "Removing hardware component: "$($)
Shell $(!UtilityInf), RemoveHardwareComponent, $(!Manufacturer),+
*($($),1), *($($),2)
EndForListDo
RemoveDialout = +
; first remove the IP adapter if needed
QueryListSize IpNetCards $(RemoveDialoutIpList)
ifint $(IpNetCards) != 0
ForListDo $(RemoveDialoutIpList)
ifint $(NumRemoveDialoutIP) == 0
goto RemoveDialoutNBF
endif
set-sub NumRemoveDialoutIP = $(NumRemoveDialoutIP), 1
; display the adapter number we are adding so that the user
; knows what is going on
shell $(subroutninf) PushBillBoard NETSTATUSDLG +
$(WritingRasParamsRemove)" "$(NumRemoveTotal)
set-sub NumRemoveTotal = $(NumRemoveTotal), 1
debug-output "Removing hardware component: "$($)
Shell $(!UtilityInf), RemoveHardwareComponent, +
$(!Manufacturer), *($($),1), *($($),2)
EndForListDo
endif
RemoveDialoutNBF =+
ForListDo $(RemoveDialoutList)
ifint $(NumRemoveDialoutNBF) == 0
goto WriteRasAsyMac
endif
set-sub NumRemoveDialoutNBF = $(NumRemoveDialoutNBF), 1
; display the adapter number we are adding so that the user
; knows what is going on
shell $(subroutninf) PushBillBoard NETSTATUSDLG +
$(WritingRasParamsRemove)" "$(NumRemoveTotal)
set-sub NumRemoveTotal = $(NumRemoveTotal), 1
debug-output "Removing hardware component: "$($)
Shell $(!UtilityInf), RemoveHardwareComponent, $(!Manufacturer),+
*($($),1), *($($),2)
EndForListDo
; Write RasAsyMac parameters
WriteRasAsyMac = +
; enable AsyncMac service
; if
; One or more serial ports is configured
; OR one or more rasether ports is configured
; OR one or more unimodem devices is configured
;
ifstr(i) $(fSerialInstalled) == TRUE
set AsyStartValue = 2
else-ifstr(i) $(fOtherInstalled) == TRUE
set AsyStartValue = 2
else-ifstr(i) $(fUnimodemInstalled) == TRUE
set AsyStartValue = 2
else
set AsyStartValue = 4
endif
OpenRegKey $(!REG_H_LOCAL) "" $(RasAsyMacKeyName) $(!MAXIMUM_ALLOWED) KeyMac
ifstr $(KeyMac) == $(KeyNull)
Debug-Output "OEMNSVRA.INF: could not open AsyncMac key"
else
SetRegValue $(KeyMac) {Start,$(NoTitle),$(!REG_VT_DWORD),$(AsyStartValue)}
CloseRegKey $(KeyMac)
endif
ifint $(PrevNumPorts) == $(NewNumPorts)
ifint $(PrevNumDialinNBF) == $(NewNumDialinNBF)
ifint $(PrevNumDialoutNBF) == $(NewNumDialoutNBF)
ifint $(PrevNumDialinIP) == $(NewNumDialinIP)
ifint $(PrevNumDialoutIP) == $(NewNumDialoutIP)
ifint $(PrevNumDialinoutIPX) == $(NewNumDialinoutIPX)
EndWait
Ifint $(BillboardVisible) != 0
Shell "subroutn.inf" PopBillboard
Set BillboardVisible = 0
Endif
goto WriteProtocolInfo
endif
endif
endif
endif
endif
endif
OpenRegKey $(!REG_H_LOCAL) "" $(RasAsyMacParamKeyName) $(!MAXIMUM_ALLOWED) KeyMacParams
ifstr $(KeyMacParams) == $(KeyNull)
Debug-Output "OEMNSVRA.INF: could not open AsyncMac Params key"
set RegistryErrorIndex = UNABLE_OPEN_SERVICE_PARAMETERS
goto fatalregistry
endif
set NewValueList = +
{{Ports, $(NoTitle), $(!REG_VT_DWORD), $(NewNumPorts)},+
{DialinNBF, $(NoTitle), $(!REG_VT_DWORD), $(NewNumDialinNBF)},+
{DialoutNBF, $(NoTitle), $(!REG_VT_DWORD), $(NewNumDialoutNBF)},+
{DialinIP, $(NoTitle), $(!REG_VT_DWORD), $(NewNumDialinIP)},+
{DialoutIP, $(NoTitle), $(!REG_VT_DWORD), $(NewNumDialoutIP)},+
{DialinoutIPX, $(NoTitle), $(!REG_VT_DWORD), $(NewNumDialinoutIPX)}}
Shell $(!UtilityInf), AddValueList, $(KeyMacParams), $(NewValueList)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "AddValueList bombed out"
goto ShellCodeError
endif
set RegistryErrorIndex = $($R0)
CloseRegKey $(KeyMacParams)
Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR"
goto fatalregistry
endif
OpenRegKey $(!REG_H_LOCAL) "" $(!NetworkCardKeyName) $(!MAXIMUM_ALLOWED) KeyNetcards
ifstr $(KeyNetcards) == $(KeyNull)
Debug-Output "OEMNSVRA.INF: could not open Netcards key"
set RegistryErrorIndex = UNABLE_OPEN_NETWORKCARD_SECTION
goto fatalregistry
endif
EnumRegKey $(KeyNetcards) NetcardsList
ForListDo $(NetcardsList)
set KeyName = *($($),1)
OpenRegKey $(KeyNetcards) "" $(KeyName) $(!MAXIMUM_ALLOWED) Card
ifstr $(Card) == $(KeyNull)
Debug-Output "OEMNSVRA.INF: could not open netcard key"
set RegistryErrorIndex = UNABLE_OPEN_NETWORKCARD_SECTION
goto fatalregistry
endif
GetRegValue $(Card), "ProductName" ProductNameInfo
set CardProductName = *($(ProductNameInfo), 4)
ifstr(i) $(CardProductName) == $(ProductRASASYMACName)
goto RasMacCardFound
endif
CloseRegKey $(Card)
EndForListDo
CloseRegKey $(KeyNetcards)
RasMacCardFound = +
Debug-Output "Shelling to find AsyncMac Service."
Shell $(!UtilityInf) FindService, $(Card)
CloseRegKey $(Card)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "OEMNSVRA.INF: shell Findservice failed"
goto ShellCodeError
endif
ifstr(i) $($R0) != NO_ERROR
Debug-Output "OEMNSVRA.INF: findservice failed."
goto fatalregistry
endif
set KeyParameters = $($R2)
CloseRegKey $($R1)
Shell $(!UtilityInf), GetBusTypeNum
set BusTypeNum = $($R1)
set NewValueList = +
{{Ports, $(NoTitle), $(!REG_VT_DWORD), $(NewNumPorts)}, +
{BusType, $(NoTitle), $(!REG_VT_DWORD), $(BusTypeNum)}}
Shell $(!UtilityInf), AddValueList, $(KeyParameters), $(NewValueList)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "AddValueList bombed out"
goto ShellCodeError
endif
set RegistryErrorIndex = $($R0)
CloseRegKey $(KeyParameters)
Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR"
goto fatalregistry
endif
WriteProtocolInfo =+
Shell "" SaveSelectedProtocols $(fNetbeuiSelected) $(fTcpIpSelected) +
$(fIpxSelected) $(fNetbeuiAllowed) +
$(fTcpIpAllowed) $(fIpxAllowed)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "Error shelling SaveSelectedProtocols"
goto ShellCodeError
endif
ifstr(i) $($R0) != STATUS_SUCCESSFUL
Debug-Output "Error Saving selected protocols"
goto end
endif
; Write the PPP parameters which will also ensure that the PPP key
; is deleted and recreated.
Shell "" WritePPPParameters
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "Error shelling WritePPPParameters"
goto ShellCodeError
endif
ifstr(i) $($R0) != STATUS_SUCCESSFUL
Debug-Output "Error from WritePPPParameters"
goto end
endif
ifstr(i) $(fNetbeuiChosen) == TRUE
ifstr(i) $(fNetbeuiInstalled) == FALSE
Shell "" InstallProtocol "NETBEUI"
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "Error shelling InstallProtocol NETBEUI"
goto ShellCodeError
endif
ifstr(i) $($R0) != STATUS_SUCCESSFUL
Debug-Output "Error installing NETBEUI"
goto end
endif
endif
endif
ifstr(i) $(fTcpIpChosen) == TRUE
ifstr(i) $(fTcpIpInstalled) == FALSE
Shell "" InstallProtocol "TCPIP"
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "Error shelling InstallProtocol TCPIP"
goto ShellCodeError
endif
ifstr(i) $($R0) != STATUS_SUCCESSFUL
Debug-Output "Error installing TCPIP"
goto end
endif
endif
; install the rasarp service if previously not installed
Shell "" InstallRasArpService
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "Error shelling InstallRasArpService"
goto ShellCodeError
endif
ifstr(i) $($R0) != STATUS_SUCCESSFUL
Debug-Output "Error from InstallRasArpService"
goto end
endif
; force the user to reboot the system for this change
set CommonStatus = STATUS_SUCCESSFUL
Shell "" UpdateIPRouterInfo $(EnableIpRouter)
Shell "" SaveTcpipInfo $(fTcpIpAllowed)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "Error shelling SaveTcpipInfo"
goto ShellCodeError
endif
ifstr(i) $($R0) != STATUS_SUCCESSFUL
Debug-Output "Error saving Tcpip info"
goto end
endif
else
; remove the RasArp service if previously installed
Shell "" RemoveRasArpService
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "Error shelling RemoveRasArpService"
goto ShellCodeError
endif
ifstr(i) $($R0) != STATUS_SUCCESSFUL
Debug-Output "Error from RemoveRasArpService"
goto end
endif
; remove ip info from remoteaccess\parameters
Shell "" SaveTcpipInfo $(fTcpIpAllowed)
; force the user to reboot the system for this change
set CommonStatus = STATUS_SUCCESSFUL
endif
ifstr(i) $(fIpxChosen) == TRUE
ifstr(i) $(fIpxInstalled) == FALSE
Shell "" InstallProtocol "IPX"
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "Error shelling InstallProtocol IPX"
goto ShellCodeError
endif
ifstr(i) $($R0) != STATUS_SUCCESSFUL
Debug-Output "Error installing IPX"
goto end
endif
endif
; set some parameters in the NWLNKIPX\Parameters area
OpenRegKey $(!REG_H_LOCAL) "" +
$(!NTN_ServiceBase)"\NWLNKIPX\Parameters" +
$(!MAXIMUM_ALLOWED) KeyIpxParameters
ifstr $(KeyIpxParameters) != $(KeyNull)
; add the parameters only if they don't already exist
GetRegValue $(KeyIpxParameters), "SingleNetworkActive" +
SingleNetworkActive
ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
SetRegValue $(KeyIpxParameters) +
{SingleNetworkActive, 0, $(!REG_VT_DWORD), 1}
endif
GetRegValue $(KeyIpxParameters), "DisableDialoutSap" +
DisableDialoutSap
ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
SetRegValue $(KeyIpxParameters) +
{DisableDialoutSap, 0, $(!REG_VT_DWORD), 1}
endif
GetRegValue $(KeyIpxParameters), "DisableDialinNetbios" +
DisableDialinNetbios
ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
SetRegValue $(KeyIpxParameters) +
{DisableDialinNetbios, 0, $(!REG_VT_DWORD), 1}
endif
CloseRegKey $(KeyIpxParameters)
Endif
else
Debug-Output "OEMNSVRA.INF: error opening NWLNKIPX\Parameters key"
endif
Shell "" SaveIpxInfo $(EnableIpxRouter) $(fIpxAllowed)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "Error shelling SaveIpxInfo"
goto ShellCodeError
endif
ifstr(i) $($R0) != STATUS_SUCCESSFUL
Debug-Output "Error saving Ipx info"
goto end
endif
ifint $(EnableIpxRouter) == 1
Shell "" InstallNwlnkRipService
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "Error shelling InstallNwlnkRipService"
goto ShellCodeError
endif
ifstr(i) $($R0) != STATUS_SUCCESSFUL
Debug-Output "Error from InstallNwlnkRipService"
goto end
endif
; force the user to reboot the system for this change
set CommonStatus = STATUS_SUCCESSFUL
Shell "" InstallIsnSapService
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "Error shelling InstallIsnSapService"
goto ShellCodeError
endif
ifstr(i) $($R0) != STATUS_SUCCESSFUL
Debug-Output "Error from InstallIsnSapService"
goto end
endif
; force the user to reboot the system for this change
set CommonStatus = STATUS_SUCCESSFUL
else
Shell "" RemoveNwlnkRipService
Shell "" RemoveIsnSapService
; Shell "" RemoveServiceDependency "RemoteAccess" +
; $(!ProductRASISNRIPName)
; Shell "" RemoveServiceDependency "RemoteAccess" +
; $(!ProductRASISNSAPName)
endif
Shell "" UpdateIPXRouterInfo $(EnableWanRouter)
; we should not pop the billboard that ncpa put up during primary install
Ifstr(i) $(!NTN_InstallPhase) != primary
shell $(subroutninf) PopBillBoard
Set BillboardVisible = 0
Endif
else
; remove ipx info from remoteaccess\parameters
Shell "" SaveIpxInfo $(EnableIpxRouter) $(fIpxAllowed)
endif
WriteParametersOver = +
EndWait
goto successful
;;;;;;;;;;;;;;;;; REMOVE RAS BEGINS ;;;;;;;;;;;;;;;;;;;;;;
RemoveRas = +
StartWait
set REMOVE_SOFTWARE = {}
shell "" QueryComponentsInstalled
Ifstr(i) $($R0) == STATUS_SUCCESSFUL
Set InstalledComps = $($R1)
Set InstalledFlags = $($R2)
Set DoServer = *($(InstalledFlags),1)
Set DoClient = *($(InstalledFlags),2)
Set DoAdmin = *($(InstalledFlags),3)
Set DoServerOnly = *($(InstalledFlags),4)
Set DoClientOnly = *($(InstalledFlags),5)
Set DoAdminOnly = *($(InstalledFlags),6)
Endif
Debug-Output "Installed List is "$(InstalledComps)
Debug-Output "Installed Flags is "$(InstalledFlags)
; if admin only is installed no need to attempt to remove
; the hardware components NdisWan and RasMac
ifstr(i) $(DoAdminOnly) == TRUE
set REMOVE_SOFTWARE = {$(ProductRASName)}
goto RemoveSoftware
endif
set REMOVE_SOFTWARE = >($(REMOVE_SOFTWARE), $(ProductRASName))
ifstr(i) $(DoServer) == TRUE
set REMOVE_SOFTWARE = >($(REMOVE_SOFTWARE), $(ProductRASSVRName))
endif
set REMOVE_SOFTWARE = >($(REMOVE_SOFTWARE), $(ProductRASMANName))
set REMOVE_SOFTWARE = >($(REMOVE_SOFTWARE), $(!ProductRASAUTODIALName))
; get the network card numbers corresponding to NdisWan and RasAsyMac
; from the registry
OpenRegKey $(!REG_H_LOCAL) "" $(!NetworkCardKeyName) $(!MAXIMUM_ALLOWED) KeyNetcards
ifstr $(KeyNetcards) == $(KeyNull)
Debug-Output "OEMNSVRA.INF: could not open Netcards key"
goto RemoveSoftware
endif
EnumRegKey $(KeyNetcards) NetcardsList
ForListDo $(NetcardsList)
set KeyName = *($($),1)
OpenRegKey $(KeyNetcards) "" $(KeyName) $(!MAXIMUM_ALLOWED) Card
ifstr $(Card) == $(KeyNull)
Debug-Output "OEMNSVRA.INF: could not open netcard key"
goto RemoveSoftware
endif
GetRegValue $(Card), "ProductName" ProductNameInfo
set CardProductName = *($(ProductNameInfo), 4)
ifstr(i) $(CardProductName) == $(!ProductNDISWANName)
set !NETCARD_LIST = >($(!NETCARD_LIST), +
{$(!ProductNDISWANName),+
$(!NetworkCardKeyName)"\"$(KeyName)})
else-ifstr(i) $(CardProductName) == $(!ProductNDISWANDIALINName)
set !NETCARD_LIST = >($(!NETCARD_LIST), +
{$(!ProductNDISWANName),+
$(!NetworkCardKeyName)"\"$(KeyName)})
else-ifstr(i) $(CardProductName) == $(!ProductNDISWANDIALOUTName)
set !NETCARD_LIST = >($(!NETCARD_LIST), +
{$(!ProductNDISWANName),+
$(!NetworkCardKeyName)"\"$(KeyName)})
else-ifstr(i) $(CardProductName) == $(!ProductNDISWANDIALINIPName)
set !NETCARD_LIST = >($(!NETCARD_LIST), +
{$(!ProductNDISWANName),+
$(!NetworkCardKeyName)"\"$(KeyName)})
else-ifstr(i) $(CardProductName) == $(!ProductNDISWANDIALOUTIPName)
set !NETCARD_LIST = >($(!NETCARD_LIST), +
{$(!ProductNDISWANName),+
$(!NetworkCardKeyName)"\"$(KeyName)})
else-ifstr(i) $(CardProductName) == $(!ProductNDISWANDIALINOUTIPXName)
set !NETCARD_LIST = >($(!NETCARD_LIST), +
{$(!ProductNDISWANName),+
$(!NetworkCardKeyName)"\"$(KeyName)})
else-ifstr(i) $(CardProductName) == $(ProductRASASYMACName)
set !NETCARD_LIST = >($(!NETCARD_LIST),+
{$(ProductRASASYMACName),+
$(!NetworkCardKeyName)"\"$(KeyName)})
endif
CloseRegKey $(Card)
EndForListDo
CloseRegKey $(KeyNetcards)
read-syms StatusUpdatingRegistry$(!STF_LANGUAGE)
QueryListSize NumRemove $(!NETCARD_LIST)
ForListDo $(!NETCARD_LIST)
; display the adapter number we are adding so that the user
; knows what is going on
shell $(subroutninf) PushBillBoard NETSTATUSDLG +
$(RemovingAdapters)" "$(NumRemove)
Set BillboardVisible = 1
debug-output "Removing hardware component: "$($)
Shell $(!UtilityInf), RemoveHardwareComponent, $(!Manufacturer),+
*($($),1), *($($),2)
set-sub NumRemove = $(NumRemove), 1
EndForListDo
ifint $(BillboardVisible) != 0
Shell "subroutn.inf" PopBillboard
Set BillboardVisible = 0
Endif
RemoveSoftware = +
; Remove any additional services we added for IP and IPX
; we do this before we remove the RAS software components because
; there are dependencies to take care of.
Shell "" RemoveRasArpService
Shell "" RemoveNdisTapiService
Shell "" RemoveRasAcdService
; Remove any dependencies we added to external components
; specifically remove WAN minport's dependency on NdisTapi
set RasTapiDevicesKey = $(KeyNull)
OpenRegKey $(!REG_H_LOCAL) "" $(RasTapiDevicesKeyName) $(!MAXIMUM_ALLOWED) RasTapiDevicesKey
ifstr $(RasTapiDevicesKey) != $(KeyNull)
set TapiProviderList = {}
EnumRegKey $(RasTapiDevicesKey) TapiProviderList
ForListDo $(TapiProviderList)
set ProviderName = *($($),1)
Debug-Output "OEMNSVRA.INF: Removing "$(ProviderName)" dependency on NdisTapi."
Shell "" RemoveServiceDependency $(ProviderName) "NdisTapi"
EndForListDo
EndIf
; Remove the ipxrip and sap services only if a dialin port was configured
; with IPX
; Note that for the following QuerySelectedProtocols call to work, we need
; to make sure that SOFTWARE\MICROSOFT\RAS registry key is not removed yet,
; so don't move this code beyond the point where we remove the software key.
set fIpxAllowed = FALSE
Shell "" QuerySelectedProtocols
ifstr(i) $($R0) == STATUS_SUCCESSFUL
set fIpxAllowed = $($R6)
else
Debug-Output "RemoveRas: error QuerySelectedProtocols"
endif
ifstr(i) $(fIpxAllowed) == TRUE
Shell "" RemoveNwlnkRipService
Shell "" RemoveIsnSapService
endif
Debug-Output "Remove Software List "$(REMOVE_SOFTWARE)
ForListDo $(REMOVE_SOFTWARE)
Debug-Output "Removing software component: "$($)
ifstr(i) $($) == RAS
OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyBase) +
$(!MAXIMUM_ALLOWED) ProductKey
Ifstr $(ProductKey) == $(KeyNull)
Debug-Output "OEMNSVRA.INF: could not open Software product key"
goto RemoveFiles
endif
DeleteRegTree $(ProductKey) $(Product$($)Name)
CloseRegKey $(ProductKey)
else
Shell $(!UtilityInf), RemoveSoftwareComponent, $(!Manufacturer), $($)
endif
EndForListDo
RemoveFiles = +
; now remove the files on disk
Install RemoveRasFiles
; Remove the Remote Access Service program group and icons from
; the program manager.
ifstr(i) $(DoServerOnly) == FALSE
Install RemoveRasGroup
endif
; remove OEMNSVRA.INF from the ReviewPrograms list in ncpa
Shell "" RemoveInfFromReviewPrograms
shell "" RemoveNetGroupDependency
RemoveRasOver = +
; Now go through the registry and clean up all RAS keys to ensure
; that the removal is complete.
Debug-Output "OEMNSVRA.INF: Doing a forcible cleanup..."
OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_SoftwareBase)"\Microsoft" +
$(!MAXIMUM_ALLOWED) KeySoftware
ifstr $(KeySoftware) != $(KeyNull)
; blow away all the software keys
set SoftList = {"ASYNCMAC", "NDISWAN", "RAS", "RASMAN", +
"RASAUTO", "REMOTEACCESS"}
ForListDo $(SoftList)
DeleteRegTree $(KeySoftware) $($)
EndForListDo
; blow away any RAS netcards
set NetworkCardKey = $(KeyNull)
OpenRegKey $(!REG_H_LOCAL) "" $(!NetworkCardKeyName) +
$(!MAXIMUM_ALLOWED) NetworkCardKey
Ifstr(i) $(NetworkCardKey) != $(KeyNull)
set NetcardsList = {}
EnumRegKey $(NetworkCardKey) NetcardsList
Ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
ForListDo $(NetcardsList)
set KeyName = *($($),1)
set Card = $(KeyNull)
OpenRegKey $(NetworkCardKey) "" $(KeyName) $(!MAXIMUM_ALLOWED) Card
ifstr $(Card) == $(KeyNull)
Debug-Output "RemoveRas: could not open netcard key "$(KeyName)
else
GetRegValue $(Card), "ProductName" ProductNameInfo
Ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
Debug-Output "RemoveRas: ProductName not found."
else
set CardProductName = *($(ProductNameInfo), 4)
Debug-Output "RemoveRas: ProductName. "$(CardProductName)
ifstr(i) $(CardProductName) == $(!ProductNDISWANName)
DeleteRegTree $(NetworkCardKey) $(KeyName)
endif
ifstr(i) $(CardProductName) == $(!ProductNDISWANDIALINName)
DeleteRegTree $(NetworkCardKey) $(KeyName)
endif
ifstr(i) $(CardProductName) == $(!ProductNDISWANDIALOUTName)
DeleteRegTree $(NetworkCardKey) $(KeyName)
endif
ifstr(i) $(CardProductName) == $(!ProductNDISWANDIALINIPName)
DeleteRegTree $(NetworkCardKey) $(KeyName)
endif
ifstr(i) $(CardProductName) == $(!ProductNDISWANDIALOUTIPName)
DeleteRegTree $(NetworkCardKey) $(KeyName)
endif
ifstr(i) $(CardProductName) == $(!ProductNDISWANDIALINOUTIPXName)
DeleteRegTree $(NetworkCardKey) $(KeyName)
endif
ifstr(i) $(CardProductName) == $(ProductRASASYMACName)
DeleteRegTree $(NetworkCardKey) $(KeyName)
endif
endif
EndForListDo
else
Debug-Output "RemoveRas: EnumRegKey failed."
endif
else
Debug-Output "RemoveRas: failed to open "$(!NetworkCardKeyName)
endif
CloseRegKey $(KeySoftware)
else
Debug-Output "RemoveRas: failed to open software key"
endif
OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase) +
$(!MAXIMUM_ALLOWED) KeyServices
ifstr $(KeyServices) != $(KeyNull)
set ServiceList = {"ASYNCMAC", "NDISWAN", "RASARP", "RASMAN", +
"REMOTEACCESS", "RASACD", "RASAUTO"}
ForListDo $(ServiceList)
DeleteRegTree $(KeyServices) $($)
EndForListDo
; now walk the services tree and blow away all AsyncMacX and
; NdisWanX keys
EnumRegKey $(KeyServices) ServiceList
Ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
ForListDo $(ServiceList)
set ServiceName = *($($),1)
set Result = 1
LibraryProcedure Result $(!LIBHANDLE) SetupStrncmp +
$(ServiceName) "NdisWan" 7
ifint $(Result) == 0
Debug-Output "RemoveRas: Removing "$(ServiceName)
DeleteRegTree $(KeyServices) $(ServiceName)
else
LibraryProcedure Result $(!LIBHANDLE) SetupStrncmp +
$(ServiceName) "AsyncMac" 8
ifint $(Result) == 0
Debug-Output "RemoveRas: Removing "$(ServiceName)
DeleteRegTree $(KeyServices) $(ServiceName)
endif
endif
EndForListDo
endif
CloseRegKey $(KeyServices)
endif
EndWait
goto $(to)
;;;;;;;;;;;;;;;;;;;;; BINDINGS RAS BEGINS ;;;;;;;;;;;;;;
BindingsRas = +
; This gets called if review is specified as 1
Debug-Output "OEMNSVRA.INF:Review bindings is being called!!!."
; Check if one of Nbf, TcpIp or Ipx protocol stacks have been removed.
; Accordingly change our list of selected protocols in
; SOFTWARE\Microsoft\RAS\Protocols. Also, remove the corresponding
; netcards and update the list of Dialin/Dialout ports in
; Services\Asyncmac\Parameters
Shell "" UpdateSelectedProtocols
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "error shelling UpdateSelectedProtocols."
goto ShellCodeError
endif
Ifstr(i) $($R0) != STATUS_SUCCESSFUL
Debug-Output "error returned by UpdateSelectedProtocols."
endif
set fNetbeuiChosen = $($R1)
set fTcpIpChosen = $($R2)
set fIpxChosen = $($R3)
; If there are no protocols selected for RAS,
; then display a message to warn the user.
ifstr(i) $(fNetbeuiChosen) == FALSE
ifstr(i) $(fTcpIpChosen) == FALSE
ifstr(i) $(fIpxChosen) == FALSE
read-syms NoProtocolsDlg$(!STF_LANGUAGE)
Shell $(subroutninf) SetupMessage, $(!STF_LANGUAGE), "STATUS", $(NoProtocolsWarning)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto ShellCodeError
endif
goto end
endif
endif
endif
set WkstaConfigured = FALSE
set SrvrConfigured = FALSE
shell "" IsNetworkConfigured
Debug-Output "IsNetworkConfigured returned R0 "$($R0)
Debug-Output "IsNetworkConfigured returned R1 "$($R1)
Debug-Output "IsNetworkConfigured returned R2 "$($R2)
ifstr(i) $($R0) == STATUS_SUCCESSFUL
set WkstaConfigured = $($R1)
set SrvrConfigured = $($R2)
else
read-syms NetworkConfigError$(!STF_LANGUAGE)
set Text = $(Text1)
shell $(subroutninf) SetupMessage $(!STF_LANGUAGE) "FATAL" $(Text)
goto end
endif
ifstr(i) $(WkstaConfigured) == TRUE
ifstr(i) $(SrvrConfigured) == TRUE
goto ResetProgramList
else
goto InstallNetworkError
endif
else
goto InstallNetworkError
endif
InstallNetworkError =+
set CommonStatus = STATUS_USERCANCEL
read-syms NetworkConfigError$(!STF_LANGUAGE)
set Text = $(Text2)
shell $(subroutninf) SetupMessage $(!STF_LANGUAGE) "STATUS" $(Text)
; If we were called through the normal review bindings, then reset
; the review bindings flag in rasman to 0 and add ourselves to the
; ReviewProgramsList of NCPA. This will ensure that we will be called
; last for review bindings.
; Add our inf file name to the Review Programs list of NCPA
ResetProgramList =+
OpenRegKey $(!REG_H_LOCAL) "" $(!RasManKeyName) $(!MAXIMUM_ALLOWED) KeyRasMan
ifstr $(KeyRasMan) != $(KeyNull)
GetRegValue $(KeyRasMan), "Review" ReviewInfo
set ReviewValue = *($(ReviewInfo), 4)
ifint $(ReviewValue) == 1
Debug-Output "BindingsRas: resetting Review to 0"
SetRegValue $(KeyRasMan) {Review,$(NoTitle),$(!REG_VT_DWORD), 0}
Shell "" AddInfToReviewProgramsList
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "error shelling AddInfToReviewProgramsList."
goto ShellCodeError
endif
ifstr(i) $($R0) != STATUS_SUCCESSFUL
Debug-Output "error returned by AddInfToReviewProgramsList."
endif
endif
CloseRegKey $(KeyRasMan)
else
Debug-Output "OEMNSVRA.INF: error opening SOFTWARE\RasMan\CurrentVersion key."
endif
shell "" QueryComponentsInstalled
Ifstr(i) $($R0) == STATUS_SUCCESSFUL
Set InstalledComps = $($R1)
Set InstalledFlags = $($R2)
Set DoServer = *($(InstalledFlags),1)
Set DoClient = *($(InstalledFlags),2)
Set DoAdmin = *($(InstalledFlags),3)
Set DoServerOnly = *($(InstalledFlags),4)
Set DoClientOnly = *($(InstalledFlags),5)
Set DoAdminOnly = *($(InstalledFlags),6)
Endif
Debug-Output "Installed List is "$(InstalledComps)
Debug-Output "Installed Flags is "$(InstalledFlags)
; Check if AsyncMac service is enabled - meaning serial ports are configured
; initialize start value to disabled
set AsyStartValue = 4
OpenRegKey $(!REG_H_LOCAL) "" $(RasAsyMacKeyName) $(!MAXIMUM_ALLOWED) KeyMac
ifstr $(KeyMac) == $(KeyNull)
Debug-Output "OEMNSVRA.INF: could not open AsyncMac key"
else
GetRegValue $(KeyMac), "Start" AsyStartInfo
ifint $(RegLastError) == 0
set AsyStartValue = *($(AsyStartInfo), 4)
endif
Debug-Output "OEMNSVRA.INF: AsyncMac start value "$(AsyStartValue)
CloseRegKey $(KeyMac)
endif
; Read the Linkage Value of AsyncMac only if AsyncMac is enabled
; Initialize EndPoints only if AsyncMac is enabled
set NdisWanParam = {}
set NdisWanEndPointsLst = {}
ifint $(AsyStartValue) != 4
set RasMacLinkageKey = $(KeyNull)
OpenRegKey $(!REG_H_LOCAL) "" $(RasMacLinkageKeyName) $(!MAXIMUM_ALLOWED) RasMacLinkageKey
ifstr $(RasMacLinkageKey) == $(KeyNull)
Debug-Output "OEMNSVRA.INF: could not open AsyncMac linkage key"
set RegistryErrorIndex = UNABLE_ACCESS_CONFIGURE_SERVICE
goto fatalregistry
endif
GetRegValue $(RasMacLinkageKey), "Bind" BindInfo
set NdisWanParam = *($(BindInfo), 4)
CloseRegKey $(RasMacLinkageKey)
; Obtain the Endpoint information
set NdisWanParamKey = $(KeyNull)
OpenRegKey $(!REG_H_LOCAL) "" $(NdisWanParamKeyName) $(!MAXIMUM_ALLOWED) NdisWanParamKey
ifstr $(NdisWanParamKey) == $(KeyNull)
Debug-Output "OEMNSVRA.INF: could not open NdisWanParamKey"
else
GetRegValue $(NdisWanParamKey), "EndPoints" EndPointsInfo
set EndPointsLst = *($(EndPointsInfo), 4)
set NdisWanEndPointsLst = >($(NdisWanEndPointsLst),*($(EndPointsLst), 1))
CloseRegKey $(NdisWanParamKey)
endif
endif
; Read the Linkage value of the TAPI drivers to get the EndPoints info
; we need to make sure that if a TAPi driver has been removed, it is
; not added to the NDISWAN service dependency
set ProviderList = {}
set RasTapiDevicesKey = $(KeyNull)
OpenRegKey $(!REG_H_LOCAL) "" $(RasTapiDevicesKeyName) $(!MAXIMUM_ALLOWED) RasTapiDevicesKey
ifstr $(RasTapiDevicesKey) != $(KeyNull)
set TapiProviderList = {}
EnumRegKey $(RasTapiDevicesKey) TapiProviderList
ForListDo $(TapiProviderList)
set TapiAddress = {}
set NumEndPoints = 0
set ProviderName = *($($),1)
Debug-Output "OEMNSVRA.INF: TAPI provider name = "$(ProviderName)
OpenRegKey $(RasTapiDevicesKey) "" $(ProviderName) $(!MAXIMUM_ALLOWED) Provider
ifstr $(Provider) != $(KeyNull)
GetRegValue $(Provider), "Address" TapiAddress
set AdapterNum = ""
set EndPointCount = 0
set tmpNdisWanParam = {}
set tmpNdisWanEndPointsLst = {}
set DeviceName = ""
ForListDo *($(TapiAddress),4)
Split-String $($) "- " Address
set NewAdapterNum = *($(Address), 1)
; if we come across a new adapter number
ifstr(i) $(AdapterNum) != $(NewAdapterNum)
; and if we have accumulated some information
ifstr(i) $(AdapterNum) != ""
; write it to temp list
set tmpNdisWanParam = >($(tmpNdisWanParam), $(DeviceName))
set tmpNdisWanEndPointsLst = >($(tmpNdisWanEndPointsLst), $(EndPointCount))
; reset the end point count for the next adapter
set EndPointCount = 0
endif
; save new adapter number
set AdapterNum = $(NewAdapterNum)
; make new device name
set DeviceName = "\Device\"$(ProviderName)$(AdapterNum)
endif
;increment endpoint count for the new device
set-add EndPointCount = $(EndPointCount), 1
EndForListDo
; append the information for the last set of addresses to the
; tmp list
ifstr $(DeviceName) != ""
set tmpNdisWanParam = >($(tmpNdisWanParam), $(DeviceName))
set tmpNdisWanEndPointsLst = >($(tmpNdisWanEndPointsLst), $(EndPointCount))
endif
CloseRegKey $(Provider)
else
Debug-Output "OEMNSVRA.INF: could not open RAS\TAPI DEVICES\"$(DriverName)" key."
endif
set ProviderKeyName = $(!NTN_ServiceBase)"\"$(ProviderName)
set ProviderLinkageKeyName = $(!NTN_ServiceBase)"\"$(ProviderName)"\Linkage"
Debug-Output "TAPI provider key name "$(ProviderKeyName)
set ProviderKey = $(KeyNull)
set ProviderLinkageKey = $(KeyNull)
OpenRegKey $(!REG_H_LOCAL) "" $(ProviderKeyName) $(!MAXIMUM_ALLOWED) ProviderKey
ifstr $(ProviderKey) == $(KeyNull)
Debug-Output "OEMNSVRA.INF: could not open key "$(ProviderKeyName)
else
set DeleteFlag = 0
set DeleteFlagInfo = {}
; check whether service is marked for deletion
GetRegValue $(ProviderKey),"DeleteFlag", DeleteFlagInfo
set DeleteFlag = *($(DeleteFlagInfo), 4)
ifint $(DeleteFlag) != 1
; add service to provider list only if the service exists.
set ProviderList = >($(ProviderList), $(ProviderName))
; make the tapi-aware miniport dependent on NdisTapi
; driver so that the driver loads before the miniports.
Shell "" AddServiceDependency $(ProviderName) "NdisTapi"
ForListDo $(tmpNdisWanParam)
set NdisWanParam = >($(NdisWanParam), $($))
set NdisWanEndPointsLst = >($(NdisWanEndPointsLst), *($(tmpNdisWanEndPointsLst), $(#)))
EndForListDo
endif
CloseRegKey $(ProviderKey)
endif
EndForListDo
CloseRegKey $(RasTapiDevicesKey)
else
Debug-Output "OEMNSVRA.INF: could not open RAS\TAPI DEVICES key"
endif
; Check to make sure at least one port is configured for RAS
; else, warn the user that this is an invalid configuration.
set NumBindings = 0
Debug-Output "NdisWan param Bind value = "$(NdisWanParam)
QueryListSize NumBindings $(NdisWanParam)
Debug-Output "Number of Ndiswan bindings = "$(NumBindings)
ifint $(NumBindings) == 0
Debug-Output "OEMNSVRA.INF: No ports are configured"
read-syms NoPortsConfigured$(!STF_LANGUAGE)
Shell $(subroutninf) SetupMessage, $(!STF_LANGUAGE), "STATUS", $(NoPortsError)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto ShellCodeError
endif
goto end
endif
; and write this information as a parameter in the NdisWan section
OpenRegKey $(!REG_H_LOCAL) "" $(NdisWanParamKeyName) $(!MAXIMUM_ALLOWED) NdisWanParamKey
ifstr $(NdisWanParamKey) == $(KeyNull)
Debug-Output "OEMNSVRA.INF: could not open NdisWanParamKey"
set RegistryErrorIndex = UNABLE_ACCESS_CONFIGURE_SERVICE
goto fatalregistry
endif
Debug-Output "Setting NdisWan param Bind to "$(NdisWanParam)
set NewValueList = {{Bind, $(NoTitle), $(!REG_VT_MULTI_SZ), $(NdisWanParam)}}
Shell $(!UtilityInf), AddValueList, $(NdisWanParamKey), $(NewValueList)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
CloseRegKey $(NdisWanParamKey)
goto ShellCodeError
endif
Debug-Output "Setting NdisWan param EndPoints to "$(NdisWanEndPointsLst)
set NewValueList = {{EndPoints, $(NoTitle), $(!REG_VT_MULTI_SZ), $(NdisWanEndPointsLst)}}
Shell $(!UtilityInf), AddValueList, $(NdisWanParamKey), $(NewValueList)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
CloseRegKey $(NdisWanParamKey)
goto ShellCodeError
endif
CloseRegKey $(NdisWanParamKey)
LoadLibrary "x" $(!STF_CWDDIR)rascfg.dll PORTSDLGHANDLE
LibraryProcedure Result, $(PORTSDLGHANDLE), InitRasmanSecurityDescriptor
Debug-Output "Result of setting Rasman security descriptor "$(Result)
LibraryProcedure Result, $(PORTSDLGHANDLE), InitRemoteSecurityDescriptor
Debug-Output "Result of setting Remote security descriptor "$(Result)
; Update the supported CP list based on what protocols are currently installed
Shell "" UpdateCPList
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "error shelling UpdateCPList."
goto ShellCodeError
endif
Ifstr(i) $($R0) != STATUS_SUCCESSFUL
Debug-Output "error returned by UpdateCPList."
endif
; If TcpIp is selected, then update the NdisWanX\Parameters\TCPIP\LLInterface
; with RasArp
ifstr(i) $(fTcpIpChosen) == TRUE
shell "" UpdateLLInterface
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "error shelling UpdateLLInterface."
goto ShellCodeError
endif
Ifstr(i) $($R0) != STATUS_SUCCESSFUL
Debug-Output "error returned by UpdateLLInterface."
endif
endif
;; add the group dependency on NDIS and NDISWAN to ensure that RAS drivers load
;We don't do this any more because of no-net changes being made to
;transports and drivers - 2/11/96 RamC
; shell "" UpdateNetGroupDependency $(fNetbeuiChosen) $(fTcpIpChosen) $(fIpxChosen)
; ifint $($ShellCode) != $(!SHELL_CODE_OK)
; Debug-Output "error shelling UpdateNetGroupDependency."
; goto ShellCodeError
; endif
; Ifstr(i) $($R0) != STATUS_SUCCESSFUL
; Debug-Output "error returned by UpdateNetGroupDependency."
; endif
; Set RasArp\Linkage\Bind to the NdisWan bindings from TCP/IP
;
Shell "" SetRasArpBindValueFromTcpIP
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "error shelling SetRasArpBindValueFromTcpIP."
goto ShellCodeError
endif
Ifstr(i) $($R0) != STATUS_SUCCESSFUL
Debug-Output "error returned by SetRasArpBindValueFromTcpIP."
endif
; We don't force NetBEUI any more on NT 4.0 RamC 3/25/96
;
; ; if NetBeui was not selected - meaning that NetBEUI was removed, and if
; ; the SOFTWARE\Microsoft\RAS\PROTOCOLS\fNoNetbeuiWarning is either missing
; ; or set to zero, then modify this value to 1 and put up a warning popup
; ; so that the user is aware.
;
; set fNoNetbeuiWarning = 0
; ifstr(i) $(fNetbeuiChosen) == FALSE
; OpenRegKey $(!REG_H_LOCAL) "" $(RasProtocolsKeyName) $(!MAXIMUM_ALLOWED) KeyRasProtocols
; ifstr $(KeyRasProtocols) != $(KeyNull)
; GetRegValue $(KeyRasProtocols), "fNoNetbeuiWarning" NetbeuiInfo
; set fNoNetbeuiWarning = *($(NetbeuiInfo), 4)
; ifint $(fNoNetbeuiWarning) != 1
; read-syms NoNetbeuiDlg$(!STF_LANGUAGE)
; Shell $(subroutninf) SetupMessage, $(!STF_LANGUAGE), "STATUS", $(NoNetbeuiWarning)
; ifint $($ShellCode) != $(!SHELL_CODE_OK)
; goto ShellCodeError
; endif
; endif
; SetRegValue $(KeyRasProtocols) {fNoNetbeuiWarning,$(NoTitle),$(!REG_VT_DWORD), 1}
; CloseRegKey $(KeyRasProtocols)
; else
; Debug-Output "Bindings: unable to open RasProtocolKeyName"
; endif
; endif
Debug-Output "Review bindings done."
goto end
;;;;;;;;;;;;;;;;; UPGRADE RAS BEGINS ;;;;;;;;;;;;;;;;;;;;;;
UpgradeRas = +
; if the upgrade is not for RAS, then silently return
Debug-Output "OEMNSVRA.INF: Upgrade with Option type "$(Option)
ifstr(i) $(Option) != "RAS"
Debug-Output "OEMNSVRA.INF: not upgrading due to nonras option"
set CommonStatus = STATUS_NOEFFECT
goto end
endif
OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(!MAXIMUM_ALLOWED) KeyProduct
Ifstr $(KeyProduct) != $(KeyNull)
Shell $(!UtilityInf), GetInfFileNameFromRegistry, $(KeyProduct)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "ShellCode error"
goto ShellCodeError
endif
set !UG_Filename = $($R0)
ifstr(i) $(!UG_Filename) != ""
Debug-Output "File Name is "$(!UG_Filename)
StartWait
read-syms UpgradeErrors$(!STF_LANGUAGE)
read-syms StatusUpdatingRegistry$(!STF_LANGUAGE)
Shell "subroutn.inf" PushBillboard NETSTATUSDLG $(UpdatingRas)
Set BillboardVisible = 1
; determine the installed components. This info is used
; by InstallRasFiles to determine the files to copy.
shell "" QueryComponentsInstalled
Ifstr(i) $($R0) == STATUS_SUCCESSFUL
Set InstalledComps = $($R1)
Set InstalledFlags = $($R2)
Set DoServer = *($(InstalledFlags),1)
Set DoClient = *($(InstalledFlags),2)
Set DoAdmin = *($(InstalledFlags),3)
Set DoServerOnly = *($(InstalledFlags),4)
Set DoClientOnly = *($(InstalledFlags),5)
Set DoAdminOnly = *($(InstalledFlags),6)
Endif
Debug-Output "Installed List is "$(InstalledComps)
Debug-Output "Installed Flags is "$(InstalledFlags)
Set ServerInstalled = $(DoServer)
Set ClientInstalled = $(DoClient)
Set AdminInstalled = $(DoAdmin)
Install InstallResources
ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
goto filecopycancel
endif
Install InstallRasFiles
ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
goto filecopycancel
endif
set fTcpIp = FALSE
; find out what protocols are currently selected
Shell "" QuerySelectedProtocols
Ifstr(i) $($R0) != STATUS_SUCCESSFUL
Debug-Output "error returned by QuerySelectedProtocols."
endif
set fNetbeuiSelected = $($R1)
set fTcpIpSelected = $($R2)
set fIpxSelected = $($R3)
set fNetbeuiAllowed = $($R4)
set fTcpIpAllowed = $($R5)
set fIpxAllowed = $($R6)
ifstr(i) $(fTcpIpSelected) == TRUE
set fTcpIp = "TRUE"
else-ifstr(i) $(fTcpIpAllowed) == TRUE
set fTcpIp = "TRUE"
endif
ifstr(i) $(fTcpIp) == TRUE
; Remove TCP/IP dependency on RASARP
; this change is part of the no-net changes in RAS 2/15/96 RamC
Shell "" RemoveServiceDependency "TCPIP" "RASARP"
; make rasarp belong to PNP_TDI group, make it autostart and
; make rasarp depend on TCP/IP
Shell "" RemoveRasArpService
Shell "" InstallRasArpService
endif
; Set RestoreConnections to 1 - this is because RAS setup
; doesn't provide the UI any more to disable netconnections
; due to changes in the NT redirector which restores connections
; in a deferred state.
Shell "" SetRestoreConnectionTo1
; Remove RemoteAccess dependency on NetLogon service because
; NT Cairo doesn't have netlogon service any more.
Shell "" RemoveServiceDependency "RemoteAccess" "NetLogon"
; Add RasMan & RasAuto dependency on TapiSrv, a new service
Shell "" AddServiceDependency "RasMan" "tapisrv"
; install the all new AutoDial service
Shell "" InstallSoftwareAndService RASAUTODIAL
; Disable the RasAuto service if this is not a NT Workstation
; RamC 6/13/96 don't disable RasAuto for NT Server any more because
; redial-on-link-failure is implemented in autodial service and it should
; be enabled if one or more dialout ports are configured.
; ifstr(i) $(!STF_PRODUCT) != "WINNT"
; OpenRegKey $(!REG_H_LOCAL) "" $(!RasAutodialKeyName) $(!MAXIMUM_ALLOWED) KeyAutodial
; ifstr $(KeyAutodial) == $(KeyNull)
; Debug-Output "OEMNSVRA.INF: could not open RasAuto key"
; else
; SetRegValue $(KeyAutodial) {Start, $(NoTitle), $(!REG_VT_DWORD), 4}
; CloseRegKey $(KeyAutodial)
; endif
; endif
; Add RasAuto dependency on TapiSrv
Shell "" AddServiceDependency "RasAuto" "RasMan"
; Remove and add the RASACD service
; 3/11/96 RamC Removing and installing RasAcd service ensures that
; the service now belongs to "Streams Drivers" group
; rather than NDISWAN. This is to accomodate the change
; in service group order with no-net changes.
Shell "" RemoveRasAcdService
; install the RasAcd service
Shell "" InstallRasAcdService
; change the RasMan sevice type to "serviceshare" (32) from "service" (16)
; this is needed because RasAutoDial shares rasman.exe
OpenRegKey $(!REG_H_LOCAL) "" $(!RasManSvcKeyName) $(!MAXIMUM_ALLOWED) KeyRasMan
ifstr $(KeyRasMan) == $(KeyNull)
Debug-Output "OEMNSVRA.INF: could not open RasMan key"
else
SetRegValue $(KeyRasMan) {Type, $(NoTitle), $(!REG_VT_DWORD), 32}
CloseRegKey $(KeyRasMan)
endif
;Rename the software and services RasHub keys to NdisWan
LoadLibrary "x" $(!STF_CWDDIR)rascfg.dll PORTSDLGHANDLE
LibraryProcedure Result, $(PORTSDLGHANDLE), RenameRasHubToNdisWan
; now rename all occurences of RasHub to NdisWan (including the
; net rules in the NetworkCards area
Shell "" RenameRasHubToNdisWan
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "OEMNSVRA.INF:error shelling RenameRasHubToNdisWan."
goto ShellCodeError
endif
Ifstr(i) $($R0) != STATUS_SUCCESSFUL
Debug-Output "OEMNSVRA.INF:error returned by RenameRasHubToNdisWan."
goto end
endif
; Install the NdisWan Adapter for Blood Hound service to bind to
; This should be done only if the adapter is not already installed.
Shell "" IsNdisWanBHAdapterInstalled
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "OEMNSVRA.INF:error shelling IsNdisWanBHAdapterInstalled"
goto ShellCodeError
endif
ifstr(i) $($R0) != STATUS_SUCCESSFUL
; the adpater is not installed, so install it now
Shell "" InstallNdisWanBHAdapter
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "OEMNSVRA.INF:error shelling InstallNdisWanBHAdapter"
goto ShellCodeError
endif
ifstr(i) $($R0) != STATUS_SUCCESSFUL
set RegistryErrorIndex = $($R0)
Debug-Output "Error installing NdisWan Blood hound adapter"
goto fatalregistry
endif
endif
; Install the connection wrapper
Shell "" InstallNdisTapiService
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "Error shelling InstallNdisTapiService "
goto ShellCodeError
endif
ifstr(i) $($R0) != STATUS_SUCCESSFUL
set RegistryErrorIndex = $($R0)
Debug-Output "Error installing NdisTapi Service"
goto fatalregistry
endif
; update asyncmac bind rules to prevent blood hound binding to it
Shell "" UpdateAsyncMacNetRules
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "OEMNSVRA.INF:error shelling UpdateAsyncMacNetRules."
goto ShellCodeError
endif
Ifstr(i) $($R0) != STATUS_SUCCESSFUL
Debug-Output "OEMNSVRA.INF:error returned by UpdateAsyncMacNetRules."
goto end
endif
; modify ndiswan netrules to reflect the new protocol support
Shell "" UpdateNdisWanInfo
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "OEMNSVRA.INF:error shelling UpdateNdisWanInfo."
goto ShellCodeError
endif
Ifstr(i) $($R0) != STATUS_SUCCESSFUL
Debug-Output "OEMNSVRA.INF:error returned by UpdateNdisWanInfo."
goto end
endif
; Add NDISWAN to the ServiceGroupOrder so that all NDIS components
; load before NdisWan driver.
Shell "" AddNDISWANToServiceGroupOrder
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "Cannot add NDISWAN to ServiceGroupOrder"
goto ShellCodeError
endif
Shell "" UpdateAsyncMacParameters
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "OEMNSVRA.INF:error shelling UpdateAsyncMacParameters."
goto ShellCodeError
endif
Ifstr(i) $($R0) != STATUS_SUCCESSFUL
Debug-Output "OEMNSVRA.INF:error returned by UpdateAsyncMacParameters."
goto end
endif
Shell "" UpdateAsyncMacStartType
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "OEMNSVRA.INF:error shelling UpdateAsyncMacStartType."
goto ShellCodeError
endif
Ifstr(i) $($R0) != STATUS_SUCCESSFUL
Debug-Output "OEMNSVRA.INF:error returned by UpdateAsyncMacStartType."
goto end
endif
; update SOFTWARE\RAS\PROTOCOLS with the list of selected
; protocols.
Shell "" UpgradeSelectedProtocols
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "OEMNSVRA.INF:error shelling UpgradeSelectedProtocols."
goto ShellCodeError
endif
Ifstr(i) $($R0) != STATUS_SUCCESSFUL
Debug-Output "OEMNSVRA.INF:error returned by UpgradeSelectedProtocols."
goto end
endif
; if the user is upgrading a WinNt system to a ServerNt system,
; and if there is at least one dialin port, then change the
; remoteaccess service start type to auto if the service is not
; currently disabled.
; also change the ndistapi parameter value.
; The software\Microsoft\Ras\Protocols key has the variables
; fNetbeuiAllowed, fTcpIpAllowed and fIpxAllowed which indicate
; if there is any dialin port configured. If one of these is
; set to 1, then the ras server start type is set to AutoStart - 2
ifstr(i) $(!STF_STANDARDSERVERUPGRADE) == "YES"
OpenRegKey $(!REG_H_LOCAL) "" $(RasProtocolsKeyName) +
$(!MAXIMUM_ALLOWED) KeyProtocols
ifstr $(KeyProtocols) != $(KeyNull)
set fDialin = FALSE
set TmpList = {}
GetRegValue $(KeyProtocols) "fNetbeuiAllowed" TmpList
ifint $(RegLastError) == 0
ifstr *($(TmpList), 4) == 1
set fDialin = TRUE
endif
endif
set TmpList = {}
ifstr(i) $(fDialin) == FALSE
GetRegValue $(KeyProtocols) "fTcpIpAllowed" TmpList
ifint $(RegLastError) == 0
ifstr *($(TmpList), 4) == 1
set fDialin = TRUE
endif
endif
endif
set TmpList = {}
ifstr(i) $(fDialin) == FALSE
GetRegValue $(KeyProtocols) "fIpxAllowed" TmpList
ifint $(RegLastError) == 0
ifstr *($(TmpList), 4) == 1
set fDialin = TRUE
endif
endif
endif
Debug-Output "OEMNSVRA.INF: Upgrade => Are dialin ports configured? "$(fDialin)
ifstr(i) $(fDialin) == TRUE
OpenRegKey $(!REG_H_LOCAL) "" $(RasSvrKeyName) +
$(!MAXIMUM_ALLOWED) KeySvr
ifstr $(KeySvr) != $(KeyNull)
set RasStartValue = 2
GetRegValue $(KeySvr) "Start" StartList
ifint $(RegLastError) == 0
set RasStartValue = *($(StartList), 4)
endif
; check if the service is currently disabled
ifint $(RasStartValue) != 4
Debug-Output "OEMNSVRA.INF: Changing RemoteAccess Start value to 2"
SetRegValue $(KeySvr) {Start,$(NoTitle),$(!REG_VT_DWORD), 2}
endif
CloseRegKey $(KeySvr)
else
Debug-Output "OEMNSVRA.INF: error opening RemoteAccess service key"
endif
endif
CloseRegKey $(KeyProtocols)
else
Debug-Output "OEMNSVRA.INF: could not open RAS\Protocols key"
endif
; set the NdisTapi parameter for a wksta to server upgrade
OpenRegKey $(!REG_H_LOCAL) "" $(!NdisTapiKeyName)"\Parameters" $(!MAXIMUM_ALLOWED) ParamKey
Ifstr(i) $(ParamKey) != $(KeyNull)
SetRegValue $(ParamKey) {AsyncEventQueueSize, 0, $(!REG_VT_DWORD), 3072}
CloseRegKey $(ParamKey)
EndIf
endif
; If RAS is configured for NWLNKIPX, then rename the IPXROUTER
; key to NWLNKRIP and rename occurances of isnrip.sys to
; nwlnkrip.sys.
; Change the RemoteAccess service dependency to depend on
; NWLNKRIP service.
; Add the NwlnkRip\UseRef key to indicate RAS is
; using the service.
; Also, if SAP agent was installed by RAS, remove and install
; the service by shelling the OEMNSVSA.INF file so that SAP
; agent can be shared by NCP server.
Shell "" UpgradeIpxInfo $(PORTSDLGHANDLE)
; map the NT3.1 ISDN info (if present) to the TAPI DEVICES format
Shell "" UpgradeIsdnInfo
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "OEMNSVRA.INF:error shelling UpgradeIsdnInfo."
goto ShellCodeError
endif
Ifstr(i) $($R0) != STATUS_SUCCESSFUL
Debug-Output "OEMNSVRA.INF:error returned by UpgradeIsdnInfo."
set Error = $(UpgradeIsdnInfoError)
goto fatal
endif
; Add Perfmon data to the registry and load ras perf counters
Shell "" UpdatePerfmonInfo
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "OEMNSVRA.INF:error shelling UpdatePerfmonInfo."
goto ShellCodeError
endif
Ifstr(i) $($R0) != STATUS_SUCCESSFUL
Debug-Output "OEMNSVRA.INF:error returned by UpdatePerfmonInfo."
goto end
endif
Shell "" UpdateCPList
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "OEMNSVRA.INF:error shelling UpdateCPList."
goto ShellCodeError
endif
Ifstr(i) $($R0) != STATUS_SUCCESSFUL
Debug-Output "OEMNSVRA.INF:error returned by UpdateCPList."
goto end
endif
; if this is not a workstation, then bump up the NdisTapi
; parameter to 4 times its original value
ifstr(i) $(!STF_PRODUCT) != "WINNT"
OpenRegKey $(!REG_H_LOCAL) "" $(!NdisTapiKeyName)"\Parameters" $(!MAXIMUM_ALLOWED) ParamKey
Ifstr(i) $(ParamKey) != $(KeyNull)
SetRegValue $(ParamKey) {AsyncEventQueueSize, 0, $(!REG_VT_DWORD), 3072}
CloseRegKey $(ParamKey)
EndIf
EndIf
; Remove and create the program manager group to make sure
; that the new readme icons are created. If setup supported
; querying the program manager to determine if an item exists,
; we could have done this better.
; Just remove the group and don't add it back 3/22/96 RamC
Install RemoveRasGroup
; 3/22/96 Remote Access Program Group is not created any more
; instead the Remote Access Admin icon will appear in Administrative Tools folder
; and Dial-Up Networking icon (previously Remote Access) will appear in Accessories
; and My Computer folder. The help icons will be absorbed in the main NT help.
; the old Remote Access Monitor icon appears in the Control Panel as Dial-Up Monitor.
; Install CreateRasGroup
EndWait
Ifint $(BillboardVisible) != 0
Shell "subroutn.inf" PopBillboard
Set BillboardVisible = 0
Endif
endif
; fix the RAS SoftwareType to correctly be listed as a Servive
; so that then new NCPA will display it.
Shell "" UpdateSoftwareType
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "OEMNSVRA.INF:error shelling UpdateSoftwareType."
goto ShellCodeError
endif
Ifstr(i) $($R0) != STATUS_SUCCESSFUL
Debug-Output "OEMNSVRA.INF:error returned by UpdateSoftwareType."
goto end
endif
SetRegValue $(KeyProduct) {MajorVersion,$(NoTitle),$(!REG_VT_DWORD),$(!ProductMajorVersion)}
SetRegValue $(KeyProduct) {MinorVersion,$(NoTitle),$(!REG_VT_DWORD),$(!ProductMinorVersion)}
;
; Update description and op support
;
SetRegValue $(KeyProduct) {Description,$(NoTitle),$(!REG_VT_SZ),$(ProductRASDescription)}
SetRegValue $(KeyProduct) {OperationsSupport,$(NoTitle),$(!REG_VT_DWORD),$(ProductOpSupport)}
CloseRegKey $(KeyProduct)
else
Set RegistryErrorIndex = $($R0)
goto fatalregistry
endif
goto end
;----------------------------------------------------------------------------
successful = +
; 3/22/96 Remote Access Program Group is not created any more
; instead the Remote Access Admin icon will appear in Administrative Tools folder
; and Dial-Up Networking icon (previously Remote Access) will appear in Accessories
; and My Computer folder. The help icons will be absorbed in the main NT help.
; the old Remote Access Monitor icon appears in the Control Panel as Dial-Up Monitor.
;
; Ifstr(i) $(!NTN_InstallMode) == "install"
; Debug-Output "OEMNSVRA.INF: Creating Ras Group and Icons"
; ifstr(i) $(DoServerOnly) == FALSE
; install CreateRasGroup
; endif
; EndIf
Ifstr(i) $(!NTN_InstallPhase) == primary
goto installstep1
else-ifstr(i) $(!NTN_InstallMode) == configure
goto installstep1
endif
ifint $(NewNumDialin) != 0
; display success message only in attended mode of setup
ifstr(i) $(!STF_GUI_UNATTENDED) != YES
read-syms SuccessfulInstall$(!STF_LANGUAGE)
shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "STATUS" $(Success)
endif
endif
installstep1 = +
goto end
;;;;;;;;;;;;;;;;;;; Warning messages ;;;;;;;;;;;;;
; warning display
;
warning = +
Shell $(subroutninf) SetupMessage, $(!STF_LANGUAGE), "WARNING", $(Error)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto ShellCodeError
endif
ifstr(i) $($R1) == "OK"
goto $(to)
else-ifstr(i) $($R1) == "CANCEL"
goto $(from)
else
Debug-Msg "Error Error Bad DLGEVENT"
goto "end"
endif
;
; non fatal error display
;
nonfatal = +
Shell $(subroutninf) SetupMessage, $(!STF_LANGUAGE), "NONFATAL", $(Error)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto ShellCodeError
endif
ifstr(i) $($R1) == "OK"
goto $(from)
else
goto "end"
endif
;
; Registry is broken
;
fatalregistry = +
Shell $(!UtilityInf) RegistryErrorString $(RegistryErrorIndex)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "fatalregistry: shell to find RegistryErrorString failed."
goto ShellCodeError
endif
ifstr(i) $(RasSpecificString) != ""
set Error = $($R0)" - service "$(RasSpecificString)"."
else
set Error = $($R0)
endif
read-syms AbortMessage$(!STF_LANGUAGE)
set Error = $(Error)$(!LF)$(!LF)$(AbortText)
goto fatal
; fatal error display
;
fatal = +
Shell $(subroutninf) SetupMessage, $(!STF_LANGUAGE), "FATAL", $(Error)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "fatal: shell to SetupMessage failed."
goto ShellCodeError
endif
goto setfailed
;
; Shelling error
;
ShellCodeError = +
read-syms ShellCodeErrorMsg$(!STF_LANGUAGE)
ui start "Error Message"
goto setfailed
setfailed = +
set CommonStatus = STATUS_FAILED
;
; If OEM_ABANDON_ON, we need to clean up the registry
;
ifstr(i) $(fRemoveRas) == TRUE
set fRemoveRas = FALSE
set from = setfailed
set to = end
goto RemoveRas
endif
goto end
filecopycancel =+
set CommonStatus = STATUS_USERCANCEL
ifstr(i) $(fRemoveRas) == TRUE
set fRemoveRas = FALSE
set from = setfailed
set to = end
goto RemoveRas
endif
;
end = +
ifstr(i) $(PORTSDLGHANDLE) != $(HandleNull)
Debug-Output "Unloading RASCFG.DLL"
FreeLibrary $(PORTSDLGHANDLE)
endif
Debug-Output "ending at last!!"
goto term
term = +
Debug-Output "OEMNSVRA.INF:term: CommonStatus "$(CommonStatus)
Return $(CommonStatus)
[BindingsReview]
; This routine is invoked by NCPA when we list OEMNSVRA.INF in the
; ReviewPrograms list in SOFTWARE\Microsoft\NCPA registry key
; we do this to ensure that we are the last to be called for review
; bindings.
;
; extract parameters
;
set Option = $($1)
set SrcDir = $($2)
set AddCopy = $($3)
set DoCopy = $($4)
set DoConfig = $($5)
set Language = $(!STF_LANGUAGE)
set SaveInstallMode = $(!NTN_InstallMode)
; force the bind mode
set !NTN_InstallMode = bind
Shell "" InstallOption $(Language) $(Option) $(SrcDir) $(AddCopy) $(DoCopy) $(DoConfig)
; restore install mode
set !NTN_InstallMode = $(SaveInstallMode)
set Status = $($R0)
Return $(Status)
;*************************************
;
;
; Installation Support Routines
;
;
;************************************
[SetRestoreConnectionTo1]
; Set the system\currentcontrolset\control\networkprovider\restoreconnection value to 1
Debug-Output "SetRestoreConnectionTo1 entry.."
set KeyNull = ""
set RestoreKeyName = "SYSTEM\CurrentControlSet\Control\networkprovider"
OpenRegKey $(!REG_H_LOCAL) "" $(RestoreKeyName) $(!MAXIMUM_ALLOWED) KeyRestore
Ifstr(i) $(KeyRestore) != $(KeyNull)
SetRegValue $(KeyRestore) {RestoreConnection, 0, $(!REG_VT_DWORD), 1}
CloseRegKey $(KeyRestore)
else
Debug-Output "SetRestoreConnectionTo1 error opening key. "$(RestoreKeyName)
endif
Debug-Output "SetRestoreConnectionTo1 exit."
return
[InstallSoftwareAndService]
; Create the software and the service sections in the registry for the component $($0)
set Status = STATUS_SUCCESSFUL
set ThisOption = $($0)
Debug-Output "InstallSoftwareAndService for "$(ThisOption)
Shell $(!UtilityInf), AddSoftwareComponent, $(!Manufacturer), +
$(!Product$(ThisOption)Name), $(!Product$(ThisOption)Name), +
$(!Product$(ThisOption)DisplayName), +
$(!RasInfName), $(!Product$(ThisOption)ImagePath), "autoserviceshare",+
"", {}, "", $(!RasMsgDll), $(!RasEventTypeSupported)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "InstallSoftware: AddSoftware bombed out for "$(ThisOption)
goto InstallSoftwareError
endif
set RegistryErrorIndex = $($R0)
Ifstr(i) $(RegistryErrorIndex) == SERVICE_ALREADY_EXISTS
return $(Status)
EndIf
Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR"
CloseRegKey $($R1)
CloseRegKey $($R2)
CloseRegKey $($R3)
CloseRegKey $($R4)
CloseRegKey $($R5)
goto InstallSoftwareError
endif
;
; At this point:
; $R1 contains the product version key handle;
; $R2 contains the NetRules subkey handle;
; $R3 contains the new Services key handle; and
; $R4 contains the Parameters key
; $R5 contains the Linkage key
;
Set SoftProductKey = $($R1)
CloseRegKey $($R2)
CloseRegKey $($R3)
CloseRegKey $($R4)
CloseRegKey $($R5)
; set product key information in the registry
set NewValueList = +
{{Infname ,$(NoTitle),$(!REG_VT_SZ),$(!RasInfName)},+
{ServiceName,$(NoTitle),$(!REG_VT_SZ),+
$(!Product$(ThisOption)Name)},+
{SoftwareType,$(NoTitle),$(!REG_VT_SZ),+
$(!Product$(ThisOption)SvcType)},+
{Title,$(NoTitle),$(!REG_VT_SZ),$(!Product$(ThisOption)Title)},+
{Description,$(NoTitle),$(!REG_VT_SZ),+
$(!Product$(ThisOption)Description)},+
{PathName,$(NoTitle),$(!REG_VT_SZ),+
$(!Product$(ThisOption)ImagePath)},+
{MajorVersion,$(NoTitle),$(!REG_VT_DWORD),$(!ProductMajorVersion)},+
{MinorVersion,$(NoTitle),$(!REG_VT_DWORD),$(!ProductMinorVersion)},+
{InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(!CurrentDate),1)},+
{Hidden,$(NoTitle),$(!REG_VT_DWORD),$(!HideComponent)}}
Shell $(!UtilityInf), AddValueList, $(SoftProductKey), $(NewValueList)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "InstallSoftware: AddValueList bombed out for "$(ThisOption)
goto InstallSoftwareError
endif
set RegistryErrorIndex = $($R0)
CloseRegKey $(SoftProductKey)
Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR"
goto InstallSoftwareError
endif
goto InstallSoftwareEnd
InstallSoftwareError =+
read-syms ShellCodeErrorMsg$(!STF_LANGUAGE)
ui start "Error Message"
return STATUS_FAILED
InstallSoftwareEnd =+
return $(Status)
[AddInfToReviewProgramsList]
; Add OEMNSVRA.INF to SOFTWARE\Microsoft\NCPA\ReviewPrograms list
Debug-Output "AddInfToReviewPrograms: entry"
set Status = STATUS_FAILED
set KeyNull = ""
set NcpaKeyName = $(!NTN_SoftwareBase)"\Microsoft\Ncpa\CurrentVersion"
set newList = {"OEMNSVRA.INF"}
OpenRegKey $(!REG_H_LOCAL) "" $(NcpaKeyName) $(!MAXIMUM_ALLOWED) KeyNcpa
Ifstr(i) $(KeyNcpa) != $(KeyNull)
GetRegValue $(KeyNcpa) "ReviewPrograms" TmpList
ifint $(RegLastError) == 0
Debug-Output "AddInf: old List "*($(TmpList), 4)
ForListDo *($(TmpList),4)
ifstr(i) $($) != "OEMNSVRA.INF"
set newList = >($(newList), $($))
endif
EndForListDo
Debug-Output "OEMNSVRA.INF: AddInf: new List "$(newList)
SetRegValue $(KeyNcpa) {ReviewPrograms, 0, +
$(!REG_VT_MULTI_SZ),$(newList)}
CloseRegKey $(KeyNcpa)
Set Status = STATUS_SUCCESSFUL
endif
else
Debug-Output "AddInfToReviewPrograms: error opening ncpa key."
endif
Debug-Output "AddInfToReviewPrograms: exit"
return $(Status)
[RemoveInfFromReviewPrograms]
; remove OEMNSVRA.INF from SOFTWARE\Microsoft\NCPA\ReviewPrograms list
Debug-Output "RemoveInfFromReviewPrograms: entry"
set Status = STATUS_FAILED
set KeyNull = ""
set NcpaKeyName = $(!NTN_SoftwareBase)"\Microsoft\Ncpa\CurrentVersion"
set newList = {}
OpenRegKey $(!REG_H_LOCAL) "" $(NcpaKeyName) $(!MAXIMUM_ALLOWED) KeyNcpa
Ifstr(i) $(KeyNcpa) != $(KeyNull)
GetRegValue $(KeyNcpa) "ReviewPrograms" TmpList
ifint $(RegLastError) == 0
Debug-Output "RemoveInf: old List "*($(TmpList), 4)
ForListDo *($(TmpList),4)
ifstr(i) $($) != "OEMNSVRA.INF"
set newList = >($(newList), $($))
endif
EndForListDo
Debug-Output "AddInf: new List "$(newList)
SetRegValue $(KeyNcpa) {ReviewPrograms, 0, +
$(!REG_VT_MULTI_SZ),$(newList)}
CloseRegKey $(KeyNcpa)
Set Status = STATUS_SUCCESSFUL
endif
else
Debug-Output "RemoveInfFromReviewPrograms: error opening ncpa key."
endif
Debug-Output "RemoveInfFromReviewPrograms: exit"
return $(Status)
[InstallResources]
set STF_VITAL = NO ; make sure failure to copy files is not fatal
Debug-Output "In Copying Files"
ifstr(i) $(AddCopy) == "YES"
; attempt to create the system32\ras directory (just a precaution)
; because text mode setup should already have created this directory
CreateDir $(RasDir)
AddSectionFilesToCopyList Files-Resource $(SourceDir) $(!STF_WINDOWSSYSPATH)
AddSectionKeyFileToCopyList Files-Ras-Inf "rasico" $(SourceDir) $(ProductPath)
AddSectionKeyFileToCopyList Files-Ras-Inf "rasread" $(SourceDir) $(ProductPath)
; Always overwrite the files in install mode, but copy new files as *.new in
; update mode.
ifstr(i) $(!NTN_InstallMode) == "Install"
AddSectionKeyFileToCopyList Files-Ras-Inf "modem" $(SourceDir) $(ProductPath)
AddSectionKeyFileToCopyList Files-Ras-Inf "pad" $(SourceDir) $(ProductPath)
AddSectionKeyFileToCopyList Files-Ras-Inf "switch" $(SourceDir) $(ProductPath)
AddSectionKeyFileToCopyList Files-Ras-Scp "cis" $(SourceDir) $(ProductPath)
AddSectionKeyFileToCopyList Files-Ras-Scp "slip" $(SourceDir) $(ProductPath)
AddSectionKeyFileToCopyList Files-Ras-Scp "slipmenu" $(SourceDir) $(ProductPath)
AddSectionKeyFileToCopyList Files-Ras-Scp "pppmenu" $(SourceDir) $(ProductPath)
AddSectionKeyFileToCopyList Files-Ras-Scp "scriptdoc" $(SourceDir) $(ProductPath)
else-Ifstr(i) $(!NTN_InstallMode) == "Update"
forlistdo {modem.new, pad.new, switch.new, cis.new, slip.new, slipmenu.new, pppmenu.new, script.doc}
LibraryProcedure Status, $(!LIBHANDLE), DelFile +
$(!STF_WINDOWSSYSPATH)"\RAS\"$($)
set STF_RENAME = "MODEM.NEW"
AddSectionKeyFileToCopyList Files-Ras-Inf "modem" $(SourceDir) $(ProductPath)
set STF_RENAME = "PAD.NEW"
AddSectionKeyFileToCopyList Files-Ras-Inf "pad" $(SourceDir) $(ProductPath)
set STF_RENAME = "SWITCH.NEW"
AddSectionKeyFileToCopyList Files-Ras-Inf "switch" $(SourceDir) $(ProductPath)
set STF_RENAME = "CIS.SCP"
AddSectionKeyFileToCopyList Files-Ras-Scp "cis" $(SourceDir) $(ProductPath)
set STF_RENAME = "SLIP.SCP"
AddSectionKeyFileToCopyList Files-Ras-Scp "slip" $(SourceDir) $(ProductPath)
set STF_RENAME = "SLIPMENU.SCP"
AddSectionKeyFileToCopyList Files-Ras-Scp "slipmenu" $(SourceDir) $(ProductPath)
set STF_RENAME = "PPPMENU.SCP"
AddSectionKeyFileToCopyList Files-Ras-Scp "pppmenu" $(SourceDir) $(ProductPath)
set STF_RENAME = "SCRIPT.DOC"
AddSectionKeyFileToCopyList Files-Ras-Scp "scriptdoc" $(SourceDir) $(ProductPath)
set STF_RENAME = ""
endif
endif
ifstr(i) $(!NTN_InstallMode) == "Update"
set !STF_NCPA_FLUSH_COPYLIST = TRUE
CopyFilesInCopyList
else-ifstr(i) $(DoCopy) == "YES"
set !STF_NCPA_FLUSH_COPYLIST = TRUE
CopyFilesInCopyList
endif
Debug-Output "Done Copying Files"
exit
[RemoveResources]
Debug-Output "In removing infs and dll"
set RemoveList = {}
set RenameList = {}
set RemoveList = >($(RemoveList), #(Files-RemoveList, MODEMINF, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, PADINF, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, SWITCHINF, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASSETUPHLP, 1))
set RenameList = >($(RenameList), #(Files-RemoveList, RASRESDLL, 1))
set RenameList = >($(RenameList), #(Files-RemoveList, RASCFGDLL, 1))
set RenameList = >($(RenameList), #(Files-RemoveList, RASFIL32DLL, 1))
ForListDo $(RemoveList)
Debug-Output "Removing "$($)
LibraryProcedure Status , $(!LIBHANDLE), DelFile $($)
Debug-Output "Status is "$(Status)
EndForListDo
ForListDo $(RenameList)
Split-String $($) "\" FilePath
QueryListSize PathLen $(FilePath)
Split-String *($(FilePath),$(PathLen)) "." FullFileName
Set FileName = *($(FullFileName),1)
Debug-Output "FileName is "$(FileName)
LibraryProcedure STATUS, $(!LIBHANDLE),CheckFileExistance $(!STF_WINDOWSSYSPATH)"\"$(FileName)".old"
Debug-Output "CheckFile Status = "$(STATUS)
ifstr(i) $(STATUS) == YES
LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_WINDOWSSYSPATH)"\"$(FileName)".old"
Debug-Output "Delfile Status = "$(STATUS)
endif
Debug-Output "Renaming from "$($)
Debug-Output "Renaming to "$(!STF_WINDOWSSYSPATH)"\"$(FileName)".old"
LibraryProcedure Status1 , $(!LIBHANDLE), RenFile $($), $(!STF_WINDOWSSYSPATH)"\"$(FileName)".old"
Debug-Output "Status is "$(Status1)
; Add the files to the delete list so that they get deleted at next boot
AddFileToDeleteList $(!STF_WINDOWSSYSPATH)"\"$(FileName)".old"
EndForListDo
exit
[InstallRasFiles]
set STF_VITAL = NO
set STF_OVERWRITE = "VERIFYSOURCEOLDER"
Debug-Output "In InstallRasFiles Copying Files"
Debug-Output "ServerInstalled "$(ServerInstalled)
Debug-Output "ClientInstalled "$(ClientInstalled)
ifstr(i) $(DoAdmin) == TRUE
AddSectionFilesToCopyList Files-Ras-Admin $(SourceDir) +
$(!STF_WINDOWSSYSPATH)
ifstr(i) $(DoAdminOnly) == TRUE
goto InstallRasFiles1
endif
endif
ifstr(i) $(DoClient) == TRUE
AddSectionFilesToCopyList Files-Ras-Client $(SourceDir) +
$(!STF_WINDOWSSYSPATH)
endif
ifstr(i) $(DoServer) == TRUE
AddSectionFilesToCopyList Files-Ras-Server $(SourceDir) +
$(!STF_WINDOWSSYSPATH)
endif
; we have to copy these files in the upgrade mode
ifstr(i) $(!NTN_InstallMode) == "Update"
AddSectionFilesToCopyList Files-Ras-Common $(SourceDir) +
$(!STF_WINDOWSSYSPATH)
AddSectionFilesToCopyList Files-Ras-Drivers $(SourceDir) +
$(!STF_WINDOWSSYSPATH)\drivers
else
ifstr(i) $(ServerInstalled) == FALSE
ifstr(i) $(ClientInstalled) == FALSE
AddSectionFilesToCopyList Files-Ras-Common $(SourceDir) +
$(!STF_WINDOWSSYSPATH)
AddSectionFilesToCopyList Files-Ras-Drivers $(SourceDir) +
$(!STF_WINDOWSSYSPATH)\drivers
endif
endif
endif
InstallRasFiles1 = +
; force file copy during update mode
ifstr(i) $(!NTN_InstallMode) == "Update"
set !STF_NCPA_FLUSH_COPYLIST = TRUE
CopyFilesInCopyList
else
ifstr(i) $(DoCopy) == "YES"
set !STF_NCPA_FLUSH_COPYLIST = TRUE
CopyFilesInCopyList
endif
endif
Debug-Output "Done Copying Files"
exit
[RemoveRasFiles]
; we should actually use RemoveSectionFiles, but setup hasn't implemented
; it yet, so we remove file by file.
; Do not remove files if this is the install mode and the CopyFlag
; is set to NO because we didn't copy any files in the first place!!
ifstr(i) $(!NTN_InstallMode) == install
ifstr(i) $(DoCopy) == "NO"
Exit
endif
endif
set RemoveList = {}
set RenameList = {}
set fCommonRemoved = FALSE
ifstr(i) $(DoServer) == TRUE
set fCommonRemoved = TRUE
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASGTWYDLL, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASGPRXYDLL, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASSPRXYEXE, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASSRVEXE, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASCTRSDLL, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASCTRSINI, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASCTRNMH, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASSAUTHDLL, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASADMINDLL, 1))
; below are the files common to server and client
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASMANDLL, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASMANEXE, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASMSGDLL, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASMXSDLL, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASSERDLL, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASIPXCPDLL, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASPPPDLL, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASPPPENDLL, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASPAPDLL, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASCHAPDLL, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASSPAPDLL, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASIPCPDLL, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASIPHLPDLL, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASNBFCPDLL, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASCCPDLL, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASCBCPDLL, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASNBIPCDLL, 1))
set RenameList = >($(RenameList), #(Files-RemoveList, ASYNCMACSYS, 1))
set RenameList = >($(RenameList), #(Files-RemoveList, NDISWANSYS, 1))
endif
ifstr(i) $(DoClient) == TRUE
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASDIALEXE, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASPHONEHLP, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASCAUTHDLL, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASAPI32DLL, 1))
ifstr(i) $(fCommonRemoved) == FALSE
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASMANDLL, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASMANEXE, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASMSGDLL, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASMXSDLL, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASSERDLL, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASIPXCPDLL, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASPPPDLL, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASPPPENDLL, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASPAPDLL, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASCHAPDLL, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASSPAPDLL, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASIPCPDLL, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASIPHLPDLL, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASNBFCPDLL, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASCCPDLL, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASCBCPDLL, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASNBIPCDLL, 1))
set RenameList = >($(RenameList), #(Files-RemoveList, ASYNCMACSYS, 1))
set RenameList = >($(RenameList), #(Files-RemoveList, NDISWANSYS, 1))
endif
endif
ifstr(i) $(DoAdmin) == TRUE
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASADMINHLP, 1))
set RemoveList = >($(RemoveList), #(Files-RemoveList, RASGLOSSHLP, 1))
endif
ForListDo $(RemoveList)
Debug-Output "Removing "$($)
LibraryProcedure Status , $(!LIBHANDLE), DelFile $($)
Debug-Output "Status is "$(Status)
EndForListDo
ForListDo $(RenameList)
Split-String $($) "\" FilePath
QueryListSize PathLen $(FilePath)
Split-String *($(FilePath),$(PathLen)) "." FullFileName
Set FileName = *($(FullFileName),1)
Debug-Output "FileName is "$(FileName)
LibraryProcedure STATUS, $(!LIBHANDLE),CheckFileExistance $(!STF_WINDOWSSYSPATH)"\DRIVERS\"$(FileName)".old"
Debug-Output "CheckFile Status = "$(STATUS)
ifstr(i) $(STATUS) == YES
LibraryProcedure STATUS, $(!LIBHANDLE), DelFile $(!STF_WINDOWSSYSPATH)"\DRIVERS\"$(FileName)".old"
Debug-Output "Delfile Status = "$(STATUS)
endif
Debug-Output "Renaming from "$($)
Debug-Output "Renaming to "$(!STF_WINDOWSSYSPATH)"\DRIVERS\"$(FileName)".old"
LibraryProcedure Status1 , $(!LIBHANDLE), RenFile $($), $(!STF_WINDOWSSYSPATH)"\DRIVERS\"$(FileName)".old"
Debug-Output "Status is "$(Status1)
; Add the files to the delete list so that they get deleted at next boot
AddFileToDeleteList $(!STF_WINDOWSSYSPATH)"\DRIVERS\"$(FileName)".old"
EndForListDo
exit
;[CreateRasGroup]
; 3/22/96 Remote Access Program Group is not created any more
; instead the Remote Access Admin icon will appear in Administrative Tools folder
; and Dial-Up Networking icon (previously Remote Access) will appear in Accessories
; and My Computer folder. The help icons will be absorbed in the main NT help.
; the old Remote Access Monitor icon appears in the Control Panel as Dial-Up Monitor.
;
; ; Create and show the RemoteAccess group
;
; CreateCommonProgManGroup $(RasGroup) ""
;
; ShowCommonProgManGroup $(RasGroup), 1
;
; CreateCommonProgManItem $(RasGroup), $(RasPhone) +
; "rasphone.exe" "" 0
; CreateCommonProgManItem $(RasGroup), $(RasMon) +
; "rasmon.exe" "" 0
; CreateCommonProgManItem $(RasGroup), $(RasAdmin) +
; "rasadmin.exe" "" 0
;
;
; ; note that we index into the progman.exe icons for our readme
; ; icon.
;
; CreateCommonProgManItem $(RasGroup), $(ReadMe) +
; "NOTEPAD.EXE "+
; "%SystemRoot%\system32\RAS\RASREAD.TXT" +
; "PROGMAN.EXE" 29
;
; CreateCommonProgManItem $(RasGroup), $(RasHelp) +
; "WINHLP32.EXE "+
; "RASPHONE.HLP" +
; "WINHLP32.EXE" 0
;
; CreateCommonProgManItem $(RasGroup), $(RasInternet) +
; "WINHLP32.EXE -k internet RASPHONE.HLP "+
; "" +
; "%SystemRoot%\system32\RAS\RAS.ICO" 0
;
; ; minimize the RemoteAccess group
;
; ShowCommonProgManGroup $(RasGroup), 6
;
; exit
[RemoveRasGroup]
Debug-Output "Removing icons from "$(RasGroup)
; The reason we create the group before we attempt to remove it is
; to make sure that we don't get an error on removal if the group
; has been deleted by the user.
CreateCommonProgManGroup $(RasGroup) ""
RemoveCommonProgManGroup $(RasGroup)
exit
[AddNDISWANToServiceGroupOrder]
; Add NDISWAN to the ServiceGroupOrder list between NDIS and TDI so
; that the NdisWan driver loads after the NDIS group components like
; AsyMac driver or the TAPI providers have loaded.
set GroupOrderName = "SYSTEM\CurrentControlSet\Control\ServiceGroupOrder"
OpenRegKey $(!REG_H_LOCAL) "" $(GroupOrderName) $(!MAXIMUM_ALLOWED) KeyGroup
set OldList = {}
Ifstr(i) $(KeyGroup) != $(KeyNull)
GetRegValue $(KeyGroup) "List" TmpList
ifint $(RegLastError) == 0
ForListDo *($(TmpList), 4)
set OldList = >($(OldList), $($))
EndForListDo
endif
Debug-Output "AddNDISWANToServiceGroupOrder current list "$(OldList)
Ifcontains(i) "NDISWAN" not-in $(OldList)
set NewGroupList = {}
ForListDo $(OldList)
set NewGroupList = >($(NewGroupList), $($))
ifstr(i) $($) == "NDIS"
; add NDISWAN just after NDIS in the group order
set NewGroupList = >($(NewGroupList), "NDISWAN" )
endif
EndForListDo
Debug-Output "AddNDISWANToServiceGroupOrder new list "$(NewGroupList)
SetRegValue $(KeyGroup) {List, 0,$(!REG_VT_MULTI_SZ),$(NewGroupList)}
endif
CloseRegKey $(KeyGroup)
else
Debug-Output "AddNDISWANToServiceGroupOrder error opening ServiceGroupOrder key."
endif
return
[CheckRasInstalled]
; this routine is for external INF files to determine if RAS is installed
; we check to see if SOFTWARE\Microsoft\RAS\CurrentVerstion key exists.
; if it does the return value is TRUE to indicate that RAS is installed
; else the return value is FALSE to indicate that RAS is not installed.
set MAXIMUM_ALLOWED = 33554432
set ProductKeyName = $(!NTN_SoftwareBase)"\Microsoft\RAS\CurrentVersion"
OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct
Ifstr $(KeyProduct) != ""
CloseRegKey $(KeyProduct)
return "TRUE"
else
return "FALSE"
[QueryComponentsInstalled]
Set Status = STATUS_FAILED
Set ValueName = ""
Set InstalledList = {}
Set InstalledFlags = {}
Set TmpList = {}
Set KeyNull = ""
Set NumberOfComps = 0
Set RasKeyName = $($0)
Debug-Output "QueryComponentsInstalled: "$(RasKeyName)
OpenRegKey $(!REG_H_LOCAL) "" $(RasKeyName) $(!MAXIMUM_ALLOWED) KeyProduct
Ifstr(i) $(KeyProduct) != $(KeyNull)
GetRegValue $(KeyProduct) "RasComponents" TmpList
Debug-Output "QueryComponentsInstalled: "$(TmpList)
ForListDo *($(TmpList),4)
set InstalledList = >($(InstalledList), $($))
EndForListDo
CloseRegKey $(KeyProduct)
Ifcontains(i) "Server" in $(InstalledList)
Set InstalledFlags = >($(InstalledFlags), TRUE)
else
Set InstalledFlags = >($(InstalledFlags), FALSE)
endif
Ifcontains(i) "Client" in $(InstalledList)
Set InstalledFlags = >($(InstalledFlags), TRUE)
else
Set InstalledFlags = >($(InstalledFlags), FALSE)
endif
Ifcontains(i) "Admin" in $(InstalledList)
Set InstalledFlags = >($(InstalledFlags), TRUE)
else
Set InstalledFlags = >($(InstalledFlags), FALSE)
endif
QueryListSize NumberOfComps $(InstalledList)
ifint $(NumberOfComps) == 1
Ifcontains(i) "Server" in $(InstalledList)
Set InstalledFlags = >($(InstalledFlags), TRUE)
else
Set InstalledFlags = >($(InstalledFlags), FALSE)
endif
Ifcontains(i) "Client" in $(InstalledList)
Set InstalledFlags = >($(InstalledFlags), TRUE)
else
Set InstalledFlags = >($(InstalledFlags), FALSE)
endif
Ifcontains(i) "Admin" in $(InstalledList)
Set InstalledFlags = >($(InstalledFlags), TRUE)
else
Set InstalledFlags = >($(InstalledFlags), FALSE)
endif
else
Set InstalledFlags = >($(InstalledFlags), FALSE)
Set InstalledFlags = >($(InstalledFlags), FALSE)
Set InstalledFlags = >($(InstalledFlags), FALSE)
endif
Set Status = STATUS_SUCCESSFUL
Else
Set Status = STATUS_NOT_FOUND
EndIf
Debug-Output "QueryComponentsInstalled: "$(InstalledList)
Return $(Status) $(InstalledList) $(InstalledFlags)
[UpdateComponentsInstalled]
Set Status = STATUS_FAILED
Set InstalledList = $($0)
Set RasKeyName = $($1)
Set KeyNull = ""
Debug-Output "UpdateComponentsInstalled: "$(RasKeyName)
OpenRegKey $(!REG_H_LOCAL) "" $(RasKeyName) $(!MAXIMUM_ALLOWED) KeyProduct
Ifstr(i) $(KeyProduct) != $(KeyNull)
SetRegValue $(KeyProduct) {RasComponents, 0,$(!REG_VT_MULTI_SZ),$(InstalledList)}
CloseRegKey $(KeyProduct)
Set Status = STATUS_SUCCESSFUL
else
Set Status = STATUS_FAILED
endif
return $(Status)
[GetNetworkAccess]
; Returns the remote clients' network access on each of NBF, TCP/IP and IPX
set Status = STATUS_SUCCESSFUL
Set KeyNull = ""
set NbfNetAccess = 0
set TcpIpNetAccess = 0
set IpxNetAccess = 0
set RasProtocolsKeyName = $(!NTN_SoftwareBase)"\Microsoft\RAS\PROTOCOLS"
Debug-Output "GetNetworkAccess entry"
set ProtocolKeyName = $(RasProtocolsKeyName)"\NBF"
OpenRegKey $(!REG_H_LOCAL) "" $(ProtocolKeyName) $(!MAXIMUM_ALLOWED) KeyProtocol
Ifstr(i) $(KeyProtocol) != $(KeyNull)
GetRegValue $(KeyProtocol), "NetBiosGatewayEnabled" NetworkAccess
ifint $(RegLastError) == 0
set NbfNetAccess = *($(NetworkAccess), 4)
endif
CloseRegKey $(KeyProtocol)
else
Debug-Output "GetNetworkAccess:error opening key "$(ProtocolKeyName)
endif
set ProtocolKeyName = $(RasProtocolsKeyName)"\IP"
OpenRegKey $(!REG_H_LOCAL) "" $(ProtocolKeyName) $(!MAXIMUM_ALLOWED) KeyProtocol
Ifstr(i) $(KeyProtocol) != $(KeyNull)
GetRegValue $(KeyProtocol), "AllowNetworkAccess" NetworkAccess
ifint $(RegLastError) == 0
set TcpIpNetAccess = *($(NetworkAccess), 4)
endif
CloseRegKey $(KeyProtocol)
else
Debug-Output "GetNetworkAccess:error opening key "$(ProtocolKeyName)
endif
set ProtocolKeyName = $(RasProtocolsKeyName)"\IPX"
OpenRegKey $(!REG_H_LOCAL) "" $(ProtocolKeyName) $(!MAXIMUM_ALLOWED) KeyProtocol
Ifstr(i) $(KeyProtocol) != $(KeyNull)
GetRegValue $(KeyProtocol), "AllowNetworkAccess" NetworkAccess
ifint $(RegLastError) == 0
set IpxNetAccess = *($(NetworkAccess), 4)
endif
CloseRegKey $(KeyProtocol)
else
Debug-Output "GetNetworkAccess:error opening key "$(ProtocolKeyName)
endif
Debug-Output "GetNetworkAccess exit"
return $(Status) $(NbfNetAccess) $(TcpIpNetAccess) $(IpxNetAccess)
[IsNdisWanBHAdapterInstalled]
; Checks to see if NdisWan adapter for Blood Hound is already installed
set Status = STATUS_FAILED
Set KeyNull = ""
Debug-Output "IsNdisWanBHAdapterInstalled entry"
set NetworkCardKey = $(KeyNull)
OpenRegKey $(!REG_H_LOCAL) "" $(!NetworkCardKeyName) $(!MAXIMUM_ALLOWED) NetworkCardKey
Ifstr(i) $(NetworkCardKey) != $(KeyNull)
set NetcardsList = {}
EnumRegKey $(NetworkCardKey) NetcardsList
Ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
Debug-Output "IsNdisWanBHAdapterInstalled: EnumRegKey failed."
goto IsNdisWanBHAdapterInstalledEnd
endif
; go down the list of installed netcards and determine if
; NdisWan Blood hound adapter is installed
ForListDo $(NetcardsList)
set KeyName = *($($),1)
set Card = $(KeyNull)
OpenRegKey $(NetworkCardKey) "" $(KeyName) $(!MAXIMUM_ALLOWED) Card
ifstr $(Card) == $(KeyNull)
Debug-Output "IsNdisWanBHAdapterInstalled: could not open netcard key "$(KeyName)
else
GetRegValue $(Card), "ProductName" ProductNameInfo
Ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
Debug-Output "IsNdisWanBHAdapterInstalled: ProductName not found."
else
set CardProductName = *($(ProductNameInfo), 4)
Debug-Output "IsNdisWanBHAdapterInstalled: ProductName. "$(CardProductName)
ifstr(i) $(CardProductName) == $(!ProductNDISWANName)
set Status = STATUS_SUCCESSFUL
CloseRegKey $(Card)
goto IsNdisWanBHAdapterInstalledEnd
endif
endif
CloseRegKey $(Card)
endif
EndForListDo
else
Debug-Output "IsNdisWanBHAdapterInstalled: failed to open "$(!NetworkCardKeyName)
endif
IsNdisWanBHAdapterInstalledEnd =+
ifstr(i) $(NetworkCardKey) != $(KeyNull)
CloseRegKey $(NetworkCardKey)
endif
Debug-Output "IsNdisWanBHAdapterInstalled exit"
Return $(Status)
[InstallNdisWanBHAdapter]
; creates the NdisWan adapter so that Blood Hound can bind to it for sniffing
set Status = STATUS_FAILED
set ThisOption = NDISWAN
Debug-Output "InstallNdisWanBHAdapter entry"
Shell "utility.inf", AddHardwareComponent, +
$(!Product$(ThisOption)Name),$(!RasInfName),+
$(!Product$(ThisOption)KeyName)
ifint $($R4) != -1
Set !NETCARD_LIST = >($(!NETCARD_LIST), +
{$(!Product$(ThisOption)Name),+
$(!NetworkCardKeyName)"\"$($R4)})
endif
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "InstallNdisWanBHAdapter:Shell error"
goto InstallNdisWanBHAdapterEnd
endif
set RegistryErrorIndex = $($R0)
Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
Debug-Output "InstallNdisWanBHAdapter:Registry error: add hardware component"
CloseRegKey $($R1)
CloseRegKey $($R2)
CloseRegKey $($R3)
goto InstallNdisWanBHAdapterEnd
endif
; At this point:
; $R1 Registry key variable for HARDWARE\Netcard\(n)
; $R2 Registry key variable for HARDWARE\Netcard\(n)\\NetRules
; $R3 Registry key handle for <service>\Parameters key
; $R4 Adapter number assigned to adapter
; $R5 Service name generated by combining svc name with adapter
; number
set KeyNetcard = $($R1)
set KeyParameters = $($R3)
set KeyAdapterRules = $($R2)
set AdapterNumber = $($R4)
set NewValueList = +
{{Manufacturer,$(NoTitle),$(!REG_VT_SZ),$(!Manufacturer)},+
{Title,$(NoTitle),$(!REG_VT_SZ),+
"["$($R4)"] "$(!Product$(ThisOption)Title)},+
{Description,$(NoTitle),$(!REG_VT_SZ),+
$(!Product$(ThisOption)Description)},+
{ProductName,$(NoTitle),$(!REG_VT_SZ),+
$(!Product$(ThisOption)Name)},+
{ServiceName,$(NoTitle),$(!REG_VT_SZ),$($R5)},+
{InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(!CurrentDate),1)},+
{Hidden,$(NoTitle),$(!REG_VT_DWORD),1}}
Shell "utility.inf", AddValueList, $(KeyNetcard), $(NewValueList)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "InstallNdisWanBHAdapter: ShellCode error"
goto InstallNdisWanBHAdapterEnd
endif
CloseRegKey $(KeyNetcard)
set TempProdName = """"$(!Product$(ThisOption)Name)$(AdapterNumber)""""
set TempBindForm = $(TempProdName)$(!NetRuleHardwareBHBindForm)
set NewValueList = +
{{type,$(NoTitle),$(!REG_VT_SZ),+
$(!NetRuleHardwareBHType)},+
{bindform,$(NoTitle),$(!REG_VT_SZ),$(TempBindForm)}, +
{class,$(NoTitle),$(!REG_VT_MULTI_SZ),+
$(!NetRuleHardwareBHClass)}, +
{InfOption,$(NoTitle),$(!REG_VT_SZ),$(ThisOption)}, +
{Infname ,$(NoTitle),$(!REG_VT_SZ),$(!RasInfName)}}
Shell "utility.inf", AddValueList, $(KeyAdapterRules), $(NewValueList)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "InstallNdisWanBHAdapter: ShellCode error"
goto InstallNdisWanBHAdapterEnd
endif
set RegistryErrorIndex = $($R0)
Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
Debug-Output "InstallNdisWanBHAdapter:Registry error: add hardware component"
CloseRegKey $(KeyParameters)
CloseRegKey $(KeyAdapterRules)
goto InstallNdisWanBHAdapterEnd
endif
CloseRegKey $(KeyAdapterRules)
CloseRegKey $(KeyParameters)
set Status = STATUS_SUCCESSFUL
InstallNdisWanBHAdapterEnd =+
Debug-Output "InstallNdisWanBHAdapter exit"
return $(Status)
[InstallRasArpService]
; intall the RasArp service if it is not already installed
set Status = STATUS_SUCCESSFUL
set KeyNull = ""
Debug-Output "InstallRasArpService entry"
OpenRegKey $(!REG_H_LOCAL) "" $(!RasArpKeyName) $(!MAXIMUM_ALLOWED) KeyService
Ifstr(i) $(KeyService) == $(KeyNull)
Shell "utility.inf", CreateService, $(!ProductRASARPName), +
$(!ProductRASARPDisplayName), +
$(!ProductRASARPImagePath), +
"kernelautostart", "PNP_TDI", {"TCPIP"}, ""
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "OEMNSVRA.INF: InstallRasArpService : ShellCode error"
return STATUS_FAILED
endif
set RegistryErrorIndex = $($R0)
CloseRegKey $($R1)
CloseRegKey $($R2)
CloseRegKey $($R3)
Ifstr(i) $(RegistryErrorIndex) == SERVICE_ALREADY_EXISTS
return $(Status)
EndIf
Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
Debug-Output "OEMNSVRA.INF: InstallRasArpService: Registry error create service"
return STATUS_FAILED
endif
endif
; ; Add RasArp to the DependOnService List of IP service
;
; Make RASARP dependent on TCPIP (the dependency used to be
; the other way around). This change made on 2/11/96 RamC
;
; Shell "" AddServiceDependency $(!ProductRASARPName) "TCPIP"
; ifstr(i) $($R0) == STATUS_FAILED
; Debug-Output "InstallRasArpService: error adding service dependency"
; endif
Ifstr(i) $(KeyService) != $(KeyNull)
CloseRegKey $(KeyService)
endif
Debug-Output "InstallRasArpService exit"
return $(Status)
[RemoveRasArpService]
; remove RasArp service if it is installed
set Status = STATUS_SUCCESSFUL
set KeyNull = ""
Debug-Output "RemoveRasArpService entry"
OpenRegKey $(!REG_H_LOCAL) "" $(!RasArpKeyName) $(!MAXIMUM_ALLOWED) KeyService
Ifstr(i) $(KeyService) != $(KeyNull)
; remove the service using DeleteService
Shell "utility.inf", RemoveService $(!ProductRASARPName) "YES"
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "OEMNSVRA.INF: RemoveRasArpService : ShellCode error"
return STATUS_FAILED
endif
set RegistryErrorIndex = $($R0)
Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
Debug-Output "OEMNSVRA.INF: RemoveRasArpService: Registry error: "
return STATUS_FAILED
endif
; ; Remove IP's dependency on RasArp service
; we don't do this any more because now RasArp depends on TCP/IP service
; no-net changes made on 2/15/96 - RamC
;
; debug-output "Remove IP's RasArp dependency"
; Shell "" RemoveServiceDependency "TCPIP" $(!ProductRASARPName)
; ifstr(i) $($R0) == STATUS_FAILED
; Debug-Output "RemoveRasArpService: error removing service dependency"
; endif
CloseRegKey $(KeyService)
endif
Debug-Output "RemoveRasArpService exit"
return $(Status)
[InstallRasAcdService]
; intall the Auto Connection Driver service if it is not already installed
; 3/11/96 RamC Changed the group from NDISWAN to "Streams Drivers" because
; the load order changed with the recent no-net checkins in NT
;
set Status = STATUS_SUCCESSFUL
set KeyNull = ""
Debug-Output "InstallRasAcdService entry"
OpenRegKey $(!REG_H_LOCAL) "" $(!RasAcdKeyName) $(!MAXIMUM_ALLOWED) KeyService
Ifstr(i) $(KeyService) == $(KeyNull)
Shell "utility.inf", CreateService, $(!ProductRASACDName), +
$(!ProductRASACDDisplayName), +
$(!ProductRASACDImagePath), +
"kernelautostart", "Streams Drivers", {}, ""
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "OEMNSVRA.INF: InstallRasArpService : ShellCode error"
return STATUS_FAILED
endif
set RegistryErrorIndex = $($R0)
CloseRegKey $($R1)
CloseRegKey $($R2)
CloseRegKey $($R3)
Ifstr(i) $(RegistryErrorIndex) == SERVICE_ALREADY_EXISTS
return $(Status)
EndIf
Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
Debug-Output "OEMNSVRA.INF: InstallRasAcdService: Registry error create service"
return STATUS_FAILED
endif
endif
Debug-Output "InstallRasArpService exit"
return $(Status)
[RemoveRasAcdService]
; remove RasArp service if it is installed
set Status = STATUS_SUCCESSFUL
set KeyNull = ""
Debug-Output "RemoveRasAcdService entry"
OpenRegKey $(!REG_H_LOCAL) "" $(!RasAcdKeyName) $(!MAXIMUM_ALLOWED) KeyService
Ifstr(i) $(KeyService) != $(KeyNull)
; remove the service using DeleteService
Shell "utility.inf", RemoveService $(!ProductRASACDName) "YES"
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "OEMNSVRA.INF: RemoveRasAcdService : ShellCode error"
return STATUS_FAILED
endif
set RegistryErrorIndex = $($R0)
Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
Debug-Output "OEMNSVRA.INF: RemoveRasAcdService: Registry error: "
return STATUS_FAILED
endif
CloseRegKey $(KeyService)
endif
Debug-Output "RemoveRasAcdService exit"
return $(Status)
[InstallNdisTapiService]
; intall the NdisTapi service if it is not already installed
set Status = STATUS_SUCCESSFUL
set KeyNull = ""
Debug-Output "InstallNdisTapiService entry"
OpenRegKey $(!REG_H_LOCAL) "" $(!NdisTapiKeyName) $(!MAXIMUM_ALLOWED) KeyService
Ifstr(i) $(KeyService) == $(KeyNull)
Shell "utility.inf", CreateService, $(!ProductNDISTAPIName), +
$(!ProductNDISTAPIDisplayName), +
$(!ProductNDISTAPIImagePath), +
"kernelauto", "NDIS", {}, ""
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "OEMNSVRA.INF: InstallNdisTapiService : ShellCode error"
return STATUS_FAILED
endif
set RegistryErrorIndex = $($R0)
set ParamKey = $($R2)
CloseRegKey $($R1)
CloseRegKey $($R3)
Ifstr(i) $(RegistryErrorIndex) == SERVICE_ALREADY_EXISTS
return $(Status)
EndIf
Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
Debug-Output "OEMNSVRA.INF: InstallNdisTapiService: Registry error create service"
return STATUS_FAILED
endif
ifstr(i) $(!STF_PRODUCT) != "WINNT"
SetRegValue $(ParamKey) {AsyncEventQueueSize, 0, $(!REG_VT_DWORD), 3072}
else
SetRegValue $(ParamKey) {AsyncEventQueueSize, 0, $(!REG_VT_DWORD), 768}
endif
CloseRegKey $(ParamKey)
endif
Ifstr(i) $(KeyService) != $(KeyNull)
CloseRegKey $(KeyService)
endif
Debug-Output "InstallNdisTapiService exit"
return $(Status)
[RemoveNdisTapiService]
; remove NdisTapiService service if it is installed
set Status = STATUS_SUCCESSFUL
set KeyNull = ""
Debug-Output "RemoveNdisTapiService entry"
OpenRegKey $(!REG_H_LOCAL) "" $(!NdisTapiKeyName) $(!MAXIMUM_ALLOWED) KeyService
Ifstr(i) $(KeyService) != $(KeyNull)
; remove the service using DeleteService
Shell "utility.inf", RemoveService $(!ProductNDISTAPIName) "YES"
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "OEMNSVRA.INF: RemoveNdisTapiService : ShellCode error"
return STATUS_FAILED
endif
set RegistryErrorIndex = $($R0)
Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
Debug-Output "OEMNSVRA.INF: RemoveNdisTapiService: Registry error: "
return STATUS_FAILED
endif
CloseRegKey $(KeyService)
endif
Debug-Output "RemoveNdisTapiService exit"
return $(Status)
[InstallNwlnkRipService]
; install the isnsap service by shelling out the OEMNSVRR.INF file.
; The reason we do this is because the RIP service is shared between RAS
; and the IPX installer.
Debug-Output "InstallNwlnkRipService entry"
set Status = STATUS_FAILED
set KeyNull = ""
Set SrcDir = $(!STF_SRCDIR)
; set !STF_SRCDIR_OVERRIDE to the SrcDir value to prevent asking
; the user for the same information.
ifstr(i) $(!NTN_InstallMode) == "install"
set !STF_SRCDIR_OVERRIDE = $(SrcDir)
endif
; set the flags based on what phase we are in and whether this is an
; IDW installation
set AddCopy = YES
set DoCopy = YES
set DoConfig = YES
; save !NTN_InstallMode and change it to install before shelling the
; inf file.
set SaveNTN_InstallMode = $(!NTN_InstallMode)
set !NTN_InstallMode = install
Shell "oemnsvrr.inf" InstallOption $(!STF_LANGUAGE) "NWLNKRIP" +
$(SrcDir) $(AddCopy) $(DoCopy) $(DoConfig) "RAS"
; restore the environment variables
set !NTN_InstallMode = $(SaveNTN_InstallMode)
Ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "Error installing NWLNKRIP service"
Goto InstallNwlnkRipServiceEnd
Endif
Set InstallStatus = $($R0)
Ifstr(i) $(InstallStatus) != STATUS_SUCCESSFUL
Ifstr(i) $(InstallStatus) != STATUS_USERCANCEL
Debug-Output "InstallNwlnkRipService returned "$(InstallStatus)
Goto InstallNwlnkRipServiceEnd
Endif
Endif
; now set the NetbiosRouting parameter appropriately
OpenRegKey $(!REG_H_LOCAL) "" $(!RasIsnRipKeyName) $(!MAXIMUM_ALLOWED) KeyService
ifstr $(KeyService) != ""
OpenRegKey $(KeyService) "" "Parameters" $(!MAXIMUM_ALLOWED) KeyParams
ifstr(i) $(KeyParams) != ""
GetRegValue $(KeyParams),"NetbiosRouting", NetbiosRoutingInfo
Ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
set NetbiosRouting = *($(NetbiosRoutingInfo), 4)
else
; not defined, so set the default value
set NetbiosRouting = 2
endif
; Now enable the WAN bit
ifint $(NetbiosRouting) == 0
set NetbiosRouting = 2
else-ifint $(NetbiosRouting) == 1
set NetbiosRouting = 3
endif
SetRegValue $(KeyParams) {NetbiosRouting, $(NoTitle), $(!REG_VT_DWORD), $(NetbiosRouting)}
CloseRegKey $(KeyParams)
endif
CloseRegKey $(KeyService)
endif
Shell "" AddServiceDependency "RemoteAccess" $(!ProductRASISNRIPName)
ifstr(i) $($R0) == STATUS_FAILED
Debug-Output "InstallNwlnkRipService: error adding service dependency"
endif
set Status = STATUS_SUCCESSFUL
InstallNwlnkRipServiceEnd =+
Debug-Output "InstallNwlnkRipService exit"
return $(Status)
[RemoveNwlnkRipService]
; remove NwlnkRip service by shelling out to OEMNSVRR.INF The service is
; actually removed if RAS is the only consumer. Otherwise, the service
; installer just removes RAS from the list of users of the service.
Debug-Output "RemoveNwlnkRipService entry"
set Status = STATUS_FAILED
set KeyNull = ""
Set SrcDir = $(!STF_SRCDIR)
; set the flags based on what phase we are in and whether this is an
; IDW installation
set AddCopy = YES
set DoCopy = YES
set DoConfig = YES
; save !NTN_InstallMode and change it to deinstall before shelling the
; inf file.
set SaveNTN_InstallMode = $(!NTN_InstallMode)
set !NTN_InstallMode = deinstall
Shell "oemnsvrr.inf" InstallOption $(!STF_LANGUAGE) "NWLNKRIP" +
$(SrcDir) $(AddCopy) $(DoCopy) $(DoConfig) "RAS"
; restore the environment variables
set !NTN_InstallMode = $(SaveNTN_InstallMode)
Ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "Error removing NWLNKRIP service"
Goto RemoveNwlnkRipServiceEnd
Endif
Set RemoveStatus = $($R0)
Ifstr(i) $(RemoveStatus) != STATUS_SUCCESSFUL
Ifstr(i) $(RemoveStatus) != STATUS_USERCANCEL
Debug-Output "RemoveNwlnkRipService returned "$(RemoveStatus)
Goto RemoveNwlnkRipServiceEnd
Endif
Endif
Shell "" RemoveServiceDependency "RemoteAccess" $(!ProductRASISNRIPName)
ifstr(i) $($R0) == STATUS_FAILED
Debug-Output "RemoveNwlnkRipService: error removing service dependency"
endif
set Status = STATUS_SUCCESSFUL
RemoveNwlnkRipServiceEnd =+
Debug-Output "RemoveNwlnkRipService exit"
return $(Status)
[InstallIsnSapService]
; install the isnsap service by shelling out the OEMNSVSA.INF file.
; The reason we do this is because the SAP agent is shared between RAS
; and the NCP server install.
Debug-Output "InstallIsnSapService entry"
set Status = STATUS_FAILED
set KeyNull = ""
Set SrcDir = $(!STF_SRCDIR)
; set !STF_SRCDIR_OVERRIDE to the SrcDir value to prevent asking
; the user for the same information.
ifstr(i) $(!NTN_InstallMode) == "install"
set !STF_SRCDIR_OVERRIDE = $(SrcDir)
endif
; set the flags based on what phase we are in and whether this is an
; IDW installation
set AddCopy = YES
set DoCopy = YES
set DoConfig = YES
; save !NTN_InstallMode and change it to install before shelling the
; inf file.
set SaveNTN_InstallMode = $(!NTN_InstallMode)
set !NTN_InstallMode = install
Shell "oemnsvsa.inf" InstallOption $(!STF_LANGUAGE) "SAP" +
$(SrcDir) $(AddCopy) $(DoCopy) $(DoConfig) "RAS"
; restore the environment variables
set !NTN_InstallMode = $(SaveNTN_InstallMode)
Ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "Error installing SAP agent"
Goto InstallIsnSapServiceEnd
Endif
Set InstallStatus = $($R0)
Ifstr(i) $(InstallStatus) != STATUS_SUCCESSFUL
Ifstr(i) $(InstallStatus) != STATUS_USERCANCEL
Debug-Output "InstallSapService returned "$(InstallStatus)
Goto InstallIsnSapServiceEnd
Endif
Endif
Shell "" AddServiceDependency "RemoteAccess" $(!ProductRASISNSAPName)
ifstr(i) $($R0) == STATUS_FAILED
Debug-Output "InstallIsnSapService: error adding service dependency"
endif
set Status = STATUS_SUCCESSFUL
InstallIsnSapServiceEnd =+
Debug-Output "InstallIsnSapService exit"
return $(Status)
[RemoveIsnSapService]
; remove IsnSap service by shelling out to OEMNSVSA.INF The SAP agent is
; actually removed if RAS is the only consumer. Otherwise, the SAP installer
; just removes RAS from the list of users of SAP agent.
Debug-Output "RemoveIsnSapService entry"
set Status = STATUS_FAILED
set KeyNull = ""
Set SrcDir = $(!STF_SRCDIR)
; set the flags based on what phase we are in and whether this is an
; IDW installation
set AddCopy = YES
set DoCopy = YES
set DoConfig = YES
; save !NTN_InstallMode and change it to deinstall before shelling the
; inf file.
set SaveNTN_InstallMode = $(!NTN_InstallMode)
set !NTN_InstallMode = deinstall
Shell "oemnsvsa.inf" InstallOption $(!STF_LANGUAGE) "SAP" +
$(SrcDir) $(AddCopy) $(DoCopy) $(DoConfig) "RAS"
; restore the environment variables
set !NTN_InstallMode = $(SaveNTN_InstallMode)
Ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "Error removing SAP agent"
Goto RemoveIsnSapServiceEnd
Endif
Set RemoveStatus = $($R0)
Ifstr(i) $(RemoveStatus) != STATUS_SUCCESSFUL
Ifstr(i) $(RemoveStatus) != STATUS_USERCANCEL
Debug-Output "RemoveIsnSapService returned "$(RemoveStatus)
Goto RemoveIsnSapServiceEnd
Endif
Endif
Shell "" RemoveServiceDependency "RemoteAccess" $(!ProductRASISNSAPName)
ifstr(i) $($R0) == STATUS_FAILED
Debug-Output "RemoveIsnSapService: error removing service dependency"
endif
set Status = STATUS_SUCCESSFUL
RemoveIsnSapServiceEnd =+
Debug-Output "RemoveIsnSapService exit"
return $(Status)
[WritePPPParameters]
; this routine copies the PPP parameters information from
; SOFTWARE\..\RAS\PROTOCOLS to SERVICES\RASMAN\PPP key
Debug-Output "WritePPPParameters: entry"
Set Status = STATUS_FAILED
set KeyNull = ""
set RasManKeyName = $(!NTN_ServiceBase)"\RasMan"
set RasManPPPKeyName = $(!NTN_ServiceBase)"\RasMan\PPP"
set RasProtocolsKeyName = $(!NTN_SoftwareBase)"\Microsoft\RAS\PROTOCOLS"
OpenRegKey $(!REG_H_LOCAL) "" $(RasManKeyName) $(!MAXIMUM_ALLOWED) KeyRasMan
ifstr $(KeyRasMan) != $(KeyNull)
; save the old PPP parameters if they are present
OpenRegKey $(KeyRasMan) "" "PPP" $(!MAXIMUM_ALLOWED) KeyRasManPPP
set NewValueList = {}
ifstr $(KeyRasManPPP) != $(KeyNull)
EnumRegValue $(KeyRasManPPP) NewValueList
else
CreateRegKey $(KeyRasMan) +
{"PPP",0,GenericClass} "" $(!MAXIMUM_ALLOWED) "" KeyRasManPPP
CloseRegKey $(KeyRasMan)
ifstr $(KeyRasManPPP) == $(KeyNull)
Debug-Output "WritePPPParameters: error creating RasMan\ppp key"
goto WritePPPParametersEnd
endif
endif
else
Debug-Output "WritePPPParameters: error opening RasMan key"
goto UpdateCPListEnd
endif
ifstr(i) $(NewValueList) == {}
set NewValueList = {{MaxConfigure, 0, $(!REG_VT_DWORD), 10}, +
{MaxTerminate, 0, $(!REG_VT_DWORD), 2}, +
{MaxFailure, 0, $(!REG_VT_DWORD), 10}. +
{MaxReject, 0, $(!REG_VT_DWORD), 5}. +
{NegotiateTime, 0, $(!REG_VT_DWORD), 150}, +
{Logging, 0, $(!REG_VT_DWORD), 0}, +
{RestartTimer, 0, $(!REG_VT_DWORD), 3}}
endif
forlistdo $(NewValueList)
SetRegValue $(KeyRasManPPP) $($)
endforlistdo
; if ForceEncryptedPassword and ForceEncryptedData are set in
; SOFTWARE\..\RAS\PROTOCOLS get that value and store in the RASMAN\PPP key.
; otherwise just default the values.
set ForceEncryptedPassword = 2
set ForceEncryptedData = 0
OpenRegKey $(!REG_H_LOCAL) "" $(RasProtocolsKeyName) $(!MAXIMUM_ALLOWED) KeyRasProtocols
ifstr $(KeyRasProtocols) != $(KeyNull)
GetRegValue $(KeyRasProtocols) "ForceEncryptedPassword" ForceValue
ifint $(RegLastError) == 0
set ForceEncryptedPassword = *($(ForceValue), 4)
endif
GetRegValue $(KeyRasProtocols) "ForceEncryptedData" ForceValue
ifint $(RegLastError) == 0
set ForceEncryptedData = *($(ForceValue), 4)
endif
SetRegValue $(KeyRasManPPP) {ForceEncryptedPassword, 0, +
$(!REG_VT_DWORD),$(ForceEncryptedPassword)}
SetRegValue $(KeyRasManPPP) {ForceEncryptedData, 0, +
$(!REG_VT_DWORD),$(ForceEncryptedData)}
CloseRegKey $(KeyRasProtocols)
endif
CloseRegKey $(KeyRasManPPP)
set Status = STATUS_SUCCESSFUL
WritePPPParametersEnd =+
Debug-Output "WritePPPParameters: exit"
return $(Status)
[UpdateCPList]
; this routine modifies the supported list of CPs and their corresponding
; dll's based on the installed set of protocols.
Debug-Output "UpdateCPList: entry"
Set Status = STATUS_FAILED
set KeyNull = ""
set RasManPPPKeyName = $(!NTN_ServiceBase)"\RasMan\PPP"
; Write the PPP parameters first
Shell "" WritePPPParameters
Shell "" QuerySelectedProtocols
ifstr(i) $($R0) == STATUS_SUCCESSFUL
set fNetbeuiSelected = $($R1)
set fTcpIpSelected = $($R2)
set fIpxSelected = $($R3)
set fNetbeuiAllowed = $($R4)
set fTcpIpAllowed = $($R5)
set fIpxAllowed = $($R6)
else
Debug-Output "UpdateCPList: error QuerySelectedProtocols"
goto UpdateCPListEnd
endif
OpenRegKey $(!REG_H_LOCAL) "" $(RasManPPPKeyName) $(!MAXIMUM_ALLOWED) KeyRasManPPP
ifstr $(KeyRasManPPP) != $(KeyNull)
EnumRegKey $(KeyRasManPPP) OldCPList
ifstr(i) $(fNetbeuiSelected) == TRUE
set fNetbeuiChosen = TRUE
else
set fNetbeuiChosen = $(fNetbeuiAllowed)
endif
ifstr(i) $(fTcpIpSelected) == TRUE
set fTcpIpChosen = TRUE
else
set fTcpIpChosen = $(fTcpIpAllowed)
endif
ifstr(i) $(fIpxSelected) == TRUE
set fIpxChosen = TRUE
else
set fIpxChosen = $(fIpxAllowed)
endif
set CPList = {"PAP", "CHAP", "SPAP", "CBCP", "COMPCP"}
ifstr(i) $(fNetbeuiChosen) == TRUE
set CPList = >($(CPList), "NBFCP")
endif
ifstr(i) $(fTcpIpChosen) == TRUE
set CPList = >($(CPList), "IPCP")
endif
ifstr(i) $(fIpxChosen) == TRUE
set CPList = >($(CPList), "IPXCP")
endif
; ifstr(i) $(fAppleTalkChosen) == TRUE
; set CPList = >($(CPList), "ATALKCP")
; endif
; if a CP was added in a prior configuration and is no more supported
; delete the corresponding registry key
set CurrentCPList = {}
ForListDo $(OldCPList)
set CPName = *($($),1)
ifcontains(i) $(CPName) not-in $(CPList)
DeleteRegTree $(KeyRasManPPP) $(CPName)
else
set CurrentCPList = >($(CurrentCPList), $(CPName))
endif
EndForListDo
forlistdo $(CPList)
; create the CP key only if it doesn't already exist
ifcontains(i) $($) not-in $(CurrentCPList)
CreateRegKey $(KeyRasManPPP) +
{$($),0,GenericClass} "" $(!MAXIMUM_ALLOWED) "" KeyCp
set path = #(CP-List, $($), 1)
set NewValueList = {{Path, 0, $(!REG_VT_EXPAND_SZ), $(path)}}
ifstr $(KeyCp) != $(KeyNull)
Shell "utility.inf", AddValueList, $(KeyCp), +
$(NewValueList)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "UpdateCPList:AddValueList bombed out"
goto UpdateCPListEnd
endif
set RegistryErrorIndex = $($R0)
Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR"
goto UpdateCPListEnd
endif
CloseRegKey $(KeyCp)
else
Debug-Output "UpdateCPList:error creating key"
endif
endif
endforlistdo
CloseRegKey $(KeyRasManPPP)
else
Debug-Output "UpdateCPList:error opening RASMAN\PPP key"
goto UpdateCPListEnd
endif
set Status = STATUS_SUCCESSFUL
UpdateCPListEnd =+
Debug-Output "UpdateCPList: exit"
return $(Status)
[UpdateSoftwareType]
; this routine mofifies \\Software\<manufacturer>\<Product>\CurrentVersion!SoftwareType
; to correctly list a supported type
;
Debug-Output "UpdateSoftwareType: entry"
set ProductKeyName = $(!NTN_SoftwareBase)"\Microsoft\RAS\CurrentVersion"
set Status = STATUS_FAILED
set KeyCurrentVersion = ""
OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(!MAXIMUM_ALLOWED) KeyCurrentVersion
ifstr $(KeyCurrentVersion) == ""
Debug-Output "OEMNSVRA.INF:UpdateSoftwareType: couldn't open "$(ProductKeyName)
goto UpdateSoftwareTypeEnd
endif
SetRegValue $(KeyCurrentVersion) {SoftwareType, 0, $(!REG_VT_SZ), "service" }
CloseRegKey $(KeyCurrentVersion)
set Status = STATUS_SUCCESSFUL
UpdateSoftwareTypeEnd=+
Debug-Output "UpdateSoftwareType: exit"
return $(Status)
[UpdateLLInterface]
; then update the NdisWanx\Parameters\TCPIP\LLInterface key with RasArp value
Debug-Output "UpdateLLInterface: entry"
set Status = STATUS_FAILED
set KeyNull = ""
set LLInterface = "\Device\RASARP"
; find out which one of the NdisWan adapters is bound to the IP stack
; we do this by looking in the Linkage key of IP service
set IPLinkageKeyName = $(!NTN_ServiceBase)"\TCPIP\Linkage"
OpenRegKey $(!REG_H_LOCAL) "" $(IPLinkageKeyName) $(!MAXIMUM_ALLOWED) KeyIpLinkage
ifstr $(KeyIpLinkage) == $(KeyNull)
Debug-Output "OEMNSVRA.INF:UpdateLLInterface: couldn't open IP Linkage key"
goto UpdateLLInterfaceEnd
endif
set NdisWanList = {}
GetRegValue $(KeyIpLinkage) "Bind" TmpList
ForListDo *($(TmpList),4)
Split-String $($), "\", BindList
QueryListSize ListSize $(BindList)
set ServiceName = *($(BindList), $(ListSize))
LibraryProcedure Result $(!LIBHANDLE) SetupStrncmp $(ServiceName) "NdisWan" 7
ifint $(Result) == 0
set NdisWanList = >($(NdisWanList), $(ServiceName))
endif
EndForListDo
CloseRegKey $(KeyIpLinkage)
QueryListSize ListSize $(NdisWanList)
ifint $(ListSize) >= 1
ForListDo $(NdisWanList)
set ServiceKeyName = $(!NTN_ServiceBase)"\"$($)"\Parameters\TCPIP"
OpenRegKey $(!REG_H_LOCAL) "" $(ServiceKeyName) $(!MAXIMUM_ALLOWED) KeyNdisWan
ifstr $(KeyNdisWan) != $(KeyNull)
SetRegValue $(KeyNdisWan) {IPAddress, 0, +
$(!REG_VT_MULTI_SZ), {"0.0.0.0"}}
SetRegValue $(KeyNdisWan) {SubnetMask, 0, +
$(!REG_VT_MULTI_SZ), {"0.0.0.0"}}
SetRegValue $(KeyNdisWan) {DefaultGateway, 0, +
$(!REG_VT_MULTI_SZ), {""}}
SetRegValue $(KeyNdisWan) {LLInterface, 0,+
$(!REG_VT_SZ), $(LLInterface)}
SetRegValue $(KeyNdisWan) {EnableDHCP, 0, +
$(!REG_VT_DWORD), 0}
else
CreateRegKey $(!REG_H_LOCAL) +
{$(ServiceKeyName),0,GenericClass} "" +
$(!MAXIMUM_ALLOWED) "" KeyNdisWan
ifstr $(KeyNdisWan) != $(KeyNull)
SetRegValue $(KeyNdisWan) {IPAddress, 0, +
$(!REG_VT_MULTI_SZ), {"0.0.0.0"}}
SetRegValue $(KeyNdisWan) {SubnetMask, 0, +
$(!REG_VT_MULTI_SZ), {"0.0.0.0"}}
SetRegValue $(KeyNdisWan) {DefaultGateway, 0, +
$(!REG_VT_MULTI_SZ), {""}}
SetRegValue $(KeyNdisWan) {LLInterface, 0,+
$(!REG_VT_SZ), $(LLInterface)}
SetRegValue $(KeyNdisWan) {EnableDHCP, 0, +
$(!REG_VT_DWORD), 0}
SetRegValue $(KeyNdisWan) {UseZeroBroadcast, 0, +
$(!REG_VT_DWORD), 0}
else
Debug-Output "OEMNSVRA.INF:UpdateLLInterface: couldn't create NdisWan params-tcpip key"
goto UpdateLLInterfaceEnd
endif
endif
CloseRegKey $(KeyNdisWan)
EndForListDo
endif
set Status = STATUS_SUCCESSFUL
UpdateLLInterfaceEnd =+
Debug-Output "UpdateLLInterface: exit"
return $(Status)
[SetRasArpBindValueFromTcpIP]
;Set the services\RasArp\Linkage\Bind to all NdisWan bindings of TCP/IP
Debug-Output "SetRasArpBindValueFromTcpIP: entry"
set Status = STATUS_FAILED
set KeyNull = ""
; find out which one of the NdisWan adapters is bound to the IP stack
; we do this by looking in the Linkage key of IP service
set IPLinkageKeyName = $(!NTN_ServiceBase)"\TCPIP\Linkage"
OpenRegKey $(!REG_H_LOCAL) "" $(IPLinkageKeyName) $(!MAXIMUM_ALLOWED) KeyIpLinkage
ifstr $(KeyIpLinkage) == $(KeyNull)
Debug-Output "OEMNSVRA.INF:SetRasArpBindValueFromTcpIP: couldn't open IP Linkage key"
goto SetRasArpBindValueFromTcpIPEnd
endif
set NdisWanList = {}
GetRegValue $(KeyIpLinkage) "Bind" TmpList
ForListDo *($(TmpList),4)
Split-String $($), "\", BindList
QueryListSize ListSize $(BindList)
set ServiceName = *($(BindList), $(ListSize))
LibraryProcedure Result $(!LIBHANDLE) SetupStrncmp $(ServiceName) "NdisWan" 7
ifint $(Result) == 0
set NdisWanList = >($(NdisWanList), $($))
endif
EndForListDo
set RasArpLinkageKeyName = $(!NTN_ServiceBase)"\RASARP\Linkage"
OpenRegKey $(!REG_H_LOCAL) "" $(RasArpLinkageKeyName) $(!MAXIMUM_ALLOWED) KeyRasArpLinkage
ifstr $(KeyRasArpLinkage) != $(KeyNull)
SetRegValue $(KeyRasArpLinkage) {Bind, 0, $(!REG_VT_MULTI_SZ), $(NdisWanList)}
CloseRegKey $(KeyRasArpLinkage)
endif
CloseRegKey $(KeyIpLinkage)
set Status = STATUS_SUCCESSFUL
SetRasArpBindValueFromTcpIPEnd=+
Debug-Output "SetRasArpBindValueFromTcpIP: entry"
return $(Status)
[UpdateNetGroupDependency]
; set the DependOnGroup and OtherDependencies parameter of the corresponding
; service to NDISWAN. This will ensure that in a no netcard installation of ras
; the ras drivers would be forced to load
Set Status = STATUS_SUCCESSFUL
set KeyNull = ""
set fNetbeuiInstalled = $($0)
set fTcpIpInstalled = $($1)
set fIpxInstalled = $($2)
Debug-Output "UpdateNetGroupDependency entry"
set ServiceList = {}
ifstr(i) $(fNetbeuiInstalled) == TRUE
set ServiceList = >($(ServiceList), "nbf")
endif
ifstr(i) $(fTcpIpInstalled) == TRUE
set ServiceList = >($(ServiceList), "tcpip")
endif
ifstr(i) $(fIpxInstalled) == TRUE
set ServiceList = >($(ServiceList), "nwlnkipx")
endif
ForListDo $(ServiceList)
set Service = $($)
Debug-Output "OEMNSVRA.INF: Changing group dependency of "$(Service)
OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\"$(Service) +
$(!MAXIMUM_ALLOWED) KeyService
ifstr $(KeyService) != $(KeyNull)
set newGroupList = {"+NDIS", "+NDISWAN"}
GetRegValue $(KeyService) "DependOnGroup" GrpList
ifint $(RegLastError) == 0
Debug-Output "UpdateNetGroupDependency: old group List "*($(GrpList), 4)
ForListDo *($(GrpList),4)
ifstr(i) $($) != "NDIS"
ifstr(i) $($) != "NDISWAN"
set newGroup = "+"$($)
set newGroupList = >($(newGroupList), $(newGroup))
endif
endif
EndForListDo
endif
GetRegValue $(KeyService) "DependOnService" ServiceList
ifint $(RegLastError) == 0
Debug-Output "UpdateNetGroupDependency: old service List "*($(ServiceList), 4)
ForListDo *($(ServiceList),4)
set newGroupList = >($(newGroupList), $($))
EndForListDo
endif
Debug-Output "OEMNSVRA.INF: UpdateNetGroupDependency: new depend List "$(newGroupList)
LibraryProcedure Result, $(!LIBHANDLE), SetupChangeServiceConfig, $(Service) $(!SERVICE_NO_CHANGE), $(!SERVICE_NO_CHANGE), $(!SERVICE_NO_CHANGE), "", "", $(newGroupList), "", "", ""
CloseRegKey $(KeyService)
else
Debug-Output "UpdateNetGroupDependency: failed to open service linkage key"$(Service)
endif
EndForListDo
Debug-Output "UpdateNetGroupDependency exit"
return $(Status)
[RemoveNetGroupDependency]
;Remove transport dependency on group NDISWAN
Set Status = STATUS_SUCCESSFUL
set KeyNull = ""
set fNetbeuiInstalled = $($0)
set fTcpIpInstalled = $($1)
set fIpxInstalled = $($2)
Debug-Output "UpdateNetGroupDependency entry"
set ServiceList = {"nbf", "tcpip", "nwlnkipx"}
ForListDo $(ServiceList)
set Service = $($)
Debug-Output "OEMNSVRA.INF: Changing group dependency of "$(Service)
OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\"$(Service) +
$(!MAXIMUM_ALLOWED) KeyService
ifstr $(KeyService) != $(KeyNull)
; check whether the service is marked for deletion
set DeleteFlag = ""
GetRegValue $(KeyService),"DeleteFlag", DeleteFlagInfo
set DeleteFlag = *($(DeleteFlagInfo), 4)
ifint $(DeleteFlag) != 1
set newGroupList = {}
GetRegValue $(KeyService) "DependOnGroup" GrpList
ifint $(RegLastError) == 0
Debug-Output "UpdateNetGroupDependency: old List "*($(GrpList), 4)
ForListDo *($(GrpList),4)
ifstr(i) $($) != "NDISWAN"
set newGroup = "+"$($)
set newGroupList = >($(newGroupList), $(newGroup))
endif
EndForListDo
endif
GetRegValue $(KeyService) "DependOnService" ServiceList
ifint $(RegLastError) == 0
Debug-Output "UpdateNetGroupDependency: old service List "*($(ServiceList), 4)
ForListDo *($(ServiceList),4)
set newGroupList = >($(newGroupList), $($))
EndForListDo
endif
Debug-Output "OEMNSVRA.INF: UpdateNetGroupDependency: new depend List "$(newGroupList)
LibraryProcedure Result, $(!LIBHANDLE), SetupChangeServiceConfig, $(Service) $(!SERVICE_NO_CHANGE), $(!SERVICE_NO_CHANGE), $(!SERVICE_NO_CHANGE), "", "", $(newGroupList), "", "", ""
CloseRegKey $(KeyService)
endif
else
Debug-Output "UpdateNetGroupDependency: failed to open service linkage key"$(Service)
endif
EndForListDo
Debug-Output "UpdateNetGroupDependency exit"
return $(Status)
[UpdateIPRouterInfo]
; set the IPEnableRouter parameter in TCPIP\Parameters based on input param 1
set EnableRouter = $($0)
set KeyNull = ""
Debug-Output "UpdateIPRouterInfo entry"
OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\TCPIP\parameters" $(!MAXIMUM_ALLOWED) KeyIpParams
ifstr $(KeyIpParams) != $(KeyNull)
SetRegValue $(KeyIpParams) {IPEnableRouter, 0,+
$(!REG_VT_DWORD), $(EnableRouter)}
CloseRegKey $(KeyIpParams)
endif
Debug-Output "UpdateIPRouterInfo exit"
return STATUS_SUCCESSFUL
[UpdateIPXRouterInfo]
; Set the DisableWanTraffic parameter in NWLNKIPX\NetConfig\Driverxx key to
; the passed in value of EnableRouter
set Status = STATUS_FAILED
set EnableRouter = $($0)
set KeyNull = ""
Debug-Output "UpdateIPXRouterInfo entry"
OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\NWLNKIPX\NetConfig" $(!MAXIMUM_ALLOWED) KeyIpxNetConfig
ifstr $(KeyIpxNetConfig) != $(KeyNull)
EnumRegKey $(KeyIpxNetConfig) DriverList
ForListDo $(DriverList)
set DriverName = *($($),1)
OpenRegKey $(KeyIpxNetConfig) "" $(DriverName) $(!MAXIMUM_ALLOWED) Driver
ifstr $(Driver) == $(KeyNull)
Debug-Output "UpdateIPXRouterInfo: could not open key ipx\netconfig\"$(DriverName)
CloseRegKey $(KeyIpxNetConfig)
return $(Status)
endif
SetRegValue $(Driver) {EnableWanRouter, 0,+
$(!REG_VT_DWORD), $(EnableRouter)}
CloseRegKey $(Driver)
EndForListDo
CloseRegKey $(KeyIpxNetConfig)
set Status = STATUS_SUCCESSFUL
else
Debug-Output "UpdateIPXRouterInfo: error opening ipx\netconfig key"
endif
Debug-Output "UpdateIPXRouterInfo exit"
return $(Status)
[IsNetcardInstalled]
; determine if a network card is installed on the system.
; Return TRUE if a non-ras network card is installed, FALSE otherwise.
Set Status = STATUS_FAILED
Set fNetcardInstalled = FALSE
Set KeyNull = ""
set ProductRASASYMACName = "AsyncMac"
set NetworkCardKey = $(KeyNull)
OpenRegKey $(!REG_H_LOCAL) "" $(!NetworkCardKeyName) $(!MAXIMUM_ALLOWED) NetworkCardKey
Ifstr(i) $(NetworkCardKey) != $(KeyNull)
set NetcardsList = {}
EnumRegKey $(NetworkCardKey) NetcardsList
Ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
Debug-Output "IsNetcardInstalled: EnumRegKey failed."
goto IsNetcardInstalledEnd
endif
; go down the list of installed netcards and determine if there are
; any netcards which are not AsyncMac, NdiswanDialin or NdiswanDialout
ForListDo $(NetcardsList)
set KeyName = *($($),1)
set Card = $(KeyNull)
OpenRegKey $(NetworkCardKey) "" $(KeyName) $(!MAXIMUM_ALLOWED) Card
ifstr $(Card) == $(KeyNull)
Debug-Output "IsNetcardInstalled: could not open netcard key "$(KeyName)
else
GetRegValue $(Card), "ProductName" ProductNameInfo
Ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
Debug-Output "IsNetcardInstalled: ProductName not found."
else
set CardProductName = *($(ProductNameInfo), 4)
Debug-Output "IsNetcardInstalled: ProductName. "$(CardProductName)
ifstr(i) $(CardProductName) != $(!ProductNDISWANName)
ifstr(i) $(CardProductName) != $(!ProductNDISWANDIALINName)
ifstr(i) $(CardProductName) != $(!ProductNDISWANDIALOUTName)
ifstr(i) $(CardProductName) != $(!ProductNDISWANDIALINIPName)
ifstr(i) $(CardProductName) != $(!ProductNDISWANDIALOUTIPName)
ifstr(i) $(CardProductName) != $(!ProductNDISWANDIALINOUTIPXName)
ifstr(i) $(CardProductName) != $(ProductRASASYMACName)
ifstr(i) $(CardProductName) != $(!ProductPCIMACName)
GetRegValue $(Card), "Manufacturer" Manufacturer
Ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
; if the Manufacturer is Digiboard then this
; is more than likely a multi-port adapter and
; not a net card. so check that.
ifstr(i) *($(Manufacturer), 4) != "Digiboard"
Debug-Output "found installed netcard"
set fNetcardInstalled = TRUE
set Status = STATUS_SUCCESSFUL
CloseRegKey $(Card)
goto IsNetcardInstalledEnd
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
CloseRegKey $(Card)
endif
EndForListDo
else
Debug-Output "IsNetcardInstalled: failed to open "$(!NetworkCardKeyName)
endif
IsNetcardInstalledEnd =+
ifstr(i) $(NetworkCardKey) != $(KeyNull)
CloseRegKey $(NetworkCardKey)
endif
Return $(Status) $(fNetcardInstalled)
[IsNetworkConfigured]
; determine if the lanman workstation isinstalled on the system.
set WkstaKeyName = $(!NTN_ServiceBase)"\LanmanWorkstation"
set SrvrKeyName = $(!NTN_ServiceBase)"\LanmanServer"
Set KeyNull = ""
Set status = STATUS_FAILED
Set WkstaConfigured = FALSE
Set SrvrConfigured = FALSE
Debug-Output "IsNetworkConfigured WkstaKeyName "$(WkstaKeyName)
set KeyProduct = $(KeyNull)
OpenRegKey $(!REG_H_LOCAL) "" $(WkstaKeyName) $(!MAXIMUM_ALLOWED) KeyProduct
Ifstr(i) $(KeyProduct) != $(KeyNull)
GetRegValue $(KeyProduct),"DeleteFlag", DeleteFlagInfo
set DeleteFlag = *($(DeleteFlagInfo), 4)
ifint $(DeleteFlag) != 1
set WkstaConfigured = TRUE
endif
CloseRegKey $(KeyProduct)
endif
Debug-Output "IsNetworkConfigured SrvrKeyName "$(SrvrKeyName)
set KeyProduct = $(KeyNull)
OpenRegKey $(!REG_H_LOCAL) "" $(SrvrKeyName) $(!MAXIMUM_ALLOWED) KeyProduct
Ifstr(i) $(KeyProduct) != $(KeyNull)
GetRegValue $(KeyProduct),"DeleteFlag", DeleteFlagInfo
set DeleteFlag = *($(DeleteFlagInfo), 4)
ifint $(DeleteFlag) != 1
set SrvrConfigured = TRUE
endif
CloseRegKey $(KeyProduct)
endif
set status = STATUS_SUCCESSFUL
Debug-Output "IsNetworkConfigured exit"
Return $(status) $(WkstaConfigured) $(SrvrConfigured)
[QueryInstalledProtocols]
; determine if Nbf, Tcpip and Ipx transports are installed in the system
Debug-Output "QueryInstalledProtocols entry "
set NbfKeyName = $(!NTN_ServiceBase)"\Nbf"
set TcpIpKeyName = $(!NTN_ServiceBase)"\TcpIp"
set IpxKeyName = $(!NTN_ServiceBase)"\NWLNKIPX"
set AppleTalkKeyName = $(!NTN_ServiceBase)"\AppleTalk"
Set KeyNull = ""
Set status = STATUS_FAILED
Set NbfInstalled = FALSE
Set TcpIpInstalled = FALSE
Set IpxInstalled = FALSE
Set AppleTalkInstalled = FALSE
set KeyService = $(KeyNull)
set DeleteFlag = 0
set DeleteFlagInfo = {}
OpenRegKey $(!REG_H_LOCAL) "" $(NbfKeyName) $(!MAXIMUM_ALLOWED) KeyService
Ifstr(i) $(KeyService) != $(KeyNull)
; check whether it is marked for deletion
GetRegValue $(KeyService),"DeleteFlag", DeleteFlagInfo
set DeleteFlag = *($(DeleteFlagInfo), 4)
ifint $(DeleteFlag) != 1
set NbfInstalled = TRUE
endif
CloseRegKey $(KeyService)
endif
set KeyService = $(KeyNull)
set DeleteFlag = 0
set DeleteFlagInfo = {}
OpenRegKey $(!REG_H_LOCAL) "" $(TcpIpKeyName) $(!MAXIMUM_ALLOWED) KeyService
Ifstr(i) $(KeyService) != $(KeyNull)
; check whether it is marked for deletion
GetRegValue $(KeyService),"DeleteFlag", DeleteFlagInfo
set DeleteFlag = *($(DeleteFlagInfo), 4)
ifint $(DeleteFlag) != 1
set TcpIpInstalled = TRUE
endif
CloseRegKey $(KeyService)
endif
set KeyService = $(KeyNull)
set DeleteFlag = 0
set DeleteFlagInfo = {}
OpenRegKey $(!REG_H_LOCAL) "" $(IpxKeyName) $(!MAXIMUM_ALLOWED) KeyService
Ifstr(i) $(KeyService) != $(KeyNull)
; check whether it is marked for deletion
GetRegValue $(KeyService),"DeleteFlag", DeleteFlagInfo
set DeleteFlag = *($(DeleteFlagInfo), 4)
ifint $(DeleteFlag) != 1
set IpxInstalled = TRUE
endif
CloseRegKey $(KeyService)
endif
set KeyService = $(KeyNull)
set DeleteFlag = 0
set DeleteFlagInfo = {}
OpenRegKey $(!REG_H_LOCAL) "" $(AppleTalkKeyName) $(!MAXIMUM_ALLOWED) KeyService
Ifstr(i) $(KeyService) != $(KeyNull)
; check whether it is marked for deletion
GetRegValue $(KeyService),"DeleteFlag", DeleteFlagInfo
set DeleteFlag = *($(DeleteFlagInfo), 4)
ifint $(DeleteFlag) != 1
set AppleTalkInstalled = TRUE
endif
CloseRegKey $(KeyService)
endif
set status = STATUS_SUCCESSFUL
Debug-Output "QueryInstalledProtocols exit"
Return $(status) $(NbfInstalled) $(TcpIpInstalled) $(IpxInstalled) +
$(AppleTalkInstalled)
[ProtocolInfo]
; this information is used by InstallProtocol
; protocol name INF file, Option name, bill board index
NETBEUI = "OEMNXPNB.INF", "NBF", 1
TCPIP = "OEMNXPTC.INF", "TC", 2
IPX = "OEMNXPIP.INF", "NWLNKIPX", 3
[InstallProtocol]
; install the specified protocol in parameter 1, by shelling the
; respective inf file.
Set Status = STATUS_FAILED
Set KeyNull = ""
set Protocol = $($0)
; protocol name INF name, Option name, Bill board index
Debug-Output "OEMNSVRA.INF: Label: InstallProtocol"
Set ThisInfName = #(ProtocolInfo, $(Protocol), 1)
Set InfOption = #(ProtocolInfo, $(Protocol), 2)
Set BbIndex = #(ProtocolInfo, $(Protocol), 3)
Debug-Output "OEMNSVRA.INF: Installing "$(ThisInfName)
Ifint $(BbIndex) != 0
read-syms Billboard$(BbIndex)$(!STF_LANGUAGE)
Shell "subroutn.inf" PushBillboard NETSTATUSDLG $(Status)
Set BillboardVisible = 1
Else-ifint $(BillboardVisible) != 0
Shell "subroutn.inf" PopBillboard
Set BillboardVisible = 0
Endif
; set the flags based on what phase we are in and whether this is an
; IDW installation
set AddCopy = YES
set DoCopy = YES
set DoConfig = YES
; indicate to the invoked INF file that RAS setup is invoking them
; this is required because if RAS installed these protocols then those
; INF files should not display a popup that they should configure RAS
; after installing the respective protocols.
set InvokedByRas = YES
; save !NTN_InstallMode and change it to install before shelling the
; inf file.
; save !STF_INSTALL_MODE and change it to EXPRESS before shelling the
; inf file - this triggers the silent mode of install.
set SaveNTN_InstallMode = $(!NTN_InstallMode)
set SaveSTF_INSTALL_MODE = $(!STF_INSTALL_MODE)
set !NTN_InstallMode = install
set !STF_INSTALL_MODE = EXPRESS
Shell $(ThisInfName) InstallOption $(!STF_LANGUAGE) $(InfOption) $(!STF_SRCDIR) $(AddCopy) $(DoCopy) $(DoConfig) $(InvokedByRas)
; restore the environment variables
set !NTN_InstallMode = $(SaveNTN_InstallMode)
set !STF_INSTALL_MODE = $(SaveSTF_INSTALL_MODE)
Ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "OEMNSVRA.INF: INF "$(ThisInfName)" SHELL ERROR!"
Goto InstallProtocolEscape
Endif
Set InstallProtocolStatus = $($R0)
Ifstr(i) $(InstallProtocolStatus) != STATUS_SUCCESSFUL
Ifstr(i) $(InstallProtocolStatus) != STATUS_USERCANCEL
Debug-Output "OEMNSVRA.INF: INF "$(ThisInfName)" returned "$(InstallProtocolStatus)
Goto InstallProtocolEscape
Endif
Endif
InstallProtocolEscape = +
set Status = $(InstallProtocolStatus)
return $(Status)
[UpgradeSelectedProtocols]
; upgrade the user selected protocols info in the
; SOFTWARE\Microsoft\RAS\Protocols key. This procedure
; is called during Upgrade of the product.
; 10/9/95 added the new Multilink key and value which is defaulted to 0 (disabled) if
; not present.
Debug-Output "UpgradeSelectedProtocols entry."
set Status = STATUS_FAILED
Set KeyNull = ""
set RasKeyName = $(!NTN_SoftwareBase)"\Microsoft\Ras"
set RasProtocolName = $(!NTN_SoftwareBase)"\Microsoft\Ras\Protocols"
set RasServiceParmName = $(!NTN_ServiceBase)"\Remoteaccess\Parameters"
set AsyMacServiceParmName = $(!NTN_ServiceBase)"\AsyncMac\Parameters"
set RasManPPPName = $(!NTN_ServiceBase)"\RasMan\PPP"
; first get the NetBiosGatewayEnabled parameter value. This tells us
; how the system was configured earlier for us to set the protocol info.
set GtwyEnabled = 1
OpenRegKey $(!REG_H_LOCAL) "" $(RasServiceParmName) $(!MAXIMUM_ALLOWED) KeyParam
ifstr $(KeyParam) != $(KeyNull)
GetRegValue $(KeyParam), "NetBiosGatewayEnabled", GtwyEnabledList
ifint $(RegLastError) == 0
set GtwyEnabled = *($(GtwyEnabledList), 4)
endif
CloseRegKey $(KeyParam)
else
Debug-Output "UpgradeSelectedProtocols: error opening RemoteAccess\Parameters key"
endif
; now get the number of configured ports for each protocol
set DialinNBF = 0
set DialinIP = 0
set DialoutNBF = 0
set DialoutIP = 0
set DialinoutIPX = 0
OpenRegKey $(!REG_H_LOCAL) "" $(AsyMacServiceParmName) $(!MAXIMUM_ALLOWED) KeyParam
ifstr $(KeyParam) != $(KeyNull)
GetRegValue $(KeyParam), "DialinNBF", DialinNBFList
ifint $(RegLastError) == 0
set DialinNBF = *($(DialinNBFList), 4)
endif
GetRegValue $(KeyParam), "DialinIP", DialinIPList
ifint $(RegLastError) == 0
set DialinIP = *($(DialinIPList), 4)
endif
GetRegValue $(KeyParam), "DialoutNBF", DialoutNBFList
ifint $(RegLastError) == 0
set DialoutNBF = *($(DialoutNBFList), 4)
endif
GetRegValue $(KeyParam), "DialoutIP", DialoutIPList
ifint $(RegLastError) == 0
set DialoutIP = *($(DialoutIPList), 4)
endif
GetRegValue $(KeyParam), "DialinoutIPX", DialinoutIPXList
ifint $(RegLastError) == 0
set DialinoutIPX = *($(DialinoutIPXList), 4)
endif
CloseRegKey $(KeyParam)
else
Debug-Output "UpgradeSelectedProtocols: error opening AsyncMac\Parameters key"
endif
set fDownLevel = FALSE
OpenRegKey $(!REG_H_LOCAL) "" $(RasProtocolName) $(!MAXIMUM_ALLOWED) RasProtocolKey
ifstr $(RasProtocolKey) == $(KeyNull)
; we are dealing with a NT3.1 system here
set fDownLevel = TRUE
OpenRegKey $(!REG_H_LOCAL) "" $(RasKeyName) $(!MAXIMUM_ALLOWED) RasKey
CreateRegKey $(RasKey) {"Protocols",0,GenericClass} "" $(!MAXIMUM_ALLOWED) "" RasProtocolKey
OpenRegKey $(RasKey) "" "Protocols" $(!MAXIMUM_ALLOWED) RasProtocolKey
CloseRegKey $(RasKey)
endif
ifstr $(RasProtocolKey) != $(KeyNull)
; The MultiLink value is new, if it is not set, then default it to 0 (disabled)
set MultilinkList = {}
GetRegValue $(RasProtocolKey), "Multilink", MultiLinkList
ifint $(RegLastError) != 0
Debug-Output "Upgradeselectedprotocols: defaulting Multilink to 0"
SetRegValue $(RasProtocolKey) {Multilink, 0, $(!REG_VT_DWORD), 0}
endif
; xxxSelected means for dial-out and xxxAllowed means for dial-in
set NetbeuiSelected = 0
set NetbeuiAllowed = 0
set TcpIpSelected = 0
set TcpIpAllowed = 0
set IpxSelected = 0
set IpxAllowed = 0
ifint $(DialoutNBF) != 0
set NetbeuiSelected = 1
endif
ifint $(GtwyEnabled) == 1
ifint $(DialinNBF) != 0
set NetbeuiAllowed = 1
endif
else
ifint $(DialoutNBF) != 0
set NetbeuiAllowed = 1
endif
endif
ifstr(i) $(fDownLevel) != TRUE
ifint $(DialoutIP) != 0
set TcpIpSelected = 1
endif
ifint $(DialinIP) != 0
set TcpIpAllowed = 1
endif
ifint $(DialinoutIPX) != 0
set IpxSelected = 1
set IpxAllowed = 1
endif
endif
set ItemList = {}
GetRegValue $(RasProtocolKey), "fNetbeuiSelected", ItemList
ifint $(RegLastError) != 0
SetRegValue $(RasProtocolKey) {fNetbeuiSelected, 0,+
$(!REG_VT_DWORD),$(NetbeuiSelected)}
endif
GetRegValue $(RasProtocolKey), "fTcpIpSelected", ItemList
ifint $(RegLastError) != 0
SetRegValue $(RasProtocolKey) {fTcpIpSelected, 0,+
$(!REG_VT_DWORD),$(TcpIpSelected)}
endif
GetRegValue $(RasProtocolKey), "fIpxSelected", ItemList
ifint $(RegLastError) != 0
SetRegValue $(RasProtocolKey) {fIpxSelected, 0,+
$(!REG_VT_DWORD),$(IpxSelected)}
endif
GetRegValue $(RasProtocolKey), "fNetbeuiAllowed", ItemList
ifint $(RegLastError) != 0
SetRegValue $(RasProtocolKey) {fNetbeuiAllowed, 0,+
$(!REG_VT_DWORD),$(NetbeuiAllowed)}
endif
GetRegValue $(RasProtocolKey), "fTcpIpAllowed", ItemList
ifint $(RegLastError) != 0
SetRegValue $(RasProtocolKey) {fTcpIpAllowed, 0,+
$(!REG_VT_DWORD),$(TcpIpAllowed)}
endif
GetRegValue $(RasProtocolKey), "fIpxAllowed", ItemList
ifint $(RegLastError) != 0
SetRegValue $(RasProtocolKey) {fIpxAllowed, 0,+
$(!REG_VT_DWORD),$(IpxAllowed)}
endif
OpenRegKey $(RasProtocolKey) "" "NBF" $(!MAXIMUM_ALLOWED) NbfKey
ifstr $(NbfKey) == $(KeyNull)
CreateRegKey $(RasProtocolKey) {"NBF",0,GenericClass} "" $(!MAXIMUM_ALLOWED) "" NbfKey
SetRegValue $(NbfKey) {NetBiosGatewayEnabled, 0,+
$(!REG_VT_DWORD),$(GtwyEnabled)}
CloseRegKey $(NbfKey)
endif
ifstr(i) $(fDownLevel) != TRUE
OpenRegKey $(RasProtocolKey) "" "IP" $(!MAXIMUM_ALLOWED) IpKey
ifstr $(IpKey) != $(KeyNull)
GetRegValue $(IpKey), "AllowNetworkAccess", ItemList
ifint $(RegLastError) != 0
SetRegValue $(IpKey) {AllowNetworkAccess, 0,+
$(!REG_VT_DWORD),$(GtwyEnabled)}
endif
CloseRegKey $(IpKey)
endif
OpenRegKey $(RasProtocolKey) "" "IPX" $(!MAXIMUM_ALLOWED) IpxKey
ifstr $(IpxKey) != $(KeyNull)
GetRegValue $(IpxKey), "AllowNetworkAccess", ItemList
ifint $(RegLastError) != 0
SetRegValue $(IpxKey) {AllowNetworkAccess, 0,+
$(!REG_VT_DWORD),$(GtwyEnabled)}
endif
CloseRegKey $(IpxKey)
endif
endif
; Now we need to update the encryption parameters.
; if it is a NT3.1 server, these values are new and are defaulted
; to MS encryption (2) and no data encryption (0).
; If it is a daytona server (beta1) the ForceEncryptedData param
; is new and is defaulted to 0, but the ForceEncryptedPassword
; needs to be properly mapped to the new values.
; If ForceEncryptedPassword = 0, then leave it as is.
; If ForceEncryptedPassword = 1, then map it to the new value of
; 2 for MS encryption.
; if this is a Daytona (beta2 and greater) then leave the values
; alone because the user could have configured them.
set ForceEncryptedPassword = 2
set ForceEncryptedData = 0
ifstr(i) $(fDownLevel) != TRUE
; if the ForceEncryptedData parameter is not present then this
; info needs to be upgraded.
GetRegValue $(RasProtocolKey), "ForceEncryptedData", DataList
ifint $(RegLastError) != 0
GetRegValue $(RasProtocolKey), "ForceEncryptedPassword", PasswdList
ifint $(RegLastError) == 0
set ForceEncryptedPassword = *($(PasswdList), 4)
; if previously the value was set to 1, map it to MS Encryption
ifint $(ForceEncryptedPassword) == 1
set ForceEncryptedPassword = 2
endif
endif
else
goto UpgradeSelectedProtocolsEnd
endif
endif
SetRegValue $(RasProtocolKey) {ForceEncryptedPassword, 0,+
$(!REG_VT_DWORD), $(ForceEncryptedPassword)}
SetRegValue $(RasProtocolKey) {ForceEncryptedData, 0,+
$(!REG_VT_DWORD), $(ForceEncryptedData)}
UpgradeSelectedProtocolsEnd =+
CloseRegKey $(RasProtocolKey)
set Status = STATUS_SUCCESSFUL
else
Debug-Output "UpgradeSelectedProtocols: error opening Ras\protocols key"
endif
Debug-Output "UpgradeSelectedProtocols exit."
return $(Status)
[SaveSelectedProtocols]
; save the user selected protocols in the SOFTWARE\Microsoft\RAS\Protocols
; key.
Debug-Output "SaveSelectedProtocols entry."
set Status = STATUS_FAILED
Set KeyNull = ""
ifstr(i) $($0) == TRUE
set NetbeuiSelected = 1
else
set NetbeuiSelected = 0
endif
ifstr(i) $($1) == TRUE
set TcpIpSelected = 1
else
set TcpIpSelected = 0
endif
ifstr(i) $($2) == TRUE
set IpxSelected = 1
else
set IpxSelected = 0
endif
ifstr(i) $($3) == TRUE
set NetbeuiAllowed = 1
else
set NetbeuiAllowed = 0
endif
ifstr(i) $($4) == TRUE
set TcpIpAllowed = 1
else
set TcpIpAllowed = 0
endif
ifstr(i) $($5) == TRUE
set IpxAllowed = 1
else
set IpxAllowed = 0
endif
set RasKeyName = $(!NTN_SoftwareBase)"\Microsoft\Ras"
set RasProtocolName = $(!NTN_SoftwareBase)"\Microsoft\Ras\Protocols"
OpenRegKey $(!REG_H_LOCAL) "" $(RasProtocolName) $(!MAXIMUM_ALLOWED) RasProtocolKey
ifstr $(RasProtocolKey) == $(KeyNull)
OpenRegKey $(!REG_H_LOCAL) "" $(RasKeyName) $(!MAXIMUM_ALLOWED) RasKey
CreateRegKey $(RasKey) {"Protocols",0,GenericClass} "" $(!MAXIMUM_ALLOWED) "" RasProtocolKey
OpenRegKey $(RasKey) "" "Protocols" $(!MAXIMUM_ALLOWED) RasProtocolKey
CloseRegKey $(RasKey)
endif
ifstr $(RasProtocolKey) != $(KeyNull)
SetRegValue $(RasProtocolKey) {fNetbeuiSelected, 0,+
$(!REG_VT_DWORD),$(NetbeuiSelected)}
SetRegValue $(RasProtocolKey) {fTcpIpSelected, 0,+
$(!REG_VT_DWORD),$(TcpIpSelected)}
SetRegValue $(RasProtocolKey) {fIpxSelected, 0,+
$(!REG_VT_DWORD),$(IpxSelected)}
SetRegValue $(RasProtocolKey) {fNetbeuiAllowed, 0,+
$(!REG_VT_DWORD),$(NetbeuiAllowed)}
SetRegValue $(RasProtocolKey) {fTcpIpAllowed, 0,+
$(!REG_VT_DWORD),$(TcpIpAllowed)}
SetRegValue $(RasProtocolKey) {fIpxAllowed, 0,+
$(!REG_VT_DWORD),$(IpxAllowed)}
CloseRegKey $(RasProtocolKey)
set Status = STATUS_SUCCESSFUL
else
Debug-Output "error opening Ras\protocols key"
endif
Debug-Output "SaveSelectedProtocols exit."
return $(Status)
[QuerySelectedProtocols]
; get the user selected protocols in the SOFTWARE\Microsoft\RAS\Protocols
; key.
Debug-Output "QuerySelectedProtocols: entry"
set Status = STATUS_FAILED
Set KeyNull = ""
set fNetbeuiSelected = FALSE
set fTcpIpSelected = FALSE
set fIpxSelected = FALSE
set fNetbeuiAllowed = FALSE
set fTcpIpAllowed = FALSE
set fIpxAllowed = FALSE
set NetbeuiSelected = {}
set TcpIpSelected = {}
set IpxSelected = {}
set NetbeuiAllowed = {}
set TcpIpAllowed = {}
set IpxAllowed = {}
set RasKeyName = $(!NTN_SoftwareBase)"\Microsoft\Ras\Protocols"
OpenRegKey $(!REG_H_LOCAL) "" $(RasKeyName) $(!MAXIMUM_ALLOWED) RasKey
ifstr $(RasKey) != $(KeyNull)
GetRegValue $(RasKey), "fNetbeuiSelected", NetbeuiSelected
ifint *($(NetbeuiSelected), 4) == 1
set fNetbeuiSelected = TRUE
else
set fNetbeuiSelected = FALSE
endif
GetRegValue $(RasKey), "fTcpIpSelected", TcpIpSelected
ifint *($(TcpIpSelected), 4) == 1
set fTcpIpSelected = TRUE
else
set fTcpIpSelected = FALSE
endif
GetRegValue $(RasKey), "fIpxSelected", IpxSelected
ifint *($(IpxSelected), 4) == 1
set fIpxSelected = TRUE
else
set fIpxSelected = FALSE
endif
GetRegValue $(RasKey), "fNetbeuiAllowed", NetbeuiAllowed
ifint *($(NetbeuiAllowed), 4) == 1
set fNetbeuiAllowed = TRUE
else
set fNetbeuiAllowed = FALSE
endif
GetRegValue $(RasKey), "fTcpIpAllowed", TcpIpAllowed
ifint *($(TcpIpAllowed), 4) == 1
set fTcpIpAllowed = TRUE
else
set fTcpIpAllowed = FALSE
endif
GetRegValue $(RasKey), "fIpxAllowed", IpxAllowed
ifint *($(IpxAllowed), 4) == 1
set fIpxAllowed = TRUE
else
set fIpxAllowed = FALSE
endif
CloseRegKey $(RasKey)
set Status = STATUS_SUCCESSFUL
else
Debug-Output "error opening Ras\protocols key"
endif
Debug-Output "QuerySelectedProtocols: exit"
return $(Status) $(fNetbeuiSelected) $(fTcpIpSelected) $(fIpxSelected) +
$(fNetbeuiAllowed) $(fTcpIpAllowed) $(fIpxAllowed)
[UpdateSelectedProtocols]
; updates the user selected protocol list based on what protocols have been
; recently removed. This routine is called during the review bindings time.
Debug-Output "UpdateSelectedProtocols: entry"
set Status = STATUS_FAILED
Shell "" QuerySelectedProtocols
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "error shelling QuerySelectedProtocols."
goto UpdateSelectedProtocolsEnd
endif
Ifstr(i) $($R0) != STATUS_SUCCESSFUL
Debug-Output "error returned by QuerySelectedProtocols."
goto UpdateSelectedProtocolsEnd
endif
set fNetbeuiSelected = $($R1)
set fTcpIpSelected = $($R2)
set fIpxSelected = $($R3)
set fNetbeuiAllowed = $($R4)
set fTcpIpAllowed = $($R5)
set fIpxAllowed = $($R6)
Debug-Output "UpdateSelectedProtocols: Selected protocols NBF IP IPX "$(fNetbeuiSelected)" "$(fTcpIpSelected)" "$(fIpxSelected)
shell "" QueryInstalledProtocols
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "error shelling QueryInstalledProtocols."
goto UpdateSelectedProtocolsEnd
endif
Ifstr(i) $($R0) != STATUS_SUCCESSFUL
Debug-Output "error returned by QueryInstalledProtocols."
goto UpdateSelectedProtocolsEnd
endif
set fNetbeuiInstalled = $($R1)
set fTcpIpInstalled = $($R2)
set fIpxInstalled = $($R3)
Debug-Output "UpdateSelectedProtocols: Installed Protocols NBF IP IPX "$(fNetbeuiInstalled)" "$(fTcpIpInstalled)" "$(fIpxInstalled)
set fNetbeuiSelectedNew = $(fNetbeuiSelected)
set fTcpIpSelectedNew = $(fTcpIpSelected)
set fIpxSelectedNew = $(fIpxSelected)
set fNetbeuiAllowedNew = $(fNetbeuiAllowed)
set fTcpIpAllowedNew = $(fTcpIpAllowed)
set fIpxAllowedNew = $(fIpxAllowed)
; the protocols are chosen for either dialout or dialin.
; let us just 'OR' the values to determine which protocols are relevant
ifstr(i) $(fNetbeuiSelectedNew) == TRUE
set fNetbeuiChosen = TRUE
else
set fNetbeuiChosen = $(fNetbeuiAllowedNew)
endif
ifstr(i) $(fTcpIpSelectedNew) == TRUE
set fTcpIpChosen = TRUE
else
set fTcpIpChosen = $(fTcpIpAllowedNew)
endif
ifstr(i) $(fIpxSelectedNew) == TRUE
set fIpxChosen = TRUE
else
set fIpxChosen = $(fIpxAllowedNew)
endif
ifstr(i) $(fNetbeuiInstalled) == FALSE
set fNetbeuiSelectedNew = FALSE
set fNetbeuiAllowedNew = FALSE
endif
ifstr(i) $(fTcpIpInstalled) == FALSE
set fTcpIpSelectedNew = FALSE
set fTcpIpAllowedNew = FALSE
endif
ifstr(i) $(fIpxInstalled) == FALSE
set fIpxSelectedNew = FALSE
set fIpxAllowedNew = FALSE
endif
ifstr(i) $(fNetbeuiSelectedNew) == $(fNetbeuiSelected)
ifstr(i) $(fTcpIpSelectedNew) == $(fTcpIpSelected)
ifstr(i) $(fIpxSelectedNew) == $(fIpxSelected)
ifstr(i) $(fNetbeuiAllowedNew) == $(fNetbeuiAllowed)
ifstr(i) $(fTcpIpAllowedNew) == $(fTcpIpAllowed)
ifstr(i) $(fIpxAllowedNew) == $(fIpxAllowed)
set Status = STATUS_SUCCESSFUL
Debug-Output "UpdateSelectedProtocols: Nothing changed"
goto UpdateSelectedProtocolsEnd
endif
endif
endif
endif
endif
endif
Shell "" SaveSelectedProtocols $(fNetbeuiSelectedNew) $(fTcpIpSelectedNew) +
$(fIpxSelectedNew) $(fNetbeuiAllowedNew) +
$(fTcpIpAllowedNew) $(fIpxAllowedNew)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "error shelling SaveSelectedProtocols."
goto UpdateSelectedProtocolsEnd
endif
Ifstr(i) $($R0) != STATUS_SUCCESSFUL
Debug-Output "error returned by SaveSelectedProtocols."
goto UpdateSelectedProtocolsEnd
endif
; the protocols are chosen for either dialout or dialin.
; let us just 'OR' the values to determine which protocols are relevant
ifstr(i) $(fNetbeuiSelectedNew) == TRUE
set fNetbeuiChosen = TRUE
else
set fNetbeuiChosen = $(fNetbeuiAllowedNew)
endif
ifstr(i) $(fTcpIpSelectedNew) == TRUE
set fTcpIpChosen = TRUE
else
set fTcpIpChosen = $(fTcpIpAllowedNew)
endif
ifstr(i) $(fIpxSelectedNew) == TRUE
set fIpxChosen = TRUE
else
set fIpxChosen = $(fIpxAllowedNew)
endif
Shell "" UpdateNetCardInfo $(fNetbeuiChosen) $(fTcpIpChosen) +
$(fIpxChosen)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "error shelling UpdateNetCardInfo."
goto UpdateSelectedProtocolsEnd
endif
Ifstr(i) $($R0) != STATUS_SUCCESSFUL
Debug-Output "error returned by UpdateNetCardInfo."
goto UpdateSelectedProtocolsEnd
endif
set Status = STATUS_SUCCESSFUL
; remove the services we installed, if we discover that tcp/ip or ipx are
; not selected any more.
ifstr(i) $(fNetbeuiAllowedNew) == FALSE
Debug-Output "UpdateSelectedProtocols: Removing RemoteAccess NBF dependency"
Shell "" RemoveServiceDependency "RemoteAccess" "NBF"
endif
ifstr(i) $(fTcpIpChosen) == FALSE
Debug-Output "UpdateSelectedProtocols: Removing RasArp service"
shell "" RemoveRasArpService
endif
ifstr(i) $(fIpxAllowedNew) == FALSE
Debug-Output "UpdateSelectedProtocols: Removing IPX router and SAP"
shell "" RemoveNwlnkRipService
shell "" RemoveIsnSapService
Shell "" RemoveServiceDependency "RemoteAccess" "NWLNKIPX"
ifstr(i) $($R0) == STATUS_FAILED
Debug-Output "UpdateSelectedProtocols: error removing service dependency of RemoteAccess on NWLNKIPX"
endif
endif
UpdateSelectedProtocolsEnd = +
Debug-Output "UpdateSelectedProtocols: exit"
return $(Status) $(fNetbeuiChosen) $(fTcpIpChosen) $(fIpxChosen)
[UpgradeIsdnInfo]
; upgrade the ISDN info from the NT3.1 format to the TAPI DEVICES format
; NOTE that this routine is not generic, but assumes that PCIMAC was the
; the only ISDN device installed for NT3.1. This assumption is valid.
; First check to see if SOFTWARE\Microsoft\RAS\Medias\ISDN key exists.
; if it does, then map this information to ...RAS\TAPI DEVICES format.
Debug-Output "UpgradeIsdnInfo entry."
set Status = STATUS_FAILED
Set KeyNull = ""
set RasKeyName = $(!NTN_SoftwareBase)"\Microsoft\Ras"
set TapiName = $(!NTN_SoftwareBase)"\Microsoft\Ras\Tapi Devices"
set RasIsdnName = $(!NTN_SoftwareBase)"\Microsoft\Ras\MEDIA\ISDN"
set RasManParamName = $(!NTN_ServiceBase)"\RasMan\Parameters"
set PcimacName = "HARDWARE\DEVICEMAP\TAPI DEVICES\PCIMAC"
; Check if we are dealing with a NT3.1 system by checking to see if the
; RAS\MEDIAS\ISDN key is present and if ISDN ports are actually configured
; by enumerating the RAS\MEDIAS\ISDN key.
set KeyIsdn = $(KeyNull)
OpenRegKey $(!REG_H_LOCAL) "" $(RasIsdnName) $(!MAXIMUM_ALLOWED) KeyIsdn
ifstr $(KeyIsdn) != $(KeyNull)
EnumRegKey $(KeyIsdn) PortList
ifint $(RegLastError) != 0
Debug-Output "UpgradeIsdnInfo: error enumerating MEDIAS\ISDN key."
CloseRegKey $(KeyIsdn)
set Status = STATUS_SUCCESSFUL
goto UpgradeIsdnInfoEnd
endif
QueryListSize IsdnPorts $(PortList)
ifint $(IsdnPorts) == 0
; no configured ISDN ports, just return success
set Status = STATUS_SUCCESSFUL
CloseRegKey $(KeyIsdn)
goto UpgradeIsdnInfoEnd
endif
set MediaType = "ISDN"
set Addresses = {}
OpenRegKey $(!REG_H_LOCAL) "" $(PcimacName) +
$(!MAXIMUM_ALLOWED) KeyPcimac
ifstr $(KeyPcimac) != $(KeyNull)
GetRegValue $(KeyPcimac), "Address", AddressList
ifint $(RegLastError) == 0
set Addresses = *($(AddressList), 4)
endif
GetRegValue $(KeyPcimac), "Media Type", MediaValue
ifint $(RegLastError) == 0
set MediaType = *($(MediaValue), 4)
endif
CloseRegKey $(KeyPcimac)
else
Debug-Output "UpgradeIsdnInfo: error opening DEVICEMAP\TAPI DEVICES\PCIMAC key."
CloseRegKey $(KeyIsdn)
goto UpgradeIsdnInfoEnd
endif
set AddressList = {}
set NameList = {}
set UsageList = {}
set index = 1
forlistdo $(PortList)
set Address = *($(Addresses), $(index))
set-add index = $(index) , 1
set AddressList = >($(AddressList), $(Address))
set PortName = *($($), 1)
set NameList = >($(NameList), Pcimac$(PortName))
OpenRegKey $(KeyIsdn) "" $(PortName) $(!MAXIMUM_ALLOWED) KeyPort
ifstr $(KeyPort) != $(KeyNull)
GetRegValue $(KeyPcimac), "Usage", UsageValue
ifint $(RegLastError) == 0
set Usage = *($(UsageValue), 4)
set UsageList = >($(UsageList), $(Usage))
else
Debug-Output "UpgradeIsdnInfo: error reading usage "$(PortName)
set UsageList = >($(UsageList), "Client")
endif
CloseRegKey $(KeyPort)
else
Debug-Output "UpgradeIsdnInfo: error opening key "$(PortName)
set UsageList = >($(UsageList), "Client")
endif
endforlistdo
set KeyTapi = $(KeyNull)
CreateRegKey $(!REG_H_LOCAL) +
{$(TapiName),$(NoTitle),GenericClass} +
"" $(!MAXIMUM_ALLOWED) "" KeyTapi
ifstr $(KeyTapi) != $(KeyNull)
CreateRegKey $(KeyTapi) +
{"Pcimac" ,$(NoTitle),GenericClass} +
"" $(!MAXIMUM_ALLOWED) "" KeyPcimac
ifstr $(KeyPcimac) != $(KeyNull)
Debug-Output "UpgradeIsdnInfo: MediaType "$(MediaType)
Debug-Output "UpgradeIsdnInfo: Addresses "$(AddressList)
Debug-Output "UpgradeIsdnInfo: Names "$(NameList)
Debug-Output "UpgradeIsdnInfo: Usage "$(UsageList)
SetRegValue $(KeyPcimac) {"Media Type", 0, +
$(!REG_VT_SZ),$(MediaType)}
SetRegValue $(KeyPcimac) {"Address", 0, +
$(!REG_VT_MULTI_SZ),$(AddressList)}
SetRegValue $(KeyPcimac) {"Friendly Name", 0, +
$(!REG_VT_MULTI_SZ),$(NameList)}
SetRegValue $(KeyPcimac) {"Usage", 0, +
$(!REG_VT_MULTI_SZ),$(UsageList)}
CloseRegKey $(KeyPcimac)
else
Debug-Output "UpgradeIsdnInfo: error creating RAS\TAPI DEVICES\Pcimac key"
endif
else
Debug-Output "UpgradeIsdnInfo: error creating RAS\TAPI DEVICES key"
endif
CloseRegKey $(KeyIsdn)
; now blow away the RAS\Media key because we don't need it any more.
OpenRegKey $(!REG_H_LOCAL) "" $(RasKeyName) +
$(!MAXIMUM_ALLOWED) KeyRas
ifstr $(KeyRas) != $(KeyNull)
DeleteRegTree $(KeyRas) "Media"
CloseRegKey $(KeyRas)
endif
; now modify the Medias parameter in Services\Rasman to contain
; rasser (if serial ports are configured) and
; rastapi (for the new tapi devices configured)
set KeyRasman = $(KeyNull)
OpenRegKey $(!REG_H_LOCAL) "" $(RasManParamName) +
$(!MAXIMUM_ALLOWED) KeyRasman
ifstr $(KeyRasman) != $(KeyNull)
GetRegValue $(KeyRasman), "Medias", MediaList
ifint $(RegLastError) == 0
set Medias = *($(MediaList), 4)
else
Debug-Output "UpgradeIsdnInfo: error reading Medias value "
endif
set NewMedias = {}
forlistdo $(Medias)
ifstr(i) $($) != "ISDN"
set NewMedias = >($(NewMedias), $($))
endif
endforlistdo
set NewMedias = >($(NewMedias), "rastapi")
Debug-Output "UpgradeIsdnInfo: NewMedias "$(NewMedias)
SetRegValue $(KeyRasman) {"Medias", 0, +
$(!REG_VT_MULTI_SZ),$(NewMedias)}
CloseRegKey $(KeyRasman)
else
Debug-Output "UpgradeIsdnInfo: error opening Services\Rasman\Parameters key"
goto UpgradeIsdnInfoEnd
endif
set Status = STATUS_SUCCESSFUL
else
set Status = STATUS_SUCCESSFUL
endif
UpgradeIsdnInfoEnd = +
Debug-Output "UpgradeIsdnInfo exit."
return $(Status)
[UpdateNetCardInfo]
; Remove the netcards and NdisWan adapter corresponding to the removed protocol
; and update the list of adapters in services\asyncmac\parameters
Debug-Output "UpdateNetCardInfo: entry"
set Status = STATUS_FAILED
Set KeyNull = ""
set fNetbeuiChosen = $($0)
set fTcpIpChosen = $($1)
set fIpxChosen = $($2)
set RasAsyMacParamKeyName = $(!NTN_ServiceBase)"\AsyncMac\Parameters"
OpenRegKey $(!REG_H_LOCAL) "" $(!NetworkCardKeyName) $(!MAXIMUM_ALLOWED) KeyNetcards
ifstr $(KeyNetcards) == $(KeyNull)
Debug-Output "UpdateNetCardInfo: could not open Netcards key"
goto UpdateNetCardInfoEnd
endif
EnumRegKey $(KeyNetcards) NetcardsList
set RemoveList = {}
ForListDo $(NetcardsList)
set KeyName = *($($),1)
OpenRegKey $(KeyNetcards) "" $(KeyName) $(!MAXIMUM_ALLOWED) Card
ifstr $(Card) == $(KeyNull)
Debug-Output "OEMNSVRA.INF: could not open netcard key"
CloseRegKey $(KeyNetcards)
goto UpdateNetCardInfoEnd
endif
GetRegValue $(Card), "ProductName" ProductNameInfo
set CardProductName = *($(ProductNameInfo), 4)
ifstr(i) $(fNetbeuiChosen) == FALSE
ifstr(i) $(CardProductName) == $(!ProductNDISWANDIALINName)
set RemoveList = >($(RemoveList), +
{$(!ProductNDISWANName),+
$(!NetworkCardKeyName)"\"$(KeyName)})
else-ifstr(i) $(CardProductName) == $(!ProductNDISWANDIALOUTName)
set RemoveList = >($(RemoveList), +
{$(!ProductNDISWANName),+
$(!NetworkCardKeyName)"\"$(KeyName)})
endif
endif
ifstr(i) $(fTcpIpChosen) == FALSE
ifstr(i) $(CardProductName) == $(!ProductNDISWANDIALINIPName)
set RemoveList = >($(RemoveList), +
{$(!ProductNDISWANName),+
$(!NetworkCardKeyName)"\"$(KeyName)})
else-ifstr(i) $(CardProductName) == $(!ProductNDISWANDIALOUTIPName)
set RemoveList = >($(RemoveList), +
{$(!ProductNDISWANName),+
$(!NetworkCardKeyName)"\"$(KeyName)})
endif
endif
ifstr(i) $(fIpxChosen) == FALSE
ifstr(i) $(CardProductName) == $(!ProductNDISWANDIALINOUTIPXName)
set RemoveList = >($(RemoveList), +
{$(!ProductNDISWANName),+
$(!NetworkCardKeyName)"\"$(KeyName)})
endif
endif
CloseRegKey $(Card)
EndForListDo
CloseRegKey $(KeyNetcards)
QueryListSize NetCards $(RemoveList)
ifint $(NetCards) != 0
ForListDo $(RemoveList)
debug-output "Removing hardware component: "$($)
Shell "utility.inf", RemoveHardwareComponent, +
$(!Manufacturer), *($($),1), *($($),2)
EndForListDo
endif
; now update the asyncmac info
OpenRegKey $(!REG_H_LOCAL) "" $(RasAsyMacParamKeyName) $(!MAXIMUM_ALLOWED) KeyMacParams
ifstr $(KeyMacParams) == $(KeyNull)
Debug-Output "UpdateNetCardInfo: could not open AsyncMac Params key"
goto UpdateNetCardInfoEnd
endif
set NewValueList = {}
ifstr(i) $(fNetbeuiChosen) == FALSE
set NewValueList = >($(NewValueList), +
{DialinNBF, $(NoTitle), $(!REG_VT_DWORD), 0})
set NewValueList = >($(NewValueList), +
{DialoutNBF, $(NoTitle), $(!REG_VT_DWORD), 0})
endif
ifstr(i) $(fTcpIpChosen) == FALSE
set NewValueList = >($(NewValueList), +
{DialinIP, $(NoTitle), $(!REG_VT_DWORD), 0 })
set NewValueList = >($(NewValueList), +
{DialoutIP, $(NoTitle), $(!REG_VT_DWORD), 0 })
endif
ifstr(i) $(fIpxChosen) == FALSE
set NewValueList = >($(NewValueList), +
{DialinoutIPX, $(NoTitle), $(!REG_VT_DWORD), 0})
endif
Shell "utility.inf", AddValueList, $(KeyMacParams), $(NewValueList)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "UpdateNetCardInfo:AddValueList bombed out"
goto UpdateNetCardInfoEnd
endif
set RegistryErrorIndex = $($R0)
CloseRegKey $(KeyMacParams)
Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR"
goto UpdateNetCardInfoEnd
endif
set Status = STATUS_SUCCESSFUL
UpdateNetCardInfoEnd =+
Debug-Output "UpdateNetcardInfo: Exit"
return $(Status)
[UpdateNdisWanInfo]
; Update NdisWan netrules to reflect the new protocols (IP/IPX) support
; Also add new block rules to NdisWan dialin/dialout adapters in the
; Microsoft\Windows NT\CurrentVersion\NetworkCards key
; Also modify RasMan\Linkage\OtherDependencies from RasHub to NdisWan.
; This routine is invoked during Upgrade of RAS
Debug-Output "UpdateNdisWanNetInfo: entry"
set Status = STATUS_FAILED
Set KeyNull = ""
set NdisWanName = $(!NTN_SoftwareBase)"\Microsoft\NdisWan\CurrentVersion"
set NdisWanRulesName = $(!NTN_SoftwareBase)"\Microsoft\NdisWan\CurrentVersion\NetRules"
set NdisWanSvcName = $(!NTN_ServiceBase)"\NdisWan"
set RasManLinkageName = $(!NTN_ServiceBase)"\RasMan\Linkage"
; first rename all RasHub to NdisWan in the software section
OpenRegKey $(!REG_H_LOCAL) "" $(NdisWanName) $(!MAXIMUM_ALLOWED) KeyNdisWan
ifstr $(KeyNdisWan) != $(KeyNull)
SetRegValue $(KeyNdisWan) {Description, 0, +
$(!REG_VT_SZ),$(!ProductNDISWANDescription)}
SetRegValue $(KeyNdisWan) {PathName, 0, +
$(!REG_VT_SZ),$(!ProductNDISWANImagePath)}
SetRegValue $(KeyNdisWan) {ServiceName, 0, +
$(!REG_VT_SZ),$(!ProductNDISWANName)}
SetRegValue $(KeyNdisWan) {Title, 0, +
$(!REG_VT_SZ),$(!ProductNDISWANTitle)}
CloseRegKey $(KeyNdisWan)
else
Debug-Output "UpdateNdisWanInfo: could not open NdisWan key"
endif
; now change the net rules
OpenRegKey $(!REG_H_LOCAL) "" $(NdisWanRulesName) $(!MAXIMUM_ALLOWED) KeyRules
ifstr $(KeyRules) != $(KeyNull)
SetRegValue $(KeyRules) {bindable, 0, +
$(!REG_VT_MULTI_SZ),$(!NetRuleNDISWANBindable)}
SetRegValue $(KeyRules) {bindform, 0, +
$(!REG_VT_SZ),$(!NetRuleNDISWANBindForm)}
SetRegValue $(KeyRules) {class, 0, +
$(!REG_VT_MULTI_SZ),$(!NetRuleNDISWANClass)}
SetRegValue $(KeyRules) {type, 0, +
$(!REG_VT_SZ),$(!NetRuleNDISWANType)}
SetRegValue $(KeyRules) {InfOption, 0, +
$(!REG_VT_SZ), "NDISWAN"}
CloseRegKey $(KeyRules)
else
Debug-Output "UpdateNdisWanInfo: could not open NdisWan NetRules key"
endif
; finally update the DisplayName and ImagePath in the services area
; also set the start type to autostart and change the group to
; NDISWAN & remove all dependencies because NdisWan doesn't need them
; anymore.
OpenRegKey $(!REG_H_LOCAL) "" $(NdisWanSvcName) $(!MAXIMUM_ALLOWED) KeyService
ifstr $(KeyService) != $(KeyNull)
SetRegValue $(KeyService) {DisplayName, 0, +
$(!REG_VT_SZ),$(!ProductNDISWANDisplayName)}
SetRegValue $(KeyService) {ImagePath, 0, +
$(!REG_VT_EXPAND_SZ),$(!ProductNDISWANImagePath)}
SetRegValue $(KeyService) {Start, 0, $(!REG_VT_DWORD),2}
SetRegValue $(KeyService) {Group, 0, $(!REG_VT_SZ), "NDISWAN"}
DeleteRegValue $(KeyService) "DependOnService"
DeleteRegValue $(KeyService) "DependOnGroup"
OpenRegKey $(KeyService) "" "Linkage" $(!MAXIMUM_ALLOWED) KeyLinkage
ifstr $(KeyLinkage) != $(KeyNull)
DeleteRegValue $(KeyLinkage) "OtherDependencies"
CloseRegKey $(KeyLinkage)
endif
CloseRegKey $(KeyService)
else
Debug-Output "UpdateNdisWanInfo: could not open NdisWan services key"
endif
;; ; now set the RasMan\Linkage\OtherDependencies from RasHub to nothing
;; ; because NdisWan will autostart.
;; DON't just set OtherDependencies to nothing, instead use RemoveServiceDependency routine
;; to do the right thing, because some other dependency could be present.
Shell "" RemoveServiceDependency "RasMan" "RasHub"
set Status = STATUS_SUCCESSFUL
UpdateNdisWanInfoEnd =+
Debug-Output "UpdateNdisWanInfo: Exit"
return $(Status)
[UpdateAsyncMacNetRules]
; Update AsyncMac netrules to prevent blood hound from binding to asyncmac -
; this support was added for NT 3.5 beta
Debug-Output "UpdateAsyncMacNetRules: entry"
set Status = STATUS_FAILED
Set KeyNull = ""
set AsyncMacRulesName = $(!NTN_SoftwareBase)"\Microsoft\AsyncMac\CurrentVersion\NetRules"
OpenRegKey $(!REG_H_LOCAL) "" $(AsyncMacRulesName) $(!MAXIMUM_ALLOWED) KeyRules
ifstr $(KeyRules) != $(KeyNull)
set Status = STATUS_SUCCESSFUL
SetRegValue $(KeyRules) {bindable, 0, +
$(!REG_VT_MULTI_SZ),$(!NetRuleRASASYMACBindable)}
CloseRegKey $(KeyRules)
else
Debug-Output "UpdateAsyncMacNetRules: could not open NdisWan NetRules key"
endif
Debug-Output "UpdateAsyncMacNetRules: Exit"
return $(Status)
[UpdateAsyncMacParameters]
; If DialinNBF and DialoutNBF don't already exist in
; Services\AsyncMac\Parameters, then add these values setting them equal
; to Dialin and Dialout ports, respectively. While at it, delete the
; Dialin and Dialout keys as well.
; This routine is invoked during upgrade of RAS
Debug-Output "UpdateAsyncMacParameters: entry"
set Status = STATUS_SUCCESSFUL
Set KeyNull = ""
set RasAsyMacParamKeyName = $(!NTN_ServiceBase)"\AsyncMac\Parameters"
OpenRegKey $(!REG_H_LOCAL) "" $(RasAsyMacParamKeyName) $(!MAXIMUM_ALLOWED) KeyMacParams
ifstr $(KeyMacParams) != $(KeyNull)
GetRegValue $(KeyMacParams), "DialinNBF" DialinNBFInfo
Ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
; no DialinNBF variable
GetRegValue $(KeyMacParams), "Dialin" DialinNBFInfo
set PrevNumDialinNBF = *($(DialinNBFInfo), 4)
SetRegValue $(KeyMacParams) {DialinNBF, 0, +
$(!REG_VT_DWORD),$(PrevNumDialinNBF)}
; delete the old key if we succefully added the new key
Ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
Debug-Output "UpdateAsyncMacParameters: deleting dialin key"
DeleteRegValue $(KeyMacParams) "Dialin"
endif
endif
GetRegValue $(KeyMacParams), "DialoutNBF" DialoutNBFInfo
Ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
; no DialoutNBF variable
GetRegValue $(KeyMacParams), "Dialout" DialoutNBFInfo
set PrevNumDialoutNBF = *($(DialoutNBFInfo), 4)
SetRegValue $(KeyMacParams) {DialoutNBF, 0, +
$(!REG_VT_DWORD),$(PrevNumDialoutNBF)}
; delete the old key if we succefully added the new key
Ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
Debug-Output "UpdateAsyncMacParameters: deleting dialout key"
DeleteRegValue $(KeyMacParams) "Dialout"
endif
endif
CloseRegKey $(KeyMacParams)
else
Debug-Output "OEMNSVRA.INF: could not open AsyncMac Params key"
endif
Debug-Output "UpdateAsyncMacParameters: Exit"
return $(Status)
[UpdateAsyncMacStartType]
; change the AsyncMac start type from KernelAuto to KernelAutoStart
Debug-Output "UpdateAsyncMacStartType: entry"
set Status = STATUS_SUCCESSFUL
Set KeyNull = ""
set RasAsyMacKeyName = $(!NTN_ServiceBase)"\AsyncMac"
OpenRegKey $(!REG_H_LOCAL) "" $(RasAsyMacKeyName) $(!MAXIMUM_ALLOWED) KeyMac
ifstr $(KeyMac) != $(KeyNull)
GetRegValue $(KeyMac), "Start" StartValue
Ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
set Start = *($(StartValue), 4)
ifint $(Start) == 3
set Start = 2
SetRegValue $(KeyMac) {Start, 0, $(!REG_VT_DWORD), $(Start)}
endif
endif
CloseRegKey $(KeyMac)
else
Debug-Output "OEMNSVRA.INF: could not open AsyncMac key"
endif
Debug-Output "UpdateAsyncMacStartType: Exit"
return $(Status)
[UpdatePerfmonInfo]
; add the performance key to Services\RemoteAccess key and load the perf
; counters to the registry
; this routine is invoked during ras upgrade
Debug-Output "UpdatePerfmonInfo: entry"
set Status = STATUS_FAILED
Set KeyNull = ""
set RemoteAccessService = $(!NTN_ServiceBase)"\RemoteAccess"
OpenRegKey $(!REG_H_LOCAL) "" $(RemoteAccessService) $(!MAXIMUM_ALLOWED) KeyService
ifstr $(KeyService) != $(KeyNull)
Shell "" UpdatePerfmonInfoHelper $(KeyService)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "error shelling UpdatePerfmonInfoHelper."
goto UpdatePerfmonInfoEnd
endif
Ifstr(i) $($R0) != STATUS_SUCCESSFUL
Debug-Output "error returned by UpdatePerfmonInfo."
goto UpdatePerfmonInfoEnd
endif
CloseRegKey $(KeyService)
set Status = STATUS_SUCCESSFUL
else
Debug-Output "UpdatePerfmonInfo: error opening RemoteAccess service key"
endif
UpdatePerfmonInfoEnd =+
Debug-Output "UpdatePerfmonInfo: Exit"
return $(Status)
[UpdatePerfmonInfoHelper]
; helper routine used by UpdatePerfmonInfo routine. This routine creates
; the performance key if it doesn't exist, and adds the performance parameters.
; It also loads the perf counters to the registry.
; the first parameter is the service key
Debug-Output "UpdatePerfmonInfoHelper: entry"
set Status = STATUS_FAILED
Set KeyNull = ""
set ServiceKey = $($0)
set KeyPerformance = $(KeyNull)
OpenRegKey $(ServiceKey) "" $(!RasPerfKeyName) $(!MAXIMUM_ALLOWED) KeyPerformance
ifstr $(KeyPerformance) == $(KeyNull)
CreateRegKey $(ServiceKey) {$(!RasPerfKeyName),$(NoTitle),GenericClass} "" $(!MAXIMUM_ALLOWED) "" KeyPerformance
OpenRegKey $(ServiceKey) "" $(!RasPerfKeyName) $(!MAXIMUM_ALLOWED) KeyPerformance
ifstr $(KeyPerformance) == $(KeyNull)
Debug-Output "Error creating Performance key"
goto UpdatePerfmonInfoHelperEnd
endif
endif
set NewValueList = +
{{Library ,$(NoTitle),$(!REG_VT_SZ),$(!RasPerfLibraryName)},+
{Open, $(NoTitle),$(!REG_VT_SZ),$(!RasPerfOpenFunction)},+
{Close, $(NoTitle),$(!REG_VT_SZ),$(!RasPerfCloseFunction)},+
{Collect, $(NoTitle),$(!REG_VT_SZ),$(!RasPerfCollectFunction)}}
Shell "Utility.Inf", AddValueList, $(KeyPerformance), $(NewValueList)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "UpdatePerfmonInfoHelper: error shelling AddValueList"
goto UpdatePerfmonInfoHelperEnd
endif
set RegistryErrorIndex = $($R0)
Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR"
Debug-Output "UpdatePerfmonInfoHelper: AddValueList bombed out"
goto UpdatePerfmonInfoHelperEnd
endif
CloseRegKey $(KeyPerformance)
set Status = STATUS_SUCCESSFUL
UpdatePerfmonInfoHelperEnd =+
Debug-Output "UpdatePerfmonInfoHelper: Exit"
return $(Status)
[RenameRasHubToNdisWan]
; Rename all occurences of RasHub to NdisWan at
; SOFTWARE\Microsoft\WindowsNT\CurrentVersion\NetworkCards
; for upgrading to NT3.5.
; Also, rename some of the RasHub references in Software\Microsoft\NdisWan
; as well as in the services area of the registry.
;
Debug-Output "RenameRasHubToNdisWan: entry"
set Status = STATUS_FAILED
Set KeyNull = ""
OpenRegKey $(!REG_H_LOCAL) "" $(!NetworkCardKeyName) $(!MAXIMUM_ALLOWED) KeyNetcards
ifstr $(KeyNetcards) == $(KeyNull)
Debug-Output "RenameRasHubToNdisWan: could not open Netcards key"
goto RenameRasHubToNdisWanEnd
endif
EnumRegKey $(KeyNetcards) NetcardsList
ForListDo $(NetcardsList)
set KeyName = *($($),1)
OpenRegKey $(KeyNetcards) "" $(KeyName) $(!MAXIMUM_ALLOWED) Card
ifstr $(Card) == $(KeyNull)
Debug-Output "RenameRasHubToNdisWan: could not open netcard key"
CloseRegKey $(KeyNetcards)
goto RenameRasHubToNdisWanEnd
endif
GetRegValue $(Card), "ProductName" ProductNameInfo
set CardProductName = *($(ProductNameInfo), 4)
ifstr(i) $(CardProductName) == $(!ProductRASHUBDIALINName)
set ThisOption = DIALIN
else-ifstr(i) $(CardProductName) == $(!ProductRASHUBDIALOUTName)
set ThisOption = DIALOUT
else-ifstr(i) $(CardProductName) == $(!ProductRASHUBDIALINIPName)
set ThisOption = DIALINIP
else-ifstr(i) $(CardProductName) == $(!ProductRASHUBDIALOUTIPName)
set ThisOption = DIALOUTIP
else-ifstr(i) $(CardProductName) == $(!ProductRASHUBDIALINOUTIPXName)
set ThisOption = DIALINOUTIPX
else
goto endloop
endif
SetRegValue $(Card) {ProductName, 0, +
$(!REG_VT_SZ),$(!ProductNDISWAN$(ThisOption)Name)}
SetRegValue $(Card) {Description, 0, +
$(!REG_VT_SZ),$(!ProductNDISWANDescription)}
SetRegValue $(Card) {ServiceName, 0, $(!REG_VT_SZ), +
$(!ProductNDISWANName)$(KeyName)}
SetRegValue $(Card) {Title, 0, $(!REG_VT_SZ),+
"["$(KeyName)"] "$(!ProductNDISWANTitle)}
OpenRegKey $(Card) "" "NetRules" $(!MAXIMUM_ALLOWED) NetRules
ifstr $(NetRules) == $(KeyNull)
CloseRegKey $(KeyNetCards)
CloseRegKey $(Card)
Debug-Output "RenameRasHubToNdisWan: could not open "$(KeyName)"\NetRules key"
goto RenameRasHubToNdisWanEnd
Endif
SetRegValue $(NetRules) {InfOption, 0, +
$(!REG_VT_SZ), "NDISWAN"}
SetRegValue $(NetRules) {block, 0, +
$(!REG_VT_MULTI_SZ),$(!NetRuleHardware$(ThisOption)Block)}
SetRegValue $(NetRules) {class, 0, +
$(!REG_VT_MULTI_SZ),$(!NetRuleHardware$(ThisOption)Class)}
SetRegValue $(NetRules) {type, 0, +
$(!REG_VT_SZ),$(!NetRuleHardware$(ThisOption)Type)}
Set TempProdName = """"$(!ProductNDISWANName)$(KeyName)""""
Set TempBindForm = $(TempProdName)$(!NetRuleHardwareNDISWANBindForm)
SetRegValue $(NetRules) {bindform, 0, $(!REG_VT_SZ),$(TempBindForm)}
CloseRegKey $(NetRules)
endloop=+
CloseRegKey $(Card)
EndForListDo
CloseRegKey $(KeyNetcards)
set Status = STATUS_SUCCESSFUL
RenameRasHubToNdisWanEnd =+
Debug-Output "RenameRasHubToNdisWan: Exit"
return $(Status)
[UpgradeIpxInfo]
; This routine is invoked during upgrade.
; If RAS is configured for NWLNKIPX, then rename the IPXROUTER
; key to NWLNKRIP and rename occurances of isnrip.sys to nwlnkrip.sys.
; Change the RemoteAccess service dependency to depend on NWLNKRIP service.
; Add the NwlnkRip\Parameters\UseRef key to indicate RAS is using the service.
; If SAP agent was installed by RAS, remove and install
; the service by shelling the OEMNSVSA.INF file so that SAP
; agent can be shared by NCP server.
; Also if NWLNRIP service was installed by RAS, reinstall it using the
; common installer.
; And add some parameters to Services\NwlnkIpx\Parameters.
Debug-Output "UpgradeIpxInfo: entry"
set PORTSDLGHANDLE = $($0)
set RasProtocolsName = $(!NTN_SoftwareBase)"\Microsoft\Ras\Protocols"
set SapAgentName = $(!NTN_SoftwareBase)"\Microsoft\NWSAPAGENT"
set NwlnkRipName = $(!NTN_SoftwareBase)"\Microsoft\NWLNKRIP"
set IpxRouterName = $(!NTN_ServiceBase)"\IpxRouter"
OpenRegKey $(!REG_H_LOCAL) "" +
$(RasProtocolsName) $(!MAXIMUM_ALLOWED) KeyProtocols
ifstr $(KeyProtocols) != ""
set fIpxAllowed = 0
GetRegValue $(KeyProtocols) "fIpxAllowed" IpxList
ifint $(RegLastError) == 0
set fIpxAllowed = *($(IpxList), 4)
endif
ifint $(fIpxAllowed) != 0
Debug-Output "UpgradeIpxInfo: RAS is configured for IPX dialin"
; check to see if the IpxRouter service exists
set KeyRouter = ""
OpenRegKey $(!REG_H_LOCAL) "" +
$(IpxRouterName) $(!MAXIMUM_ALLOWED) KeyRouter
ifstr $(KeyRouter) != ""
CloseRegKey $(KeyRouter)
Debug-Output "Renaming IpxRouter to NwlnkRip..."
LibraryProcedure Result $(PORTSDLGHANDLE) RenameIpxRouterToNwlnkRip
Shell "" RemoveServiceDependency "RemoteAccess" "IpxRouter"
Shell "" AddServiceDependency "RemoteAccess" "NwlnkRip"
Debug-Output "Renaming IpxRouter to NwlnkRip done..."
endif
; now add Parameters\UseRef to indicate that RAS is using
; NwlnkRip service
OpenRegKey $(!REG_H_LOCAL) "" $(!RasIsnRipKeyName) +
$(!MAXIMUM_ALLOWED) KeyService
ifstr $(KeyService) != ""
OpenRegKey $(KeyService) "" "Parameters" +
$(!MAXIMUM_ALLOWED) KeyParams
ifstr(i) $(KeyParams) != ""
; add the NetbiosRouting parameter (if it is not already there)
; and enable the WAN bit - this allows wan->lan type 20 broadcast
GetRegValue $(KeyParams) "NetbiosRouting" NetbiosRoutingInfo
Ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
set NetbiosRouting = *($(NetbiosRoutingInfo), 4)
else
; not defined, so set the default value
set NetbiosRouting = 2
endif
set NetbiosRouting = *($(NetbiosRoutingInfo), 4)
; Now enable the WAN bit
ifint $(NetbiosRouting) == 0
set NetbiosRouting = 2
else-ifint $(NetbiosRouting) == 1
set NetbiosRouting = 3
endif
SetRegValue $(KeyParams) {"NetbiosRouting" , 0, $(!REG_VT_DWORD), $(NetbiosRouting)}
endif
OpenRegKey $(KeyService) "" "Parameters\UseRef" +
$(!MAXIMUM_ALLOWED) KeyUseRef
ifstr(i) $(KeyUseRef) == ""
ifstr(i) $(KeyParams) != ""
CreateRegKey $(KeyParams) {"UseRef", 0, GenericClass} +
"" $(!MAXIMUM_ALLOWED) "" KeyUseRef
CloseRegKey $(KeyParams)
endif
endif
ifstr(i) $(KeyUseRef) != ""
SetRegValue $(KeyUseRef) {"RAS" , 0, $(!REG_VT_SZ), "1"}
CloseRegKey $(KeyUseRef)
endif
CloseRegKey $(KeyService)
endif
; if SAP agent was installed by RAS, remove and install it using
; the common SAP agent installer.
OpenRegKey $(!REG_H_LOCAL) "" $(SapAgentName) +
$(!MAXIMUM_ALLOWED) KeyService
ifstr $(KeyService) == ""
OpenRegKey $(!REG_H_LOCAL) "" $(!RasIsnSapKeyName) +
$(!MAXIMUM_ALLOWED) KeySap
Ifstr(i) $(KeySap) != ""
; remove the service using DeleteService
Shell "utility.inf", RemoveService +
$(!ProductRASISNSAPName) "YES"
Shell "" InstallIsnSapService
endif
CloseRegKey $(KeySap)
else
CloseRegKey $(KeyService)
endif
; if NWLNKRIP was installed by RAS, reinstall it using
; the common NWLNKRIP service installer. We don't remove it first
; (unlike the SAP agent) because the NWLNKRIP installer
; creates the SOFTWARE registry key on our behalf and we want
; to retain the parameters created earlier.
OpenRegKey $(!REG_H_LOCAL) "" $(NwlnkRipName) +
$(!MAXIMUM_ALLOWED) KeyService
ifstr $(KeyService) == ""
OpenRegKey $(!REG_H_LOCAL) "" $(!RasIsnRipKeyName) +
$(!MAXIMUM_ALLOWED) KeyRip
Ifstr(i) $(KeyRip) != ""
Shell "" InstallNwlnkRipService
CloseRegKey $(KeyRip)
else
CloseRegKey $(KeyService)
endif
; set some parameters in the NWLNKIPX\Parameters area
OpenRegKey $(!REG_H_LOCAL) "" +
$(!NTN_ServiceBase)"\NWLNKIPX\Parameters" +
$(!MAXIMUM_ALLOWED) KeyIpxParameters
ifstr $(KeyIpxParameters) != $(KeyNull)
; add the parameters only if they don't already exist
GetRegValue $(KeyIpxParameters), "SingleNetworkActive" +
SingleNetworkActive
ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
SetRegValue $(KeyIpxParameters) +
{SingleNetworkActive, 0, $(!REG_VT_DWORD), 1}
endif
GetRegValue $(KeyIpxParameters), "DisableDialoutSap" +
DisableDialoutSap
ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
SetRegValue $(KeyIpxParameters) +
{DisableDialoutSap, 0, $(!REG_VT_DWORD), 1}
endif
GetRegValue $(KeyIpxParameters), "DisableDialinNetbios" +
DisableDialinNetbios
ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
SetRegValue $(KeyIpxParameters) +
{DisableDialinNetbios, 0, $(!REG_VT_DWORD), 1}
endif
CloseRegKey $(KeyIpxParameters)
Endif
else
Debug-Output "OEMNSVRA.INF: error opening NWLNKIPX\Parameters key"
endif
endif
CloseRegKey $(KeyProtocols)
else
Debug-Output "UpgradeIpxInfo: error opening RAS\Protocols key"
endif
Debug-Output "UpgradeIpxInfo: exit"
return
[SaveTcpipInfo]
; copy the Tcpip information from SOFTWARE\Microsoft\RAS\Protocols\Ip to
; services\remoteaccess\parameters\Ip
; unless the caller wants the IP info to be removed
Debug-Output "SaveTcpipInfo: entry - AddIpInfo = "$($0)
set AddTcpInfo = $($0)
set Status = STATUS_FAILED
Set KeyNull = ""
set RasIpKeyName = $(!NTN_SoftwareBase)"\Microsoft\Ras\Protocols\Ip"
set RasSvrParamKeyName = $(!NTN_ServiceBase)"\RemoteAccess\Parameters"
OpenRegKey $(!REG_H_LOCAL) "" $(RasIpKeyName) $(!MAXIMUM_ALLOWED) RasIpKey
ifstr $(RasIpKey) != $(KeyNull)
OpenRegKey $(!REG_H_LOCAL) "" $(RasSvrParamKeyName) $(!MAXIMUM_ALLOWED) KeySrvParams
ifstr $(KeySrvParams) == $(KeyNull)
Debug-Output "SaveTcpipInfo: could not open RasSvr Params key"
CloseRegKey $(RasIpKey)
return $(Status)
endif
ifstr(i) $(AddTcpInfo) == TRUE
CreateRegKey $(KeySrvParams) {"Ip",$(NoTitle),GenericClass} "" $(!MAXIMUM_ALLOWED) "" RemoteIpKey
OpenRegKey $(KeySrvParams) "" "Ip" $(!MAXIMUM_ALLOWED) RemoteIpKey
ifstr $(RemoteIpKey) != $(KeyNull)
EnumRegValue $(RasIpKey) NewValueList
Shell "utility.inf", AddValueList, $(RemoteIpKey), $(NewValueList)
CloseRegKey $(RemoteIpKey)
endif
else
; no dialin ports configured, so remove IP info
Debug-Output "SaveTpcipInfo: removing ip info"
DeleteRegTree $(KeySrvParams) "IP"
endif
CloseRegKey $(RasIpKey)
CloseRegKey $(KeySrvParams)
endif
Debug-Output "SaveTcpipInfo: exit"
set Status = STATUS_SUCCESSFUL
return $(Status)
[SaveIpxInfo]
; copy the IPX information from SOFTWARE\Microsoft\RAS\Protocols\Ipx to
; services\remoteaccess\parameters\Ipx
; unless the caller wants the IPX info to be removed
Debug-Output "SaveIpxInfo: entry RouterInstalled= "$($0)" AddIpxInfo = "$($1)
set RouterInstalled = $($0)
set AddIpxInfo = $($1)
set Status = STATUS_FAILED
Set KeyNull = ""
set RasIpxKeyName = $(!NTN_SoftwareBase)"\Microsoft\Ras\Protocols\Ipx"
set RasSvrParamKeyName = $(!NTN_ServiceBase)"\RemoteAccess\Parameters"
OpenRegKey $(!REG_H_LOCAL) "" $(RasIpxKeyName) $(!MAXIMUM_ALLOWED) RasIpxKey
ifstr $(RasIpxKey) != $(KeyNull)
OpenRegKey $(!REG_H_LOCAL) "" $(RasSvrParamKeyName) +
$(!MAXIMUM_ALLOWED) KeySrvParams
ifstr $(KeySrvParams) == $(KeyNull)
Debug-Output "SaveTcpipInfo: could not open RasSvr Params key"
CloseRegKey $(RasIpxKey)
return $(Status) $(fRouterInstalled)
endif
ifstr(i) $(AddIpxInfo) == TRUE
CreateRegKey $(KeySrvParams) {"Ipx",$(NoTitle),GenericClass} "" $(!MAXIMUM_ALLOWED) "" RemoteIpxKey
OpenRegKey $(KeySrvParams) "" "Ipx" $(!MAXIMUM_ALLOWED) RemoteIpxKey
ifstr $(RemoteIpxKey) != $(KeyNull)
EnumRegValue $(RasIpxKey) NewValueList
Shell "utility.inf", AddValueList, $(RemoteIpxKey), $(NewValueList)
SetRegValue $(RemoteIpxKey) {RouterInstalled, 0,$(!REG_VT_DWORD), $(RouterInstalled)}
CloseRegKey $(RemoteIpxKey)
endif
else
Debug-Output "SaveIpxInfo: removing ipx info"
DeleteRegTree $(KeySrvParams) "IPX"
endif
CloseRegKey $(KeySrvParams)
CloseRegKey $(RasIpxKey)
endif
Debug-Output "SaveIpxInfo: exit"
set Status = STATUS_SUCCESSFUL
return $(Status)
[AddServiceDependency]
; This routine adds the service dependency
; Input: $($0) is the dependent service
; $($1) is the service $($0) depends on
Debug-Output "AddServiceDependency: entry"
set Status = STATUS_FAILED
Set KeyNull = ""
set DependentService = $(!NTN_ServiceBase)\$($0)
set DependentName = $($0)
set DependOn = $($1)
set ServiceKey = $(KeyNull)
OpenRegKey $(!REG_H_LOCAL) "" $(DependentService)"\Linkage" $(!MAXIMUM_ALLOWED) ServiceKey
ifstr(i) $(ServiceKey) != $(KeyNull)
GetRegValue $(ServiceKey) "OtherDependencies" ServicesList
ifint $(RegLastError) != 0
set ServiceValues = {}
else
set ServiceValues = *($(ServicesList),4)
endif
debug-output "AddServiceDependency: Old OtherDependencies: "$(ServiceValues)
ifstr(i) $(ServiceValues) == {}
Set ServiceValues = {$(DependOn)}
else-ifstr(i) $(ServiceValues) == ""
Set ServiceValues = {$(DependOn)}
else-ifcontains(i) $(DependOn) in $(ServiceValues)
; It is already there!! something is wrong, but it doesn't matter
return STATUS_SUCCESSFUL
else
; Add to the dependcy list
Set ServiceValues = >($(ServiceValues), $(DependOn))
endif
debug-output "AddServiceDependency: New OtherDependencies: "$(ServiceValues)
SetRegValue $(ServiceKey) {OtherDependencies, 0,+
$(!REG_VT_MULTI_SZ), $(ServiceValues)}
CloseRegKey $(ServiceKey)
set Status = STATUS_SUCCESSFUL
else
Debug-Output "AddServiceDependency: error opening service "$(DependentService)"\Linkage"
endif
set KeyService = $(KeyNull)
OpenRegKey $(!REG_H_LOCAL) "" $(DependentService) $(!MAXIMUM_ALLOWED) KeyService
ifstr $(KeyService) != $(KeyNull)
set newDependList = {$(DependOn)}
GetRegValue $(KeyService) "DependOnService" ServiceList
ifint $(RegLastError) == 0
Debug-Output "AddServiceDependency: old DependOnService List "*($(ServiceList), 4)
ForListDo *($(ServiceList),4)
ifstr(i) $($) != $(DependOn)
set newDependList = >($(newDependList), $($))
endif
EndForListDo
endif
GetRegValue $(KeyService) "DependOnGroup" GrpList
ifint $(RegLastError) == 0
Debug-Output "AddServiceDependency: old DependOnGroup List "*($(GrpList), 4)
ForListDo *($(GrpList),4)
set grp = "+"$($)
set newDependList = >($(newDependList), $(grp))
EndForListDo
endif
Debug-Output "OEMNSVRA.INF: AddServiceDependency: new Dependency List "$(newDependList)
LibraryProcedure Result, $(!LIBHANDLE), SetupChangeServiceConfig, $(DependentName) $(!SERVICE_NO_CHANGE), $(!SERVICE_NO_CHANGE), $(!SERVICE_NO_CHANGE), "", "", $(newDependList), "", "", ""
CloseRegKey $(KeyService)
else
Debug-Output "AddServiceDependency: failed to open service linkage key"$(DependentService)
endif
Debug-Output "AddServiceDependency: exit"
return $(Status)
[RemoveServiceDependency]
; This routine removes the service dependency
; Input: $($0) is the dependent service
; $($1) is the service $($0) should not depend on
Debug-Output "RemoveServiceDependency: entry"
set Status = STATUS_FAILED
Set KeyNull = ""
set DependentService = $(!NTN_ServiceBase)\$($0)
set DependentName = $($0)
set DependOn = $($1)
OpenRegKey $(!REG_H_LOCAL) "" $(DependentService)"\Linkage" $(!MAXIMUM_ALLOWED) ServiceKey
ifstr(i) $(ServiceKey) != $(KeyNull)
GetRegValue $(ServiceKey) "OtherDependencies" ServicesList
ifint $(RegLastError) != 0
set ServiceValues = {}
else
set ServiceValues = *($(ServicesList),4)
endif
debug-output "RemoveServiceDependency: old OtherDependencies list:"$(ServicesList)
set ServiceValues = *($(ServicesList),4)
debug-output "ServiceValues: "$(ServiceValues)
ifcontains(i) $(DependOn) in $(ServiceValues)
; Remove RasArp from the dependcy list
set NewServiceValues = {}
ForListDo $(ServiceValues)
ifstr(i) $($) != $(DependOn)
set NewServiceValues = >($(NewServiceValues), $($))
endif
EndForListDo
debug-output "RemoveServiceDependency: new OtherDependencies list: "$(NewServiceValues)
SetRegValue $(ServiceKey) {OtherDependencies, 0,+
$(!REG_VT_MULTI_SZ), $(NewServiceValues)}
else
; something wrong...
endif
CloseRegKey $(ServiceKey)
set Status = STATUS_SUCCESSFUL
else
Debug-Output "RemoveServiceDependency: error opening service "$(DependentService)"\Linkage"
endif
set KeyService = $(KeyNull)
OpenRegKey $(!REG_H_LOCAL) "" $(DependentService) $(!MAXIMUM_ALLOWED) KeyService
ifstr $(KeyService) != $(KeyNull)
set newDependList = {}
GetRegValue $(KeyService) "DeleteFlag" DeleteFlagValue
; make sure the service is not marked for deletion
ifint $(RegLastError) != 0
GetRegValue $(KeyService) "DependOnService" ServiceList
ifint $(RegLastError) == 0
Debug-Output "RemoveServiceDependency: old DependOnService List "*($(ServiceList), 4)
ifcontains(i) $(DependOn) in *($(ServiceList),4)
ForListDo *($(ServiceList),4)
ifstr(i) $($) != $(DependOn)
set newDependList = >($(newDependList), $($))
endif
EndForListDo
; now get any existing group dependencies
GetRegValue $(KeyService) "DependOnGroup" GrpList
ifint $(RegLastError) == 0
ForListDo *($(GrpList),4)
set grp = "+"$($)
set newDependList = >($(newDependList), $(grp))
EndForListDo
endif
Debug-Output "OEMNSVRA.INF:RemoveServiceDependency: new DependOnService List "$(newDependList)
LibraryProcedure Result, $(!LIBHANDLE), +
SetupChangeServiceConfig, $(DependentName) +
$(!SERVICE_NO_CHANGE), $(!SERVICE_NO_CHANGE), +
$(!SERVICE_NO_CHANGE), "", "", +
$(newDependList), "", "", ""
endif
endif
endif
CloseRegKey $(KeyService)
else
Debug-Output "RemoveServiceDependency: failed to open service linkage key"$(DependentService)
endif
Debug-Output "RemoveServiceDependency: exit"
return $(Status)
;-----------------------------------------------------------------------
; ROUTINE: QueryUserQuit
;
; DESCRIPTION: This routine queries whether the user wants to quit setup
;
; INPUTS: None
;
; OUTPUTS: $R0: Status: STATUS_SUCCESSFUL |
; STATUS_FAILED
;
; $R1: UserAction: OK | CANCEL
;
;------------------------------------------------------------------------
[QueryUserQuit]
set Status = STATUS_FAILED
set UserAction = CANCEL
;
; read in quit message
;
set STF_MB_TEXT = "The changes will not be saved. "+
"Are you sure you want to exit Setup."
read-syms ExitWarningDlg$(!STF_LANGUAGE)
ui start "ExitWarning"
ifstr(i) $(DLGEVENT) == "YES"
set Status = STATUS_SUCCESSFUL
set UserAction = "OK"
else-ifstr(i) $(DLGEVENT) == "NO"
set Status = STATUS_SUCCESSFUL
set UserAction = "CANCEL"
else
endif
fin_QueryUserQuit = +
Return $(Status) $(UserAction)
;----------------------------------------------
; EXIT Remote Access Service warning dialog
;----------------------------------------------
;-----------------------------------------------------------------------
; ROUTINE: QueryRasUpgrade
;
; DESCRIPTION: This routine queries whether the user wants to upgrade to
; the new Ras version.
;
; INPUTS: $0: ProductTitle
; $1: InstalledVersion
; $2: new version
;
; OUTPUTS: $R0: Status: STATUS_SUCCESSFUL |
; STATUS_FAILED
;
; $R1: UserAction: OK | CANCEL
;
;------------------------------------------------------------------------
[QueryRasUpgrade]
set Status = STATUS_FAILED
set UserAction = CANCEL
;
; read in quit message
;
read-syms RasUpgrade$(!STF_LANGUAGE)
set Text = $($0)$(Ver)$($1)$(Text1)$(Ver)$($2)$(Text2)$(Text3)
set STF_MB_TEXT = $(Text)
read-syms ExitWarningDlg$(!STF_LANGUAGE)
ui start "RasUpgrade"
ifstr(i) $(DLGEVENT) == "YES"
set Status = STATUS_SUCCESSFUL
set UserAction = "OK"
else-ifstr(i) $(DLGEVENT) == "NO"
set Status = STATUS_SUCCESSFUL
set UserAction = "CANCEL"
else
endif
fin_QueryRasUpgrade = +
Return $(Status) $(UserAction)
;-----------------------------------------------
; Input DIALOGS
;-----------------------------------------------
[CP-List]
NBFCP = "%SystemRoot%\SYSTEM32\RASNBFCP.DLL"
IPCP = "%SystemRoot%\SYSTEM32\RASIPCP.DLL"
IPXCP = "%SystemRoot%\SYSTEM32\RASIPXCP.DLL"
;ATALKCP = "%SystemRoot%\SYSTEM32\RASATCP.DLL"
PAP = "%SystemRoot%\SYSTEM32\RASPAP.DLL"
CHAP = "%SystemRoot%\SYSTEM32\RASCHAP.DLL"
SPAP = "%SystemRoot%\SYSTEM32\RASSPAP.DLL"
CBCP = "%SystemRoot%\SYSTEM32\RASCBCP.DLL"
COMPCP = "%SystemRoot%\SYSTEM32\RASCCP.DLL"
[Files-RemoveList]
; Note that not all RAS files are removed when RAS is
; removed.
; rascfg.dll, rasphone.exe, rasphone.hlp, rasphone.cnt
; rasadmin.exe, rasadmin.hlp, rasadmin.cnt
; all files in system32\ras directory are not removed
; because these are the files copied to the computer
; during text mode setup and should always be present
; so that ras can be setup.
;
; BUGBUG
; Even the list below is not complete. Don't want to
; mess with this so close to NT 4.0 rtm, but this should
; be fixed for next release.
RASADMINDLL = $(!STF_WINDOWSSYSPATH)\RASADMIN.DLL
RASGTWYDLL = $(!STF_WINDOWSSYSPATH)\RASGTWY.DLL
RASGPRXYDLL = $(!STF_WINDOWSSYSPATH)\RASGPRXY.DLL
RASSRVEXE = $(!STF_WINDOWSSYSPATH)\RASSRV.EXE
RASCTRSDLL = $(!STF_WINDOWSSYSPATH)\RASCTRS.DLL
RASCTRSINI = $(!STF_WINDOWSSYSPATH)\RASCTRS.INI
RASCTRNMH = $(!STF_WINDOWSSYSPATH)\RASCTRNM.H
RASSPRXYEXE = $(!STF_WINDOWSSYSPATH)\RASSPRXY.EXE
RASSAUTHDLL = $(!STF_WINDOWSSYSPATH)\RASSAUTH.DLL
RASDIALEXE = $(!STF_WINDOWSSYSPATH)\RASDIAL.EXE
RASPHONEHLP = $(!STF_WINDOWSSYSPATH)\RASPHONE.HLP
RASGLOSSHLP = $(!STF_WINDOWSSYSPATH)\RASGLOSS.HLP
RASAPI32DLL = $(!STF_WINDOWSSYSPATH)\RASAPI32.DLL
RASCAUTHDLL = $(!STF_WINDOWSSYSPATH)\RASCAUTH.DLL
RASADMINHLP = $(!STF_WINDOWSSYSPATH)\RASADMIN.HLP
RASMANDLL = $(!STF_WINDOWSSYSPATH)\RASMAN.DLL
RASMANEXE = $(!STF_WINDOWSSYSPATH)\RASMAN.EXE
RASMSGDLL = $(!STF_WINDOWSSYSPATH)\RASMSG.DLL
RASMXSDLL = $(!STF_WINDOWSSYSPATH)\RASMXS.DLL
RASSERDLL = $(!STF_WINDOWSSYSPATH)\RASSER.DLL
RASIPXCPDLL = $(!STF_WINDOWSSYSPATH)\RASIPXCP.DLL
RASPPPDLL = $(!STF_WINDOWSSYSPATH)\RASPPP.DLL
RASPPPENDLL = $(!STF_WINDOWSSYSPATH)\RASPPPEN.DLL
RASPAPDLL = $(!STF_WINDOWSSYSPATH)\RASPAP.DLL
RASCHAPDLL = $(!STF_WINDOWSSYSPATH)\RASCHAP.DLL
RASSPAPDLL = $(!STF_WINDOWSSYSPATH)\RASSPAP.DLL
RASIPCPDLL = $(!STF_WINDOWSSYSPATH)\RASIPCP.DLL
RASIPHLPDLL = $(!STF_WINDOWSSYSPATH)\RASIPHLP.DLL
RASNBFCPDLL = $(!STF_WINDOWSSYSPATH)\RASNBFCP.DLL
RASNBIPCDLL = $(!STF_WINDOWSSYSPATH)\RASNBIPC.DLL
RASCCPDLL = $(!STF_WINDOWSSYSPATH)\RASCCP.DLL
RASCBCPDLL = $(!STF_WINDOWSSYSPATH)\RASCBCP.DLL
ASYNCMACSYS = $(!STF_WINDOWSSYSPATH)\DRIVERS\ASYNCMAC.SYS
NDISWANSYS = $(!STF_WINDOWSSYSPATH)\DRIVERS\NDISWAN.SYS
RASARPSYS = $(!STF_WINDOWSSYSPATH)\DRIVERS\RASARP.SYS