OEMSETUP.INF Driver File Contents (migtools.exe)

;***********************************************************************
;
; OEMSETUP.INF
;
;	Novell NetWare base installation INF
;
;
;***********************************************************************

;-----------------------------------------------------------------------
; OPTION TYPE
; -----------
; This identifies the Option type we are dealing with.  The different
; possible types are:
;
; COMPUTER, DISPLAY, MOUSE, KEYBOARD, LAYOUT, SCSI, PRINTER, ...
;
;  Types specific to networking:
;
; NetAdapter,	 a netcard / adapter combination or just a netcard
; NetDriver,	  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 = NetProvider

;-----------------------------------------------------------------------
; OPTION LIST
; -----------
; This section lists the OEM Option key names.  These keys are locale
; independent and used to represent the option in a locale independent
; manner.
;
;-----------------------------------------------------------------------

[Options]
	NWFS

;-----------------------------------------------------------------------
; LANGUAGES SUPPORTED
; -------------------
;
; The languages supported by the OEM INF, For every language supported
; we need to have a separate text section for every displayable text
; section.
;
;-----------------------------------------------------------------------

[LanguagesSupported]
	ENG, ENGLISH

;-----------------------------------------------------------------------
; OPTION TEXT SECTION
; -------------------
; These are text strings used to identify the option to the user.  There
; are separate sections for each language supported.  The format of the
; section name is "OptionsText" concatenated with the Language represented
; by the section.
;
;-----------------------------------------------------------------------

[OptionsTextENG]
	NETWARE	= "Novell NetWare Client Services"

;***********************************************************************
; Language-Dependent Dialog Constants
;***********************************************************************
[FileConstantsENG]
;
;  Variables to support thermometer gauge and error dialogs
;
ProCaption	= "Novell NetWare Client Services Setup"
ProCancel	= "Cancel"
ProCancelMsg = "The Novell NetWare Client Services is not correctly installed.  "+
		 "Are you sure you want to cancel copying files?"

ProCancelCap = "Network Setup Message"
ProText1	= "Copying:"
ProText2	= "To:"


;
; Product Info
;
FunctionTitle	= "NetWare Services Setup"

;
; Used by GetInfFileNameFromRegistry
;
[InitBaseVars]

KeyNull		= ""
MAXIMUM_ALLOWED	= 33554432
KeyInfo		= {}
RegistryErrorIndex = NO_ERROR
NoTitle		= 0

CurrentControlSet  = "SYSTEM\CurrentControlSet"
ServicesBaseName	= $(CurrentControlSet)"\Services"

[OdiNSupVars]
	 OdiNSupServiceName	= "ODINSUP"
	 OdiNSupParameters	= $(!NTN_ServiceBase)"\"$(OdiNSupServiceName)"\Parameters"
	 OdiNSupLinkage		= $(!NTN_ServiceBase)"\"$(OdiNSupServiceName)"\Linkage"
	 OdiNSupCardName		= "Bind"
	 OdiNSupCardInstance = "BoardInstance"

[OdiVars]
	 OdiLoadDriverName	 = "OdiLoad"
	 OdiModules	 = "ODI_Modules"
	 OdiLinkName	= "OdiLoadName"
	 OdiModuleName = $(!NTN_ServiceBase)"\"$(OdiLoadDriverName)"\"$(OdiModules)
	 NetworkCardsKeyName = $(!NTN_SoftwareBase)"\Microsoft\Windows NT\CurrentVersion\NetworkCards"

;-----------------------------------------------
; Input DIALOGS
;-----------------------------------------------
[FileDependentDlgENG]
;
; No UI yet for NetWare Services
;


;***********************************************************************
; CONSTANTS FOR USING DIALOGS
;***********************************************************************

[FileConstants]
;
;  File names, etc.
;
UtilityInf	= "UTILITY.INF"
subroutineinf	= "SUBROUTN.INF"
NwSubsInf	= "NWSUBS.INF"
NwSetupDll	= "nwsetup.dll"
SoftwareType	= "service"
Exit_Code	= 0
;ShellCode	= 0

; Product Info
;
Manufacturer	= "Novell"
ProductMajorVersion	= "1"
ProductMinorVersion	= "01"
ProductVersion  = $(ProductMajorVersion)"."$(ProductMinorVersion)
UserModeRoot	= "%SystemRoot%"
System32Root	= $(UserModeRoot)"\System32\"
SoftwareBinHome = $(System32Root)"NetWare\"
DriverBinHome	= $(System32Root)"Drivers\"
NetWareEventFile= $(System32Root)"nwevents.dll"


;
; Services
;

; MUP: if not already installed

ProductMUPControl	= service
ProductMUPHidden	 = 0
ProductMUPInstrumentation	= FALSE
ProductMUPName	  = "Mup"
ProductMUPDisplayName  = "Mup"
ProductMUPTitle	 = "Mup"
ProductMUPImagePath	= "\SystemRoot\System32\drivers\mup.sys"
ProductMUPSvcType	= "transport"
ProductMUPGroup	 = "Network"
ProductMUPDependList	= {}
ProductMUPEventFile	= ""

; TDI: if not already installed

ProductTDIControl	= service
ProductTDIHidden	 = 0
ProductTDIInstrumentation	= FALSE
ProductTDIName	  = "Tdi"
ProductTDIDisplayName  = "Tdi"
ProductTDITitle	 = "Tdi"
ProductTDIImagePath	= "\SystemRoot\System32\drivers\TDI.sys"
ProductTDISvcType	= "kernelauto"
ProductTDIGroup	 = "Network"
ProductTDIDependList	= {}
ProductTDIEventFile	= ""

; NwtDrv: Driver for Ipx Api's.

ProductNWTControl	= service
ProductNWTHidden	 = 0
ProductNWTInstrumentation	= TRUE
ProductNWTName	  = "NwtDrv"
ProductNWTDisplayName  = "NetWare Transport Interface"
ProductNWTTitle	 = "NetWare Transport Interface"
ProductNWTImagePath	= $(SoftwareBinHome)nwtdrv.sys
ProductNWTSvcType	= "kernelautostart"
ProductNWTGroup	 = ""
ProductNWTDependList	= {"+TDI"}
ProductNWTEventFile	= $(NetWareEventFile)

; SpxApi: Driver for Spx Api's.

ProductSPXAPIControl	= service
ProductSPXAPIHidden = 0
ProductSPXAPIInstrumentation	= TRUE
ProductSPXAPIName	  = "SpxApi"
ProductSPXAPIDisplayName  = "NetWare SPX Transport Interface"
ProductSPXAPITitle	 = "NetWare SPX Transport Interface"
ProductSPXAPIImagePath	= $(SoftwareBinHome)spxapi.sys
ProductSPXAPISvcType	= "systemauto"
ProductSPXAPIGroup	 = ""
ProductSPXAPIDependList	= {"+TDI"}
ProductSPXAPIEventFile	= $(NetWareEventFile)

; IpxApi: Driver for Ipx Api's.

ProductIPXAPIControl	= service
ProductIPXAPIHidden	 = 0
ProductIPXAPIInstrumentation	= TRUE
ProductIPXAPIName	  = "IpxApi"
ProductIPXAPIDisplayName  = "NetWare IPX Transport Interface"
ProductIPXAPITitle	 = "NetWare IPX Transport Interface"
ProductIPXAPIImagePath	= $(SoftwareBinHome)ipxapi.sys
ProductIPXAPISvcType	= "systemauto"
ProductIPXAPIGroup	 = ""
ProductIPXAPIDependList	= {"+TDI"}
ProductIPXAPIEventFile	= $(NetWareEventFile)

; Route: ODI Source Routing

ProductROUTEControl	= service
ProductROUTEHidden	 = 0
ProductROUTEInstrumentation	= FALSE
ProductROUTEName	 = "OdiSourceRouting"
ProductROUTEDisplayName = "NetWare ODI Source Routing Support"
ProductROUTETitle	= "NetWare ODI Source Routing Support"
ProductROUTEImagePath	= $(SoftwareBinHome)route.sys
ProductROUTESvcType	= "kerneldisable"
ProductROUTEGroup	= ""
ProductROUTEDependList  = {"+ODI Drivers"}
ProductROUTEEventFile	= $(NetWareEventFile)

; NwFs: NetWare Workstation

ProductNWFSControl	= component
ProductNWFSHidden	 = 0
ProductNWFSReviewBindings	= 1
ProductNWFSInstrumentation	= TRUE
ProductNWFSName	 = "NetWareWorkstation"
ProductNWFSDisplayName = "Novell NetWare Client Services"
ProductNWFSTitle	= "Novell NetWare Client Services"
ProductNWFSImagePath	= $(SoftwareBinHome)nwfs.sys
ProductNWFSDescription = "Novell NetWare Client Services for Windows NT"
ProductNWFSSvcType	= "systemauto"
ProductNWFSSoftType	= "service"
ProductNWFSGroup	= ""
ProductNWFSDependList  = {"+TDI","+NetWare Services","Mup","IpxSpx"}
ProductNWFSEventFile	= $(NetWareEventFile)
ProductNWFSKeySoftware = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"$(ProductNWFSName)"\CurrentVersion"


NetRuleNWFSSoftwareType	= "nwfs nwFileSys"
NetRuleNWFSSoftwareUse	= "service yes yes"
NetRuleNWFSSoftwareBindForm = """Nwfs"" yes yes container"
NetRuleNWFSSoftwareClass	= {"nwFileSys basic"}
NetRuleNWFSSoftwareBindable = {"nwFileSys nwTransport non non 100"}

; IpxSpx: Transport

ProductIPXSPXControl	= component
ProductIPXSPXHidden	 = 0
ProductIPXSPXInstrumentation	= TRUE
ProductIPXSPXName	 = "IpxSpx"
ProductIPXSPXDisplayName = "Novell NetWare IPX/SPX Transport"
ProductIPXSPXTitle	= "Novell NetWare IPX/SPX Transport"
ProductIPXSPXDescription = "Novell NetWare IPX/SPX Network Transport"
ProductIPXSPXImagePath	= $(SoftwareBinHome)ipxspx.sys
ProductIPXSPXSvcType	= "kernelautostart"
ProductIPXSPXSoftType	= "transport"
ProductIPXSPXGroup	= "TDI"
ProductIPXSPXDependList  = {"+ODI Drivers"}
ProductIPXSPXEventFile	= $(NetWareEventFile)
ProductIPXSPXKeySoftware = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"$(ProductIPXSPXName)"\CurrentVersion"


NetRuleIPXSPXSoftwareType	= "ipxspx nwTransport"
NetRuleIPXSPXSoftwareUse	= "transport yes yes"
NetRuleIPXSPXSoftwareBindForm = """IpxSpx"" yes yes simple"
NetRuleIPXSPXSoftwareClass	= {"nwTransport basic"}
NetRuleIPXSPXSoftwareBindable = {"nwTransport nwOdiLoader non non 80", +
											"nwTransport nwNwIPDriver non non 90", +
											"nwTransport nwOdiVMIDDriver non non 70"}

; OdiLoad: ODI Adapter Driver Loader.

ProductODILOADControl	= component
ProductODILOADHidden	 = 1
ProductODILOADInstrumentation	= TRUE
ProductODILOADName	 = "OdiLoad"
ProductODILOADDisplayName = "NetWare ODI MAC Driver Loader"
ProductODILOADTitle	= "NetWare ODI MAC Driver Loader"
ProductODILOADDescription = "NetWare ODI MAC Driver Controller"
ProductODILOADImagePath	= $(SoftwareBinHome)odiload.sys
ProductODILOADSvcType	= "kerneldisable"
ProductODILOADSoftType	= "driver"
ProductODILOADGroup	= "ODI Drivers"
ProductODILOADDependList  = {"+ODI"}
ProductODILOADEventFile	= $(NetWareEventFile)
ProductODILOADKeySoftware = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"$(ProductODILOADName)"\CurrentVersion"


NetRuleODILOADSoftwareType	= "odiLoad nwOdiLoader"
NetRuleODILOADSoftwareUse	= "driver yes yes"
NetRuleODILOADSoftwareBindForm = """Odiload"" yes yes simple"
NetRuleODILOADSoftwareClass	= {"nwOdiLoader basic","nwAdapter basic yes"}
NetRuleODILOADSoftwareBindable = {"nwOdiLoader nwAdapter non exclusive 100"}

; Lsl: Link Support Layer.

ProductLSLControl	= service
ProductLSLHidden	 = 1
ProductLSLInstrumentation	= TRUE
ProductLSLName	 = "LSL"
ProductLSLDisplayName = "NetWare LSL"
ProductLSLTitle	= "NetWare LSL"
ProductLSLImagePath	= $(SoftwareBinHome)lsl.sys
ProductLSLSvcType	= "kernelautostart"
ProductLSLGroup	= "ODI"
ProductLSLDependList  = {"+NetWare Services"}
ProductLSLEventFile	= $(NetWareEventFile)

; ResMgr: NetWare Resource Manager

ProductRESMGRControl	= component
ProductRESMGRHidden	 = 1
ProductRESMGRInstrumentation	= TRUE
ProductRESMGRName	 = "ResMgr"
ProductRESMGRDisplayName = "NetWare Resource Manager"
ProductRESMGRTitle	= "NetWare Resource Manager"
ProductRESMGRDescription = "NetWare Resource Manager"
ProductRESMGRImagePath	= $(SoftwareBinHome)resmgr.sys
ProductRESMGRSvcType	= "kernelautostart"
ProductRESMGRSoftType	= "service"
ProductRESMGRGroup	= "NetWare Services"
ProductRESMGRDependList  = {}
ProductRESMGREventFile	= $(NetWareEventFile)
ProductRESMGRKeySoftware = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"$(ProductRESMGRName)"\CurrentVersion"

; RECONNECT: Auto Reconnect service

ProductRECONNECTControl	= service
ProductRECONNECTHidden	 = 0
ProductRECONNECTInstrumentation	= FALSE
ProductRECONNECTName	 = "NetWareAutoReconnect"
ProductRECONNECTDisplayName = "NetWare Auto Reconnect Service"
ProductRECONNECTTitle = "NetWare Auto Reconnect Service"
ProductRECONNECTImagePath	= $(SoftwareBinHome)reconsvc.exe
ProductRECONNECTSvcType	= "serviceauto"
ProductRECONNECTGroup	= ""
ProductRECONNECTDependList  = {"NetWareWorkstation"}
ProductRECONNECTEventFile	= $(NetWareEventFile)

; VMLID: Auto VMLID service

ProductVMLIDControl	= component
ProductVMLIDHidden	 = 1
ProductVMLIDInstrumentation	= FALSE
ProductVMLIDName	 = "OdiVMLID"
ProductVMLIDDisplayName = "ODI Virtual MLID"
ProductVMLIDTitle = "ODI Virtual MLID"
ProductVMLIDImagePath	= $(SoftwareBinHome)vmlid.sys
ProductVMLIDDescription = "ODI Virtual MLID"
ProductVMLIDSvcType	= "kernelautostart"
ProductVMLIDSoftType	= "service"
ProductVMLIDGroup	= "ODI Drivers"
ProductVMLIDDependList  = {"+NDIS","+ODI"}
ProductVMLIDEventFile	= $(NetWareEventFile)
ProductVMLIDKeySoftware = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"$(ProductVMLIDName)"\CurrentVersion"

NetRuleVMLIDSoftwareType	= "odivmlid nwOdiVMLIDDriver"
NetRuleVMLIDSoftwareUse	= "service yes yes"
NetRuleVMLIDSoftwareBindForm = """OdiVMLID"" yes yes container"
NetRuleVMLIDSoftwareClass	= {"nwOdiVMLIDDriver basic"}
NetRuleVMLIDSoftwareBindable = {"nwOdiVMLIDDriver ndisDriver non non 100"}

; NWPOPUP: NWPOPUP message service

ProductNWPOPUPControl	= service
ProductNWPOPUPHidden	 = 0
ProductNWPOPUPInstrumentation	= FALSE
ProductNWPOPUPName	 = "NWPopUp"
ProductNWPOPUPDisplayName = "NetWare Message PopUp Service"
ProductNWPOPUPTitle = "NetWare Message PopUp Service"
ProductNWPOPUPImagePath	= $(SoftwareBinHome)nwmsgsvc.exe
ProductNWPOPUPSvcType	= "serviceauto"
ProductNWPOPUPGroup	= ""
ProductNWPOPUPDependList  = {"NetWareWorkstation"}
ProductNWPOPUPEventFile	= $(NetWareEventFile)


; ODINSUP: ODI over NDIS shim

;ProductODINSUPControl	= component
;ProductODINSUPHidden	 = 1
;ProductODINSUPInstrumentation	= TRUE
;ProductODINSUPName	 = "Odinsup"
;ProductODINSUPDisplayName = "ODI Support for NDIS Protocols Driver"
;ProductODINSUPTitle	= "ODI Support for NDIS Protocols Driver"
;ProductODINSUPDescription = "ODI Support for NDIS Protocols Driver"
;ProductODINSUPImagePath	= "SystemRoot\system32\drivers\odinsup.sys"
;ProductODINSUPSvcType	= "Kerneldisable"
;ProductODINSUPSoftType	= "driver"
;ProductODINSUPGroup	= "NDIS"
;ProductODINSUPDependList  = {"+ODI Drivers"}
;ProductODINSUPEventFile	= $(NetWareEventFile)
;ProductODINSUPKeySoftware = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"$(ProductODINSUPName)"\CurrentVersion"
;
;
;NetRuleODINSUPSoftwareType	= "odinsupSys ndisDriver odinsupDriver"
;NetRuleODINSUPSoftwareUse	= "driver"
;NetRuleODINSUPSoftwareBindForm = """OdinsupSys"" yes no container"
;NetRuleODINSUPSoftwareClass	= 	{"odinsupDriver basic"}
;NetRuleODINSUPSoftwareBindable = {"odinsupDriver odinsupAdapter non exclusive 100"}


; Provider

ProductProviderName	= "NetWare Services"
ProductProviderImagePath = "%SystemRoot%\System32\netware.dll"
ProductProviderDevice	= "\Device\NetWareWorkstation"
ProductProviderClass	= 3

; Registry key names

ProductKeyName  = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"$(ProductNWFSName)"\CurrentVersion"
ParamKeyName	= $(!NTN_ServiceBase)"\"$(ProductNWFSName)"\Parameters"

ServiceNameList = ^(ServiceNames, 1)
ExtendedFunctionList = ^(ExtendedFunctionNames,1)


; referenced by ServiceNameList
[ServiceNames]
SVC_1 = "NWFS"
SVC_2 = "IPXSPX"
SVC_3 = "LSL"
SVC_4 = "RESMGR"
SVC_5 = "ODILOAD"
SVC_6 = "MUP"
SVC_7 = "TDI"
SVC_8 = "SPXAPI"
SVC_9 = "IPXAPI"
SVC_10 = "ROUTE"
SVC_11 = "RECONNECT"
SVC_12 = "VMLID"
SVC_13 = "NWPOPUP"
;SVC_14 = "ODINSUP"

; referenced by ExtendedFunctionList
[ExtendedFunctionNames]
EXFN_1 = "AuthenticationPackage"
EXFN_2 = "NetworkProvider"
;EXFN_3 = "ServiceGroupOrder"
EXFN_4 = "NetWarePrintServices"

[GeneralConstants]
;
;  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
RegistryErrorIndex = NO_ERROR
KeyProduct	= ""
KeyParameters	= ""

TRUE		= 1
FALSE		= 0
NoTitle		= 0

ExitState	= "Active"
OldVersionExisted = $(FALSE)

[ExtendedConstants]

SvcList = {"NetWare Services","ODI","ODI Drivers"}
PkgName = "nwv1_0"
ProviderName = "NetWareWorkstation"
NetWarePrintProviderName = "NetWare Print Services"
PrintProvider = "System\CurrentControlSet\Control\Print\Providers"

[IpxSpxConstants]
FrameTypeName	= "Frame Type"
CardTypeName	= "Card Name"
CardName	 = ""
CardInstance	= "Card Instance"
CardInstanceNum = ""
BindValueName	= "bindings"
IpxNtCardInstance = "Nt Card Instance"

[date]
	; Now is a list which contains { Sec from 1-1-1970, Year, Month, Day, Hour,
	; Minute, Second }
	Now = {} ? $(!LIBHANDLE) GetSystemDate

[DetectSystemMemory]
	SystemMemory	= "" ? $(!LIBHANDLE) GetMemorySize

[ProcessorDetect]
	!STF_PROCESSOR = "" ? $(!LIBHANDLE) GetProcessor

;---------------------------------------------------------------------------
; 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)

;----------InstallOption-------------------------------------------------
;
; InstallOption:
;
;	This section is shelled to by main installation processing
;	or by NCPASHEL.INF during reconfig, removal, update, etc.
;
;
; FUNCTION:  To copy files representing Options
;		To configure the installed option
;		To update the registry for the installed option
;
; INPUT:	$($0):  Language to use
;		$($1):  OptionID to install
;		$($2):  SourceDirectory
;		$($3):  AddCopy  (YES | NO)
;		$($4):  DoCopy	(YES | NO)
;		$($5):  DoConfig (YES | NO)
;
; OUTPUT:	$($R0): STATUS: STATUS_SUCCESSFUL |
;				STATUS_NOLANGUAGE |
;				STATUS_USERCANCEL |
;				STATUS_FAILED
;
;------------------------------------------------------------------------
[InstallOption]
	;
	; extract parameters
	;
	set Option	= $($1)
	set SrcDir	= $($2)
	set AddCopy  = $($3)
	set DoCopy	= $($4)
	set DoConfig = $($5)

	set OriginalAddCopy = $($3)
	set OriginalDoCopy = $($4)


	;
	;  For now,
	;

	;
	; Check if the language requested is supported
	;
	set LanguageList = ^(LanguagesSupported, 1)
	Ifcontains(i) $($0) NOT-IN $(LanguageList)
	 Return STATUS_NOLANGUAGE
	endif

;	set LANGUAGE = *( ^(LanguagesSupported, 2), ~(LanguageList, $(!STF_LANGUAGE))

	Debug-Output "OEMNPRNW.INF: Language used: LANGUAGE = "$(LANGUAGE)
	Debug-Output "1: STF_PLATFORM  = "$(!STF_PLATFORM)
	Debug-Output "1: STF_PROCESSOR = "$(!STF_PROCESSOR)

	detect ProcessorDetect

	Debug-Output "2: STF_PROCESSOR = "$(!STF_PROCESSOR)

	ifstr(i) $(!STF_PROCESSOR) == "I386"
	 set !STF_PLATFORM = "I386"
	else-ifstr(i) $(!STF_PROCESSOR) == "I486"
	 set !STF_PLATFORM = "I386"
	else-ifstr(i) $(!STF_PROCESSOR) == "I586"
	 set !STF_PLATFORM = "I386"
	else-ifstr(i) $(!STF_PROCESSOR) == "R4000"
	 set !STF_PLATFORM = "Mips"
	else
	 set !STF_PLATFORM = "Alpha"
	endif

	Debug-Output "2: STF_PLATFORM  = "$(!STF_PLATFORM)

	StartWait

	; define all the constants

	set-subst LF = "\n"

	read-syms GeneralConstants
	read-syms FileConstants

	read-syms DialogConstants$(!STF_LANGUAGE)
	ifstr(i) $(!NTN_Origination) == "NCPA"
	 set Continue = "OK"
	endif
	read-syms FileConstants$(!STF_LANGUAGE)

	detect date

	set-title  $(FunctionTitle)

	set to	= Begin
	set from = Begin
;
;  Assume all is well.
;
	set CommonStatus = STATUS_SUCCESSFUL

Begin = +
	Set OEM_ABANDON_SERVICES = {}
	Set OEM_ABANDON_COMPONENTS = {}
	Set DoReboot = "NO"

	Ifstr(i) $(!NTN_InstallMode) == deinstall

	 set StartLabel = removenetware

	else-Ifstr(i) $(!NTN_InstallMode) == update
	 set StartLabel = upgradenetware
	else-Ifstr(i) $(!NTN_InstallMode) == bind
	 set StartLabel = bindnetware
	else-Ifstr(i) $(!NTN_InstallMode) == configure
	 Set StartLabel = configurenetware
	else
	 set StartLabel = installnetware
	 ;
	 ;  Turn on all the options.
	 ;
	 ForListDo $(ServiceNameList)
		Set Do$($) = TRUE
	 EndForListDo
	endif

	set from = $(fatal)
	set to = $(fatal)

	goto $(StartLabel)

;-----------------------------------------------
; Installation Section
;-----------------------------------------------

installnetware = +
;
;	First, check whether the same version of the software exists
;
	OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\NetWareWorkStation" $(MAXIMUM_ALLOWED) KeyProduct

	Ifstr $(KeyProduct) != $(KeyNull)
	 ;
	 ; Same version already existed in the local machine
	 ; Popup the dialog and ask the user whether he wants to continue
	 ;
	 CloseRegKey $(KeyProduct)

	 Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "FATAL", +
		"The Novell NetWare Client Services is already installed. "+
		"Please remove and then reboot before reinstalling it."

	 ifint $($ShellCode) != $(!SHELL_CODE_OK)
		goto ShellCodeError
	 endif

	 set CommonStatus = STATUS_USERCANCEL
	 goto end
	endif

;
;	Second, check for Microsoft's redirector
;

	OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_SoftwareBase)"\Microsoft\NWCWorkstation\CurrentVersion" $(MAXIMUM_ALLOWED) KeyProduct

	Ifstr $(KeyProduct) != $(KeyNull)
		;
	; Microsoft redirector found
	; Tell user to remove it first and reboot
	;
	Debug-Output "Found Microsoft Redirector."
	 CloseRegKey $(KeyProduct)

	Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "FATAL", +
		"The Microsoft NetWare Compatible Workstation is installed."$(LF)+
		"Please remove it and then reboot the system to install the"$(LF)+
		"			Novell NetWare Workstation."

	ifint $($ShellCode) != $(!SHELL_CODE_OK)
		goto ShellCodeError
	endif

	set CommonStatus = STATUS_USERCANCEL
	goto end
	Endif

	LibraryProcedure Status1, $(!LIBHANDLE), CheckFileExistance, $(!STF_WINDOWSSYSPATH)"\netware.drv"
	ifstr(i) $(Status1) == "YES"
   	LibraryProcedure Status1, $(!LIBHANDLE), DelFile, $(!STF_WINDOWSSYSPATH)"\netware.drv"
	endif

	EndWait

	Ifstr(i) $(DoCopy) == "YES"
	;
	;  Get source location
	;
	;	Shell $(UtilityInf), DoAskSource, $(!STF_CWDDIR), $(SrcDir) YES
		Shell "", DoAskSource, $(!STF_CWDDIR), $(SrcDir) 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 successful
		Endif
	
		Set SrcDir = $($R1)
	
		LibraryProcedure STATUS, $(!LIBHANDLE), AppendBackSlash $(SrcDir)
	
		ifstr(i) $(STATUS) != "ERROR"
			set SrcDir = $(STATUS)
		Endif
	
	Endif

	StartWait

	install "Install-NetWare-Dir"
	install "Install-Option"
	ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
		Shell $(UtilityInf) RegistryErrorString "UNABLE_COPY_FILE"
		ifint $($ShellCode) != $(!SHELL_CODE_OK)
			goto ShellCodeError
		endif
		set Error = $($R0)
		goto fatal
	endif

	set OEM_ABANDON_ON  = TRUE

	;
	;  Install all enabled services mentioned in the ServiceNameList
	;

	ForListDo  $(ServiceNameList)
		Set SvcOpt = $($)
		; Check to see if the product to be installed is already installed
		;
		Set TempProductKeyName = $(!NTN_ServiceBase)"\"$(Product$(SvcOpt)Name)
		OpenRegKey $(!REG_H_LOCAL) "" $(TempProductKeyName) $(MAXIMUM_ALLOWED) TempKey
		ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
			Debug-Output "OMENPRNW.INF: "$(SvcOpt)" is already installed"
			Set Do$(SvcOpt) = FALSE
		Endif
	
		Ifstr(i) $(Do$(SvcOpt)) == TRUE
			Ifstr(i) $(Product$(SvcOpt)Control) == component
				Debug-Output "OEMNPRNW.INF: install component: "$(SvcOpt)
				Shell $(UtilityInf), AddSoftwareComponent +
					$(Manufacturer), +
					$(Product$(SvcOpt)Name), +
					$(Product$(SvcOpt)Name), +
					$(Product$(SvcOpt)DisplayName), +
					$(STF_CONTEXTINFNAME), +
					$(Product$(SvcOpt)ImagePath), +
					$(Product$(SvcOpt)SvcType), +
					$(Product$(SvcOpt)Group), +
					$(Product$(SvcOpt)DependList), "" +
					$(Product$(SvcOpt)EventFile), "", "", 1
	
				Ifint $($ShellCode) != $(!SHELL_CODE_OK)
					Debug-Output "OEMNPRNW.INF: AddSoftwareComponent ShellCode error "$($ShellCode)" installing "$(SvcOpt)
					EndWait
					goto ShellCodeError
				Endif
				StartWait
	
				Set RegistryErrorIndex = $($R0)
	
				Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
					EndWait
					CloseRegKey $($R1)
					CloseRegKey $($R2)
					CloseRegKey $($R3)
					Debug-Output "OEMNPRNW.INF: Registry error "$(RegistryErrorIndex)" installing "$(SvcOpt)
					EndWait
					goto fatalregistry
				Endif
	
				Set SvcVersion  = $($R1)
				Set SvcNetRules = $($R2)
				Set SvcSvcKey	= $($R3)
				Set SvcParamKey = $($R4)
				Set SvcLinkKey  = $($R5)

				ifint $(Product$(SvcOpt)ReviewBindings) == 1
					Set ReviewBindingsValue = 1
				else
					Set ReviewBindingsValue = 0
				Endif

				Set NewValueList = {{SoftwareType,$(NoTitle),$(!REG_VT_SZ),$(Product$(SvcOpt)SoftType)},+
						{Hidden,$(NoTitle),$(!REG_VT_DWORD),$(Product$(SvcOpt)Hidden)},+
						{Review,$(NoTitle),$(!REG_VT_DWORD),$(ReviewBindingsValue)},+
						{MajorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMajorVersion)},+
						{MinorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMinorVersion)},+
						{Title,$(NoTitle),$(!REG_VT_SZ),$(Product$(SvcOpt)Title)},+
						{Description,$(NoTitle),$(!REG_VT_SZ),$(Product$(SvcOpt)Description)},+
						{ServiceName,$(NoTitle),$(!REG_VT_SZ),$(Product$(SvcOpt)Name)},+
						{InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)}}
		
				Shell  $(UtilityInf), AddValueList, $(SvcVersion), $(NewValueList)
				StartWait
				Ifint $($ShellCode) != $(!SHELL_CODE_OK)
					Debug-Output "OEMNPRNW.INF: ShellCode error: AddValueList for version info for "$(SvcOpt)
					EndWait
					goto ShellCodeError
				Endif
	
				;
				;  Add the NetRules info
				;
				Set NewValueList = {{type,$(NoTitle),$(!REG_VT_SZ),$(NetRule$(SvcOpt)SoftwareType)},+
						{class,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRule$(SvcOpt)SoftwareClass)}, +
						{bindable,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRule$(SvcOpt)SoftwareBindable)}, +
						{use,$(NoTitle),$(!REG_VT_SZ),$(NetRule$(SvcOpt)SoftwareUse)}, +
						{bindform,$(NoTitle),$(!REG_VT_SZ),$(NetRule$(SvcOpt)SoftwareBindForm)}, +
						{InfOption,$(NoTitle),$(!REG_VT_SZ),$(SvcOpt)}}
		
				Shell  $(UtilityInf), AddValueList, $(SvcNetRules), $(NewValueList)
				StartWait
				Ifint $($ShellCode) != $(!SHELL_CODE_OK)
					Debug-Output "OEMNPRNW.INF: AddValueList ShellCode error = "$($ShellCode)
					EndWait
					Goto ShellCodeError
				Endif
				Set RegistryErrorIndex = $($R0)
		
				Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
					CloseRegKey $(SvcSvcKey)
					CloseRegKey $(SvcParamKey)
					CloseRegKey $(SvcLinkKey)
					CloseRegKey $(SvcVersion)
					CloseRegKey $(SvcNetRules)
					Debug-Output "OEMNPRNW.INF: Registry error adding NetRules to "$(SvcOpt)
					EndWait
					goto fatalregistry
				Endif
	
			Else
				Debug-Output "OEMNPRNW.INF: install service: "$(SvcOpt)
	
				Shell $(UtilityInf), CreateService, +
					$(Product$(SvcOpt)Name), +
					$(Product$(SvcOpt)DisplayName), +
					$(Product$(SvcOpt)ImagePath), +
					$(Product$(SvcOpt)SvcType), +
					$(Product$(SvcOpt)Group), +
					$(Product$(SvcOpt)DependList), "" +
					$(Product$(SvcOpt)EventFile), "", "", 1
		
				StartWait
				Ifint $($ShellCode) != $(!SHELL_CODE_OK)
					Debug-Output "OEMNPRNW.INF: ShellCode error installing "$(SvcOpt)
					EndWait
					goto ShellCodeError
				Endif
	
				Set RegistryErrorIndex = $($R0)
		
				Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
					CloseRegKey $($R1)
					CloseRegKey $($R2)
					CloseRegKey $($R3)
					Debug-Output "OEMNPRNW.INF: Registry error installing "$(SvcOpt)
					EndWait
					goto fatalregistry
				Endif
		
				Set SvcVersion  = ""
				Set SvcNetRules = ""
				Set SvcSvcKey	= $($R1)
				Set SvcParamKey = $($R2)
				Set SvcLinkKey  = $($R3)
			Endif
	
			; Add the NetWare Instrumentation Level.
	
			Ifstr(i) $(Product$(SvcOpt)Instrumentation) == TRUE
			  SetRegValue $(SvcParamKey) {"Instrumentation Level",$(NoTitle),$(!REG_VT_SZ),"NONE"}
			Endif
			;
			;  Call the service-specific installation section
			;
			Shell "" FinishInstalling-$(SvcOpt) +
				$(SvcSvcKey) $(SvcParamKey) $(SvcLinkKey) +
				$(SvcVersion) $(SvcNetRules) $(TransportSelected)
	
			StartWait
	
			Ifstr(i) $(SvcVersion) != ""
			  CloseRegKey $(SvcVersion)
			Endif
			Ifstr(i) $(SvcNetRules) != ""
			  CloseRegKey $(SvcNetRules)
			Endif
	
			CloseRegKey $(SvcSvcKey)
			CloseRegKey $(SvcParamKey)
			CloseRegKey $(SvcLinkKey)
			;
			;  Add this service to the list of "undoable" things in case of failure
			;
			Set OEM_ABANDON_SERVICES = >($(OEM_ABANDON_SERVICES), $(Product$(SvcOpt)Name))
		Endif
	EndForListDo

addextendedfunctions = +

	; Set Version number
	OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_SoftwareBase)"\Novell" $(MAXIMUM_ALLOWED) SoftwareNovell
	Ifstr(i) $(SoftwareNovell) != ""
		SetRegValue $(SoftwareNovell) {"CurrentVersion",$(NoTitle),$(!REG_VT_SZ),$(ProductMajorVersion)$(ProductMinorVersion)}
		CloseRegKey $(SoftwareNovell)
	Endif


	ForListDo $(ExtendedFunctionList)
		Debug-Output "OEMNPRNW.INF: extended function: "$($)
		Shell "" InstallEx-$($)
		StartWait
	EndForListDo

	;====================================================
	;		VIPXVDD  Added
	;====================================================
vipxsection = +

	set ValueName = "IRQ"
	set ValueData = "10"
	set KeyValueList = {$(ValueName),$(NoTitle),$(!REG_VT_DWORD),$(ValueData)}
	set ProductName = "VipxVDD"
	set ProductVersion = "CurrentVersion"
	set VIPXVDDManufactureBase = $(!NTN_SoftwareBase)"\"$(Manufacturer)
	set VIPXVDDProductBase = $(VIPXVDDManufactureBase)"\"$(ProductName)
	set VIPXVDDVersion = $(VIPXVDDProductBase)"\"$(ProductVersion)
	

	;HKEY_LOCAL_MACHINE\SOFTWARE\Novell
	OpenRegKey $(!REG_H_LOCAL) "" $(VIPXVDDManufactureBase) $(!REG_KEY_ALL_ACCESS) MFBaseKey
	ifint $(RegLastError) != $(REG_ERROR_SUCCESS)
		Debug-Output "Creating Software Key '"$(VIPXVDDManufactureBase)
	    ;HKEY_LOCAL_MACHINE\SOFTWARE
		OpenRegKey $(REG_H_LOCAL) "" $(NTN_SoftwareBase) $(REG_KEY_ALL_ACCESS) SFTBaseKey
		ifint $(RegLastError) != $(REG_ERROR_SUCCESS)
			Debug-Output "FATAL Registry Error:  Error Opening Key '"$(NTN_SoftwareBase)"'"
			goto fatalregistry
		endif
		;HKEY_LOCAL_MACHINE\SOFTWARE\Novell
		CreateRegKey $(SFTBaseKey) {$(Manufacturer),$(NoTitle),GenericClass} "" $(REG_KEY_ALL_ACCESS) $(REG_OPT_NONVOL) MFBaseKey
		ifint $(RegLastError) != $(REG_ERROR_SUCCESS)
			Debug-Output "FATAL Registry Error:  Error Creating Key '"$(NTN_SoftwareBase)"'"
			goto fatalregistry
		endif
		CloseRegKey $(SFTBaseKey)
	endif
		
	;HKEY_LOCAL_MACHINE\SOFTWARE\Novell\VipxVDD
	OpenRegKey $(!REG_H_LOCAL) "" $(VIPXVDDProductBase) $(!REG_KEY_ALL_ACCESS) ProdBaseKey
	ifint $(RegLastError) != $(REG_ERROR_SUCCESS)
		Debug-Output "Creating Software Key '"$(VIPXVDDProductBase)"'"
		;HKEY_LOCAL_MACHINE\SOFTWARE\Novell\VipxVDD
		CreateRegKey $(MFBaseKey) {$(ProductName),$(NoTitle),GenericClass} "" $(REG_KEY_ALL_ACCESS) $(REG_OPT_NONVOL) ProdBaseKey
		ifint $(RegLastError) != $(REG_ERROR_SUCCESS)
			Debug-Output "FATAL Registry Error:  Error Creating Key '"$(VIPXVDDProductBase)"'"
			goto fatalregistry
		endif
	endif
	CloseRegKey $(MFBaseKey)
	
	;HKEY_LOCAL_MACHINE\SOFTWARE\Novell\VipxVDD\[CurrentVersion]
	OpenRegKey $(!REG_H_LOCAL) "" $(VIPXVDDVersion) $(!REG_KEY_ALL_ACCESS) VerBaseKey
	ifint $(RegLastError) != $(REG_ERROR_SUCCESS)
		Debug-Output "Creating Software Key '"$(VIPXVDDVersion)"'"
		;HKEY_LOCAL_MACHINE\SOFTWARE\Novell\VipxVDD\['CurrentVersion']
		CreateRegKey $(ProdBaseKey) {$(ProductVersion),$(NoTitle),GenericClass} "" $(REG_KEY_ALL_ACCESS) $(REG_OPT_NONVOL) VerBaseKey
		ifint $(RegLastError) != $(REG_ERROR_SUCCESS)
			Debug-Output "FATAL Registry Error:  Error Creating Key '"$(VIPXVDDVersion)"'"
			goto fatalregistry
		endif
	endif
	CloseRegKey $(ProdBaseKey)
	CloseRegKey $(VerBaseKey)
	
	;	The key opened by CreateRegKey does not have the rights that it should
	;	That is why it has been closed and then reopened.  This appears to be a bug in
	;	CreateRegKey stuff.

	OpenRegKey $(!REG_H_LOCAL) "" $(VIPXVDDVersion) $(!REG_KEY_ALL_ACCESS) VerBaseKey
	ifint $(RegLastError) != $(REG_ERROR_SUCCESS)
		Debug-Output "FATAL Registry Error:  Error Opening Key '"$(VIPXVDDVersion)"'"
		goto fatalregistry
	else
		Debug-Output "Writing '"$(VIPXVDDVersion)": "$(ValueName)" = "$(ValueData)"'"
		SetRegValue $(VerBaseKey) $(KeyValueList)
		ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
			Debug-Output "ERROR Writing '"$(VIPXVDDVersion)": "$(ValueName)" = "$(ValueData)"'"
			Debug-Output "     'RegLastError' = "$(RegLastError)$(LF)
			goto fatalregistry
		endif
	CloseRegKey $(VerBaseKey)
	endif

	OpenRegKey $(!REG_H_LOCAL) "" "Software\Microsoft\Windows NT\CurrentVersion\NWCS" $(MAXIMUM_ALLOWED) KeyProduct
	Ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
		Debug-Output "OEMNPRNW.INF: Can't open NWCS - Will create it"
		OpenRegKey $(!REG_H_LOCAL) "" "Software\Microsoft\Windows NT\CurrentVersion" $(MAXIMUM_ALLOWED) CurrentVersion
		Ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
			Debug-Output "OEMNPRNW.INF: Can't open Software\Microsoft\Windows NT\CurrentVersion"
			goto fatalregistry
		Endif
		CreateRegKey $(CurrentVersion) {"NWCS",$(NoTitle),GenericClass} "" $(REG_KEY_ALL_ACCESS) $(REG_OPT_NONVOL) NewProduct
		ifint $(RegLastError) != $(REG_ERROR_SUCCESS)
			CloseRegKey $(CurrentVersion)
			Debug-Output "FATAL Registry Error:  Error Creating Key 'NWCS'"
			goto fatalregistry
		Else
			CloseRegKey $(CurrentVersion)
			CloseRegKey $(NewProduct)
			OpenRegKey $(!REG_H_LOCAL) "" "Software\Microsoft\Windows NT\CurrentVersion\NWCS" $(MAXIMUM_ALLOWED) KeyProduct
			Ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
				Debug-Output "OEMNPRNW.INF: Can't open NWCS after creating it- Problem"
				goto fatalregistry
			Endif
		Endif
	Endif

	SetRegValue $(KeyProduct) {"NwcsInstalled",$(NoTitle),$(!REG_VT_SZ),"1"}
	CloseRegKey $(KeyProduct)

	OpenRegKey $(!REG_H_LOCAL) "" "System\CurrentControlSet\Control\WOW" $(MAXIMUM_ALLOWED) WowKey
	ifstr(i) $(WowKey) != ""
	   GetRegValue $(WowKey),"KnownDLLS", KnownDLLsInfo
	   Split-String *($(KnownDLLsInfo),4), " ", KnownDLLsList
	   Ifcontains(i) "netware.drv" not-in $(KnownDLLsList)
	       ifstr(i) *($(KnownDLLsInfo),4) == ""
	           set KnownDLLs = "netware.drv"
	       else
	           set KnownDLLs = *($(KnownDLLsInfo),4)" netware.drv"
	       endif
	       SetRegValue $(WowKey) {"KnownDLLS",$(NoTitle),$(!REG_VT_SZ),$(KnownDLLs)}
	   endif
	   CloseRegKey $(WowKey)
	endif
	

	
	;====================================================
	;		VIPXVDD  -END
	;====================================================

	;====================================================
	;		NLS  Added
	;====================================================
nlssection = +

	set ValueName = "NWLanguage"
	set ValueData = "ENGLISH"
	set KeyValueList = {$(ValueName),$(NoTitle),$(REG_SZ),$(ValueData)}
	set NTN_UserSoftwareBase = "Software"
	set ProductName = "NetWare"
	set NLSProductBase = $(NTN_UserSoftwareBase)"\"$(ProductName)
	set NLSGroup = "Parameters"
	set NLSParameters = $(NLSProductBase)"\"$(NLSGroup)

	Debug-Output "NTN_UserSoftwareBase = "$(NTN_UserSoftwareBase)
	Debug-Output "ProductName = "$(ProductName)
	Debug-Output "NLSProductBase = "$(NLSProductBase)
	Debug-Output "NLSGroup = "$(NLSGroup)
	Debug-Output "NLSParameters = "$(NLSParameters)
	;HKEY_CURRENT_USER\Software\NetWare
	OpenRegKey $(!REG_H_CUSER) "" $(NLSProductBase) $(!REG_KEY_ALL_ACCESS) NWBaseKey
	ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
	Debug-Output $(RegLastError)
		Debug-Output "Opening Software Key '"$(NTN_UserSoftwareBase)"'"
	    ;HKEY_CURRENT_USER\Software
		OpenRegKey $(!REG_H_CUSER) "" $(NTN_UserSoftwareBase) $(!REG_KEY_ALL_ACCESS) SFTBaseKey
		ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
			Debug-Output "FATAL Registry Error("$(RegLastError)"):  Error Opening Key '"$(NTN_UserSoftwareBase)"'"
			goto fatalregistry
		endif
		;HKEY_CURRENT_USER\Software\NetWare
	Debug-Output "Creating Software Key '"$(NLSProductBase)"'"
		Debug-Output "Product Name = '"$(ProductName)"'"
		CreateRegKey $(SFTBaseKey) {$(ProductName),$(NoTitle),GenericClass} "" $(!REG_KEY_ALL_ACCESS) $(!REG_OPT_NONVOL) NWBaseKey
		ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
			Debug-Output "FATAL Registry Error("$(RegLastError)"):  Error Creating Key '"$(NLSProductBase)"'"
			goto fatalregistry
		endif
		CloseRegKey $(SFTBaseKey)
	endif
		
	;HKEY_CURRENT_USER\Software\NetWare\Parameters
	OpenRegKey $(!REG_H_CUSER) "" $(NLSParameters) $(!REG_KEY_ALL_ACCESS) ParmBaseKey
	ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
		Debug-Output "Creating Software Key '"$(NLSParameters)"'"
		;HKEY_CURRENT_USER\Software\NetWare\Parameters
		CreateRegKey $(NWBaseKey) {$(NLSGroup),$(NoTitle),GenericClass} "" $(!REG_KEY_ALL_ACCESS) $(!REG_OPT_NONVOL) ParmBaseKey
		ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
			Debug-Output "FATAL Registry Error:  Error Creating Key '"$(NLSCurrent)"'"
			goto fatalregistry
		endif
	endif
	CloseRegKey $(NWBaseKey)
	CloseRegKey $(ParmBaseKey)
	

	;	The key opened by CreateRegKey does not have the rights that it should
	;	That is why it has been closed and then reopened.  This appears to be a bug in
	;	CreateRegKey stuff.

	OpenRegKey $(!REG_H_CUSER) "" $(NLSParameters) $(!REG_KEY_ALL_ACCESS) ParmBaseKey
	ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
		Debug-Output "FATAL Registry Error:  Error Opening Key '"$(NLSParameters)"'"
		goto fatalregistry
	else
		Debug-Output "Writing '"$(NLSParameters)": "$(ValueName)" = "$(ValueData)"'"
		SetRegValue $(ParmBaseKey) $(KeyValueList)
		ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
			Debug-Output "ERROR Writing '"$(NLSParameters)": "$(ValueName)" = "$(ValueData)"'"
			Debug-Output "     'RegLastError' = "$(RegLastError)$(LF)
			goto fatalregistry
		endif
	endif
	CloseRegKey $(ParmBaseKey)

	;====================================================
	;		NLS  -END
	;====================================================
;goto end
	;====================================================
	;		PERFORMANCE  Added
	;====================================================
perfsection = +

	set ValueName1 = "Close"
	set ValueData1 = "NwPfCloseRedirPerformanceData"
	set ValueName2 = "Collect"
	set ValueData2 = "NwPfCollectRedirPerformanceData"
	set ValueName3 = "Open"
	set ValueData3 = "NwPfOpenRedirPerformanceData"
	set ValueName4 = "Library"
	set ValueData4 = "Nwpfctrs.dll"

	set NwProductName1 = "NetWareWorkstation"
	set NwProductName2 = "LSL"
	set NwProductName3 = "OdiLoad"

	set NwGroup = "Performance"

	set NwProductBase1 = $(!NTN_ServiceBase)"\"$(NwProductName1)
	set NwProductBase2 = $(!NTN_ServiceBase)"\"$(NwProductName2)
	set NwProductBase3 = $(!NTN_ServiceBase)"\"$(NwProductName3)

	set NwParameters1 = $(NwProductBase1)"\"$(NwGroup)
	set NwParameters2 = $(NwProductBase2)"\"$(NwGroup)
	set NwParameters3 = $(NwProductBase3)"\"$(NwGroup)


	;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetWareWorkstation
	OpenRegKey $(!REG_H_LOCAL) "" $(NwProductBase1) $(!REG_KEY_ALL_ACCESS) NWBaseKey
	ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
		Debug-Output "FATAL Registry Error:  Error Opening Key '"$(NwProductBase1)"'"
		goto fatalregistry
	endif
	
	;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetWareWorkstation\Performance
	OpenRegKey $(!REG_H_LOCAL) "" $(NwParameters1) $(!REG_KEY_ALL_ACCESS) ParmBaseKey
	ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
		Debug-Output "Creating Software Key '"$(NwParameters1)"'"
			;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetWareWorkstation\Performance
		CreateRegKey $(NWBaseKey) {$(NwGroup),$(NoTitle),GenericClass} "" $(!REG_KEY_ALL_ACCESS) $(!REG_OPT_NONVOL) ParmBaseKey
		ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
			Debug-Output "FATAL Registry Error:  Error Creating Key '"$(NwParameters1)"'"
			goto fatalregistry
		endif
	endif
	CloseRegKey $(NWBaseKey)
	CloseRegKey $(ParmBaseKey)
	
	;	The key opened by CreateRegKey does not have the rights that it should
	;	That is why it has been closed and then reopened.  This appears to be a bug in
	;	CreateRegKey stuff.
	
	;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetWareWorkstation\Performance
	OpenRegKey $(!REG_H_LOCAL) "" $(NwParameters1) $(!REG_KEY_ALL_ACCESS) ParmBaseKey
	ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
		Debug-Output "FATAL Registry Error:  Error Opening Key '"$(NwParameters1)"'"
		goto fatalregistry
	else
		Debug-Output "Writing '"$(NwParameters1)": "$(ValueName1)" = "$(ValueData1)"'"
		SetRegValue $(ParmBaseKey) {$(ValueName1),$(NoTitle),$(!REG_VT_SZ),$(ValueData1)}
		ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
			Debug-Output "ERROR Writing '"$(NwParameters1)": "$(ValueName1)" = "$(ValueData1)"'"
			Debug-Output "     'RegLastError' = "$(RegLastError)$(LF)
			goto fatalregistry
		endif
		Debug-Output "Writing '"$(NwParameters1)": "$(ValueName2)" = "$(ValueData2)"'"
		SetRegValue $(ParmBaseKey) {$(ValueName2),$(NoTitle),$(!REG_VT_SZ),$(ValueData2)}
		ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
			Debug-Output "ERROR Writing '"$(NwParameters1)": "$(ValueName2)" = "$(ValueData2)"'"
			Debug-Output "     'RegLastError' = "$(RegLastError)$(LF)
			goto fatalregistry
		endif
		Debug-Output "Writing '"$(NwParameters1)": "$(ValueName3)" = "$(ValueData3)"'"
		SetRegValue $(ParmBaseKey) {$(ValueName3),$(NoTitle),$(!REG_VT_SZ),$(ValueData3)}
		ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
			Debug-Output "ERROR Writing '"$(NwParameters1)": "$(ValueName3)" = "$(ValueData3)"'"
			Debug-Output "     'RegLastError' = "$(RegLastError)$(LF)
			goto fatalregistry
		endif
		Debug-Output "Writing '"$(NwParameters1)": "$(ValueName4)" = "$(ValueData4)"'"
		SetRegValue $(ParmBaseKey) {$(ValueName4),$(NoTitle),$(!REG_VT_SZ),$(ValueData4)}
		ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
			Debug-Output "ERROR Writing '"$(NwParameters1)": "$(ValueName4)" = "$(ValueData4)"'"
			Debug-Output "     'RegLastError' = "$(RegLastError)$(LF)
			goto fatalregistry
		endif
	endif
	CloseRegKey $(ParmBaseKey)
	
	;==================================================
	set ValueData1 = "NwPfCloseLSLPerformanceData"
	set ValueData2 = "NwPfCollectLSLPerformanceData"
	set ValueData3 = "NwPfOpenLSLPerformanceData"
	
	;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LSL
	OpenRegKey $(!REG_H_LOCAL) "" $(NwProductBase2) $(!REG_KEY_ALL_ACCESS) NWBaseKey
	ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
		Debug-Output "FATAL Registry Error:  Error Opening Key '"$(NwProductBase2)"'"
		goto fatalregistry
	endif
	
	;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LSL\Performance
	OpenRegKey $(!REG_H_LOCAL) "" $(NwParameters2) $(!REG_KEY_ALL_ACCESS) ParmBaseKey
	ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
		Debug-Output "Creating Software Key '"$(NwParameters2)"'"
			;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LSL\Performance
		CreateRegKey $(NWBaseKey) {$(NwGroup),$(NoTitle),GenericClass} "" $(!REG_KEY_ALL_ACCESS) $(!REG_OPT_NONVOL) ParmBaseKey
		ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
			Debug-Output "FATAL Registry Error:  Error Creating Key '"$(NwParameters2)"'"
			goto fatalregistry
		endif
	endif
	CloseRegKey $(NWBaseKey)
	CloseRegKey $(ParmBaseKey)
	
	;	The key opened by CreateRegKey does not have the rights that it should
	;	That is why it has been closed and then reopened.  This appears to be a bug in
	;	CreateRegKey stuff.
	
	;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LSL\Performance
	OpenRegKey $(!REG_H_LOCAL) "" $(NwParameters2) $(!REG_KEY_ALL_ACCESS) ParmBaseKey
	ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
		Debug-Output "FATAL Registry Error:  Error Opening Key '"$(NwParameters2)"'"
		goto fatalregistry
	else
		Debug-Output "Writing '"$(NwParameters2)": "$(ValueName1)" = "$(ValueData1)"'"
		SetRegValue $(ParmBaseKey) {$(ValueName1),$(NoTitle),$(!REG_VT_SZ),$(ValueData1)}
		ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
			Debug-Output "ERROR Writing '"$(NwParameters2)": "$(ValueName1)" = "$(ValueData1)"'"
			Debug-Output "     'RegLastError' = "$(RegLastError)$(LF)
			goto fatalregistry
		endif
		Debug-Output "Writing '"$(NwParameters2)": "$(ValueName2)" = "$(ValueData2)"'"
		SetRegValue $(ParmBaseKey) {$(ValueName2),$(NoTitle),$(!REG_VT_SZ),$(ValueData2)}
		ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
			Debug-Output "ERROR Writing '"$(NwParameters2)": "$(ValueName2)" = "$(ValueData2)"'"
			Debug-Output "     'RegLastError' = "$(RegLastError)$(LF)
			goto fatalregistry
		endif
		Debug-Output "Writing '"$(NwParameters2)": "$(ValueName3)" = "$(ValueData3)"'"
		SetRegValue $(ParmBaseKey) {$(ValueName3),$(NoTitle),$(!REG_VT_SZ),$(ValueData3)}
		ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
			Debug-Output "ERROR Writing '"$(NwParameters2)": "$(ValueName3)" = "$(ValueData3)"'"
			Debug-Output "     'RegLastError' = "$(RegLastError)$(LF)
			goto fatalregistry
		endif
		Debug-Output "Writing '"$(NwParameters2)": "$(ValueName4)" = "$(ValueData4)"'"
		SetRegValue $(ParmBaseKey) {$(ValueName4),$(NoTitle),$(!REG_VT_SZ),$(ValueData4)}
		ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
			Debug-Output "ERROR Writing '"$(NwParameters2)": "$(ValueName4)" = "$(ValueData4)"'"
			Debug-Output "     'RegLastError' = "$(RegLastError)$(LF)
			goto fatalregistry
		endif
	endif
	CloseRegKey $(ParmBaseKey)

	;==================================================
	set ValueData1 = "NwPfCloseODIPerformanceData"
	set ValueData2 = "NwPfCollectODIPerformanceData"
	set ValueData3 = "NwPfOpenODIPerformanceData"
	
	;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\OdiLoad
	OpenRegKey $(!REG_H_LOCAL) "" $(NwProductBase3) $(!REG_KEY_ALL_ACCESS) NWBaseKey
	ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
		Debug-Output "FATAL Registry Error:  Error Opening Key '"$(NwProductBase3)"'"
		goto fatalregistry
	endif
	
	;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\OdiLoad\Performance
	OpenRegKey $(!REG_H_LOCAL) "" $(NwParameters3) $(!REG_KEY_ALL_ACCESS) ParmBaseKey
	ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
		Debug-Output "Creating Software Key '"$(NwParameters3)"'"
			;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\OdiLoad\Performance
		CreateRegKey $(NWBaseKey) {$(NwGroup),$(NoTitle),GenericClass} "" $(!REG_KEY_ALL_ACCESS) $(!REG_OPT_NONVOL) ParmBaseKey
		ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
			Debug-Output "FATAL Registry Error:  Error Creating Key '"$(NwParameters3)"'"
			goto fatalregistry
		endif
	endif
	CloseRegKey $(NWBaseKey)
	CloseRegKey $(ParmBaseKey)
	
	;	The key opened by CreateRegKey does not have the rights that it should
	;	That is why it has been closed and then reopened.  This appears to be a bug in
	;	CreateRegKey stuff.
	
	;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\OdiLoad\Performance
	OpenRegKey $(!REG_H_LOCAL) "" $(NwParameters3) $(!REG_KEY_ALL_ACCESS) ParmBaseKey
	ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
		Debug-Output "FATAL Registry Error:  Error Opening Key '"$(NwParameters3)"'"
		goto fatalregistry
	else
		Debug-Output "Writing '"$(NwParameters3)": "$(ValueName1)" = "$(ValueData1)"'"
		SetRegValue $(ParmBaseKey) {$(ValueName1),$(NoTitle),$(!REG_VT_SZ),$(ValueData1)}
		ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
			Debug-Output "ERROR Writing '"$(NwParameters3)": "$(ValueName1)" = "$(ValueData1)"'"
			Debug-Output "     'RegLastError' = "$(RegLastError)$(LF)
			goto fatalregistry
		endif
		Debug-Output "Writing '"$(NwParameters3)": "$(ValueName2)" = "$(ValueData2)"'"
		SetRegValue $(ParmBaseKey) {$(ValueName2),$(NoTitle),$(!REG_VT_SZ),$(ValueData2)}
		ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
			Debug-Output "ERROR Writing '"$(NwParameters3)": "$(ValueName2)" = "$(ValueData2)"'"
			Debug-Output "     'RegLastError' = "$(RegLastError)$(LF)
			goto fatalregistry
		endif
		Debug-Output "Writing '"$(NwParameters3)": "$(ValueName3)" = "$(ValueData3)"'"
		SetRegValue $(ParmBaseKey) {$(ValueName3),$(NoTitle),$(!REG_VT_SZ),$(ValueData3)}
		ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
			Debug-Output "ERROR Writing '"$(NwParameters3)": "$(ValueName3)" = "$(ValueData3)"'"
			Debug-Output "     'RegLastError' = "$(RegLastError)$(LF)
			goto fatalregistry
		endif
		Debug-Output "Writing '"$(NwParameters3)": "$(ValueName4)" = "$(ValueData4)"'"
		SetRegValue $(ParmBaseKey) {$(ValueName4),$(NoTitle),$(!REG_VT_SZ),$(ValueData4)}
		ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
			Debug-Output "ERROR Writing '"$(NwParameters3)": "$(ValueName4)" = "$(ValueData4)"'"
			Debug-Output "     'RegLastError' = "$(RegLastError)$(LF)
			goto fatalregistry
		endif
	endif
	CloseRegKey $(ParmBaseKey)


; Replaced the next bunch of lines with a function call to the
; Nwsetup.dll library

;	RunProgram exitCode "" "" lodctr.exe lslstats.ini
;	ifstr $(exitCode) == "ERROR"
;		Debug-Output "Error running program 'lodctr.exe lslstats.ini'"
;		goto fatalregistry
;	endif
;	RunProgram exitCode "" "" lodctr.exe rdrstats.ini
;	ifstr $(exitCode) == "ERROR"
;		Debug-Output "Error running program 'lodctr.exe rdrstats.ini'"
;		goto fatalregistry
;	endif
;	RunProgram exitCode "" "" lodctr.exe odistats.ini
;	ifstr $(exitCode) == "ERROR"
;		Debug-Output "Error running program 'lodctr.exe odistats.ini'"
;		goto fatalregistry
;	endif

	StartWait
	LoadLibrary "NetWare for Windows NT" nwsetup.dll NwLibHandle
	LibraryProcedure GUIResult $(NwLibHandle) NWLoadPerformanceCounters
	FreeLibrary $(NwLibHandle)
	EndWait


	;====================================================
	;		PERFORMANCE  -END
	;====================================================

	;
	;  Add ODINSUP hidden
	;

	Set OldInstallMode = $(!NTN_InstallMode)
	Set !NTN_InstallMode = install
	Shell "ODINSUP.inf" InstallOption $(!STF_LANGUAGE) "ODINSUP" "" NO NO NO
	Set !NTN_InstallMode = $(OldInstallMode)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
		goto ShellCodeError
	Endif



;	set ProductHardwareName     = "ODINSUP"
;	set Manufacturer    = "Novell"
;	set ProductKeyName  = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"$(ProductHardwareName)"\CurrentVersion"
;
;	;  add ODINSUP at board two or later
;	Shell "UTILITY.INF", AddHardwareComponent, $(ProductHardwareName),$(STF_CONTEXTINFNAME),$(ProductKeyName),"","","2"
;   ifint $($R4) != -1
;		Set OEM_ABANDON_OPTIONS = >($(OEM_ABANDON_OPTIONS), $(!NTN_SoftwareBase)"\Microsoft\Windows NT\CurrentVersion\NetworkCards\"$($R4))
;   endif
;   ifint $($ShellCode) != $(!SHELL_CODE_OK)
;		Debug-Output "ODINSUP: AddHardwareComponent Shell error "$($ShellCode)
;		goto ShellCodeError
;   endif
;   set RegistryErrorIndex = $($R0)
;   Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
;		EndWait
;		Debug-Output "ODINSUP: AddHardwareComponent Registry error "$(RegistryErrorIndex)
;		CloseRegKey $($R1)
;		CloseRegKey $($R2)
;		CloseRegKey $($R3)
;		goto fatalregistry
;   endif
;   set KeyParameters = $($R3)
;   set KeyAdapterRules = $($R2)
;   set AdapterNumber = $($R4)
;   set NewValueList = {{Manufacturer,$(NoTitle),$(!REG_VT_SZ),$(Manufacturer)},+
;	       {Title,$(NoTitle),$(!REG_VT_SZ),"["$($R4)"] "$(ProductHardware$(Option)Title)},+
;	       {Description,$(NoTitle),$(!REG_VT_SZ),$(ProductHardware$(Option)Description)},+
;	       {ProductName,$(NoTitle),$(!REG_VT_SZ),$(ProductHardwareName)},+
;	       {ServiceName,$(NoTitle),$(!REG_VT_SZ),$($R5)},+
;	       {InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)}}
;   Shell "UTILITY.INF", AddValueList, $($R1), $(NewValueList)
;   ifint $($ShellCode) != $(!SHELL_CODE_OK)
;		Debug-Output "ODINSUP: AddValueList ShellCode error "$($ShellCode)
;		goto ShellCodeError
;   endif
;   CloseRegKey $($R1)
;   set TempProdName = """"$(ProductHardwareName)$(AdapterNumber)""""
;   set TempBindForm = $(TempProdName)$(NetRuleHardwareBindForm)
;   set NewValueList = {{type,$(NoTitle),$(!REG_VT_SZ),$(NetRuleHardwareType)},+
;		{bindform,$(NoTitle),$(!REG_VT_SZ),$(TempBindForm)}, +
;		{class,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleHardwareClass)}, +
;		{InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)}, +
;		{Infname ,$(NoTitle),$(!REG_VT_SZ),$(STF_CONTEXTINFNAME)}}
;   Shell  "UTILITY.INF", AddValueList, $(KeyAdapterRules), $(NewValueList)
;   ifint $($ShellCode) != $(!SHELL_CODE_OK)
;		Debug-Output "ODINSUP: AddValueList ShellCode error "$($ShellCode)
;		goto ShellCodeError
;   endif
;   set RegistryErrorIndex = $($R0)
;   Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
;		EndWait
;		Debug-Output "ODINSUP: AddValueList Registry error "$(RegistryErrorIndex)
;		CloseRegKey $(KeyParameters)
;		CloseRegKey $(KeyAdapterRules)
;		goto fatalregistry
;   endif
;
;   CloseRegKey $(KeyAdapterRules)
;
;


	install "CreateNetWareGroup"

;
;  Try to detect the ndis driver that the lan man services are using
;
	Shell "NWSUBS.INF" NwDetectNdisAdapter $(SrcDir)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output "OEMNPRNW.INF: NwDetectNdisAdapter ShellCode error "$($ShellCOde)
		goto ShellCodeError
	endif

	goto successful

;-----------------------------------------------
; Configure Browser section
;-----------------------------------------------
configurenetware = +
	Debug-Output "OEMNPRNW.INF: Configure NetWare "$(!NTN_RegBase)
	set CommonStatus = STATUS_USERCANCEL
	LoadLibrary "NetWare for Windows NT" nwsetup.dll NwLibHandle
	SetHelpFile $(!STF_WINDOWSSYSPATH)"\nls\english\nwnthelp.hlp" $(!MinimumID) $(!MaximumID)

	Ifstr(i) $(!NTN_RegBase) == $(ProductNWFSKeySoftware)
	; Configure the NetWare Workstation.
		Debug-Output "OEMNPRNW.INF: Configure NetWare Workstation"
			StartWait
			set HelpContext = $(IDH_NETWAREWRKSTATIONPARMS)
			LibraryProcedure LibResult $(NwLibHandle) NetWareWorkstationDialog

			Debug-Output "LibResult = "$(LibResult)

			ifstr(i) $(LibResult) == "CONTINUE"
				Debug-Output "OK hit"

				Set DoReboot = "YES"
				Set CommonStatus = STATUS_REBOOT
			endif

	else-ifstr(i) $(!NTN_RegBase) == $(ProductIPXSPXKeySoftware)
	; Configure Ipx/Spx.

		Shell "" ConfigureIpxSpx $(NwLibHandle) YES

		set CommonStatus = $($R0)
		set DoReboot = $($R1)

	else-ifstr(i) $(!NTN_RegBase) == $(ProductODILOADKeySoftware)
		; Configure OdiLoad.
		Debug-Output "OEMNPRNW.INF: Configure OdiLoad"

	else-ifstr(i) $(!NTN_RegBase) == $(ProductRESMGRKeySoftware)
		; Configure Resmgr.
		Debug-Output "OEMNPRNW.INF: Configure Resmgr"
		Set KeyName = "SYSTEM\CurrentControlSet\Services\"$(Product$(Option)Name)"\Parameters"
		OpenRegKey $(!REG_H_LOCAL) "" $(KeyName) $(MAXIMUM_ALLOWED) KeyParameters
		Ifstr(i) $(KeyParameters) != ""
			set KeyValueList = ""
			GetRegValue $(KeyParameters) "Communication Buffers" KeyValueList
			set CommunicationBuffers = *($(KeyValueList), 4)

			read-syms "ResMgrDlg"$(!STF_LANGUAGE)
			ui start "ResMgrDLG" $(NwLibHandle)
			StartWait

			ifstr(i) $(DLGEVENT) == "CONTINUE"
				Debug-Output "OK hit"
				set CommunicationBuffers = *($(EditTextOut), 1)
				ifint $(CommunicationBuffers) < 1
					set CommunicationBuffers = 1
				else-ifint $(CommunicationBuffers) > 128
					set CommunicationBuffers = 128
				endif
				set KeyValueList = {"Communication Buffers",$(NoTitle),$(!REG_VT_DWORD),$(CommunicationBuffers)}
				SetRegValue $(KeyParameters) $(KeyValueList)

				FlushRegKey $(KeyParameters)
				Set DoReboot = "YES"
				Set CommonStatus = STATUS_REBOOT
			endif

			CloseRegKey $(KeyParameters)
			ui pop 1
			EndWait
		endif
	Endif

	FreeLibrary $(NwLibHandle)
	goto successful

;-----------------------------------------------
; Binding section
;-----------------------------------------------
bindnetware =+
	Debug-Output "OEMNPRNW.INF: Bind NetWare"
	LoadLibrary "NetWare for Windows NT" nwsetup.dll NwLibHandle
	SetHelpFile $(!STF_WINDOWSSYSPATH)"\nls\english\nwnthelp.hlp" $(!MinimumID) $(!MaximumID)

	;
	;  Check if NWIP installed
	;
	OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\NWIP" $(MAXIMUM_ALLOWED) KeyProduct
	Ifstr $(KeyProduct) != $(KeyNull)
		GetRegValue $(KeyProduct) "DeleteFlag" DeleteFlagList
		Set DeleteFlag = *($(DeleteFlagList), 4)
		Debug-Output "DeleteFlag = "$(DeleteFlag)
		Ifint $(DeleteFlag) != 1
			Set NWIPInstalled = YES
			Debug-Output "OEMNPRNW.INF: bindnetware, NWIP is installed"
		Else
			Set NWIPInstalled = ""
			Debug-Output "OEMNPRNW.INF: bindnetware, NWIP NOT installed"
		Endif
		CloseRegKey $(KeyProduct)
	Endif



	Shell "NWSUBS.INF" GetTotalAdapterList

	Set OdiProductNameList	= $($R0)
	Set OdiTitleList			= $($R1)
	Set OdiCardList			= $($R2)
	Set NumberOdiAdapters	= $($R3)
	Set NdisProductNameList	= $($R4)
	Set NdisTitleList			= $($R5)
	Set NdisCardList			= $($R6)
	Set NumberNdisAdapters	= $($R7)
	Set ODINSUPCardNumber	= $($R8)
									


	Shell "" ConfigureIpxSpx $(NwLibHandle) NO


	Set GroupOrderToFollow = "file system"

	;
	; Is there a ODI driver installed?
	;
	ifint $(NumberOdiAdapters) > 0
		Debug-Output "Found Odi Adapters"
		;
		; Turn on OdiLoad
		;
		OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\OdiLoad" $(MAXIMUM_ALLOWED) KeyProduct
		Ifstr $(KeyProduct) != $(KeyNull)
			Set KeyValueList = {"Start",$(NoTitle),$(!REG_VT_DWORD),2}
			SetRegValue $(KeyProduct) $(KeyValueList)
			CloseRegKey $(KeyProduct)
		Endif

		;
		; Turn on ODINSUP
		;
		OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\Odinsup" $(MAXIMUM_ALLOWED) KeyProduct
		Ifstr $(KeyProduct) != $(KeyNull)
			Set KeyValueList = {"Start",$(NoTitle),$(!REG_VT_DWORD),2}
			SetRegValue $(KeyProduct) $(KeyValueList)
			CloseRegKey $(KeyProduct)
		Endif


		;
		; Set the card for ODINSUP to bind to
		;
		read-syms OdiNSupVars
		read-syms OdiVars

		OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\ODINSUP"$(ODINSUPCardNumber)"\Parameters" $(MAXIMUM_ALLOWED) KeyOdiNSupParameters


		Ifstr(i) $(KeyOdiNSupParameters) != ""
	
			Ifint $(NumberOdiAdapters) > 1
				;
				; More than one ODI adapter is installed so allow
				; the user to select which one to bind to.
				;
		
				Ifstr(i) $(OdiCurBindCardName) != ""
					Debug-Output "NWSUBS.INF: OdiCurBindCardName = "$(OdiCurBindCardName)
					Set DefaultOdiTitle = *($(OdiTitleList), ~($(OdiCardList), $(OdiCurBindCardName)))
				Endif
		
				Ifstr(i) $(DefaultOdiTitle) == ""
					Set DefaultOdiTitle = *($(OdiTitleList), 1)
				Endif
		
				Debug-Output "NWSUBS.INF: DefaultOdiTitle = "$(DefaultOdiTitle)
	
				read-syms OdinsupDlg$(!STF_LANGUAGE)
				ui start "ODINSUP" $(NwLibHandle)
				ui pop 1
		
				ifstr(i) $(DLGEVENT) == "BACK"
					set AdapterSelected = ""
				else
					Set AdapterSelected = *($(DefaultOdiTitle), 1)
				endif
	
				Debug-Output "NWSUBS.INF: ODINSUP AdapterSelected = "$(AdapterSelected)
	
				Ifstr(i) $(AdapterSelected) == ""
					Debug-Output "NWSUBS.INF: Cancel Selected"
					Set CardToBindTo = *($(OdiProductNameList), 1)
					Set OdiCardInstance = 1
				Else
					Set CardToBindTo = *($(OdiProductNameList), ~($(OdiTitleList), $(AdapterSelected)))
					Debug-Output "CardToBindTo = "$(CardToBindTo)

					Set NtAdapterNumber = *($(OdiCardList), ~($(OdiTitleList), $(AdapterSelected)))
					Debug-Output "NtAdapterNumber = "$(NtAdapterNumber)
		
					Set NtAdapterKeyName = $(NetworkCardsKeyName)"\"$(NtAdapterNumber)
					OpenRegKey $(!REG_H_LOCAL) "" $(NtAdapterKeyName) $(MAXIMUM_ALLOWED) KeyNtAdapter
					Ifstr(i) $(KeyNtAdapter) != ""
		
						GetRegValue $(KeyNtAdapter),"ServiceName", ServiceNameList
						Set ServiceName = *($(ServiceNameList), 4)
						CloseRegKey $(KeyNtAdapter)
		
		
						; Open the lan man card's service\Parameters.
						;
						OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\"$(ServiceName)"\Parameters" $(MAXIMUM_ALLOWED) KeyService
						ifstr(i) $(KeyService) == ""
		
							Debug-Output "NWSUBS.INF: NwSetIpxCard, Can't open "$(ServiceName)
		
						Else
							; Get the OdiLoad link.
							;
							GetRegValue $(KeyService) $(OdiLinkName) CardInstanceList
							Set CardInstanceName = *($(CardInstanceList), 4)
							CloseRegKey $(KeyService)
			
							OpenRegKey $(!REG_H_LOCAL) "" $(OdiModuleName)"\"$(CardInstanceName) $(MAXIMUM_ALLOWED) KeyOdiCard
							Ifstr(i) $(KeyOdiCard) != ""
								GetRegValue $(KeyOdiCard) "BoardInstance" BoardInstanceList
								Set OdiCardInstance = *($(BoardInstanceList), 4)
								Debug-Output "2: Selected OdiCardInstance = "$(OdiCardInstance)
								CloseRegKey $(KeyOdiCard)
							Endif
						Endif
					Else
						Debug-Output "Can't open "$(NtAdapterKeyName)
					Endif
				Endif
			Else
				;
				; only one ODI adapter so use it.
				;
				Set CardToBindTo = *($(OdiProductNameList), 1)
				Debug-Output "NWSUBS.INF: ODISUP bound to "$(CardToBindTo)

			Endif
	
	
			SetRegValue $(KeyOdiNSupParameters) {$(OdiNSupCardName),$(NoTitle),$(!REG_VT_SZ),$(CardToBindTo)}
			Ifstr(i) $(OdiCardInstance) == ""
				Debug-Output "NWSUBS.INF: NwSetIpxCard, OdiCardInstance set to default."
				Set OdiCardInstance = "1"
			Endif
			SetRegValue $(KeyOdiNSupParameters) {$(OdiNSupCardInstance),$(NoTitle),$(!REG_VT_DWORD),$(OdiCardInstance)}
	
			CloseRegKey $(KeyOdiNSupParameters)
		Endif







	Else
		;
		; Turn off OdiLoad
		;
		OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\OdiLoad" $(MAXIMUM_ALLOWED) KeyProduct
		Ifstr $(KeyProduct) != $(KeyNull)
			Set KeyValueList = {"Start",$(NoTitle),$(!REG_VT_DWORD),4}
			SetRegValue $(KeyProduct) $(KeyValueList)
			CloseRegKey $(KeyProduct)
		Endif

		;
		; Turn off ODINSUP
		;
		OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\Odinsup" $(MAXIMUM_ALLOWED) KeyProduct
		Ifstr $(KeyProduct) != $(KeyNull)
			Set KeyValueList = {"Start",$(NoTitle),$(!REG_VT_DWORD),4}
			SetRegValue $(KeyProduct) $(KeyValueList)
			CloseRegKey $(KeyProduct)
		Endif

	
	Endif

	Ifint $(NumberNdisAdapters) > 0
		;
		; Ndis drivers installed
		;	
		Set GroupOrderToFollow = "NDIS"

	Endif


	;
	; Is NWIP installed
	;
	Ifstr $(NWIPInstalled) == YES
		Set GroupOrderToFollow = "file system"
		;
		; Turn off VMLID
		;
		OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\OdiVMLID" $(MAXIMUM_ALLOWED) KeyProduct
		Ifstr $(KeyProduct) != $(KeyNull)
			Set KeyValueList = {"Start",$(NoTitle),$(!REG_VT_DWORD),4}
			SetRegValue $(KeyProduct) $(KeyValueList)
			CloseRegKey $(KeyProduct)
		Endif
		;
		; Hide Ipx
		;

		set IpxHidden = 1

		;
		; Check to see if DHCP is installed
		;
		Debug-Output "OEMNPRNW.INF: Check to see if DHCP is installed"

		set DependOnList = {"Tcpip"}

		OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\DHCP" $(MAXIMUM_ALLOWED) KeyDHCP
		Ifstr $(KeyDHCP) != $(KeyNull)
			;
			; Check to see if the service is set to start
			;
			GetRegValue $(KeyDHCP) "Start" StartList
			Ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
				Set StartValue = *($(StartList), 4)
				Ifint $(StartValue) < 4
					;
					; Make NWIP depend on the service DHCP
					;
					Debug-Output "OEMNPRNW.INF: Make NWIP depend on DHCP service"
					set DependOnList = {"DHCP"}
				Endif
			Endif

			CloseRegKey $(KeyDHCP)
		Endif

		OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\NWIP" $(MAXIMUM_ALLOWED) KeyNWIP
		Ifstr $(KeyNWIP) != $(KeyNull)
			SetRegValue $(KeyNWIP) {"DependOnService",$(NoTitle),$(!REG_VT_MULTI_SZ),$(DependOnList)}
			CloseRegKey $(KeyNWIP)
		Endif

	Else
		;
		; Make sure Ipx is NOT hidden
		;
		set IpxHidden = 0

	Endif

	OpenRegKey $(!REG_H_LOCAL) "" $(ProductIPXSPXKeySoftware) $(MAXIMUM_ALLOWED) KeyIpxSoftware
	Ifstr(i) $(KeyIpxSoftware) == ""
		Debug-Output "OEMNPRNW.INF: Error opening "$(ProductIPXSPXKeyName)
	Else
		SetRegValue $(KeyIpxSoftware) {"Hidden",$(NoTitle),$(!REG_VT_DWORD),$(IpxHidden)}
		CloseRegKey $(KeyIpxSoftware)
	Endif


	;
	; Set the group Order
	;
	Shell "" InstallEx-ServiceGroupOrder $(GroupOrderToFollow)
	Ifstr(i) $($R0) != NO_ERROR
		set CommonStatus = STATUS_NO_EFFECT	
	Endif

	FreeLibrary $(NwLibHandle)

	goto end

;-----------------------------------------------
; Removenetware section
;-----------------------------------------------
removenetware = +

	StartWait

	LoadLibrary "NetWare for Windows NT" nwsetup.dll NwLibHandle
	LibraryProcedure GUIResult $(NwLibHandle) NWCleanUpNetWare
	FreeLibrary $(NwLibHandle)

	StartWait

	goto end


;-----------------------------------------------
; Upgrade Software section
;-----------------------------------------------

upgradenetware = +

	Set CanUpgrade = 0

	OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_SoftwareBase)"\Novell" $(MAXIMUM_ALLOWED) SoftwareNovell
	Ifstr(i) $(SoftwareNovell) != ""
		GetRegValue $(SoftwareNovell) "CurrentVersion" CurrentVersion
		Ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
			Set ProductVersion = *($(CurrentVersion), 4)
			ifint $(ProductVersion) > 100
				set CanUpgrade = 1
			Endif
		Endif
		CloseRegKey $(SoftwareNovell)
	Endif

	ifint $(CanUpgrade) == 0
		Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "FATAL", +
			"The Update button is not supported with previous beta versions.  "+
			"Please remove the NetWare Services for Windows NT and "+
			"then reboot before reinstalling it."

		ifint $($ShellCode) != $(!SHELL_CODE_OK)
			goto ShellCodeError
		endif
		goto end
	endif

	LibraryProcedure STATUS, $(!LIBHANDLE), AppendBackSlash $(SrcDir)
	
	ifstr(i) $(STATUS) != "ERROR"
		set SrcDir = $(STATUS)
	Endif

	OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_SoftwareBase)"\Novell\"$(ProductNWFSName)"\CurrentVersion\NetRules" $(MAXIMUM_ALLOWED) SoftwareNovell
	Ifstr(i) $(SoftwareNovell) != ""
		GetRegValue $(SoftwareNovell) "InfName" CurrentName
		Ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
			set !UG_Filename = *($(CurrentName), 4)
		Endif
		CloseRegKey $(SoftwareNovell)
	Endif

	; Novell.cpl changed to Nwcpl.cpl so delete old name.
   	LibraryProcedure Status1, $(!LIBHANDLE), DelFile, $(!STF_WINDOWSSYSPATH)"\novell.cpl"
   	LibraryProcedure Status1, $(!LIBHANDLE), DelFile, $(!STF_WINDOWSSYSPATH)"\nls\english\novellr.dll"

	Install "Install-Update"
	ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
		goto fatal
	endif

	LoadLibrary "NetWare for Windows NT" nwsetup.dll NwLibHandle
	LibraryProcedure GUIResult $(NwLibHandle) RemoveFilefromAutoexec "%SystemRoot%\system32\autoexec.nt" "lh %SystemRoot%\system32\vipx.exe"
	LibraryProcedure GUIResult $(NwLibHandle) NWUnLoadPerformanceCounters
	LibraryProcedure GUIResult $(NwLibHandle) NWLoadPerformanceCounters
	FreeLibrary $(NwLibHandle)

	set DoReboot = "YES"
;
;  Escape hatches
;

successful = +
	goto end

;
; warning display
;
warning = +
	Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "WARNING", $(Error)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
		goto ShellCodeError
	endif
	ifstr(i) $($R1) == "OK"
		goto $(to)
	else-ifstr(i) $($R1) == "CANCEL"
		goto $(from)
	else
;		Debug-Msg "Error Error Bad DLGEVENT"
		goto end
	endif


;
; non fatal error display
;
nonfatalinfo = +
	Set CommonStatus = STATUS_USERCANCEL
	Set Severity = STATUS
	goto nonfatalmsg
nonfatal = +
	Set Severity = NONFATAL
	goto nonfatalmsg
nonfatalmsg = +
	ifstr(i) $(Error) == ""
		Set Severity = NONFATAL
		Shell $(UtilityInf) RegistryErrorString "SETUP_FAIL"
		ifint $($ShellCode) != $(!SHELL_CODE_OK)
			goto ShellCodeError
		endif
		set Error = $($R0)
	endif
	Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), $(Severity), $(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)
		goto ShellCodeError
	endif
	set Error = $($R0)
	goto fatal
;
; fatal error display
;
fatal = +
	ifstr(i) $(Error) == ""
		Shell $(UtilityInf) RegistryErrorString "SETUP_FAIL"
		ifint $($ShellCode) != $(!SHELL_CODE_OK)
			goto ShellCodeError
		endif
		set Error = $($R0)
	endif
	Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "FATAL", $(Error)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
		goto ShellCodeError
	endif

	goto setfailed

;
;  Shelling error
;
ShellCodeError = +
	set DlgType	= "MessageBox"
	set STF_MB_TITLE = "Error: "$(FunctionTitle)
	set STF_MB_TEXT  = "Shell Code Error "$(TWM_ShellErrorTitle)
	set STF_MB_TYPE  = 1
	set STF_MB_ICON  = 3
	set STF_MB_DEF	= 1
	ui start "Error Message"
	goto setfailed

setfailed = +
	set CommonStatus = STATUS_FAILED
	;
	; If OEM_ABANDON_ON, we need to clean up the registry
	;
	ifstr(i) $(OEM_ABANDON_ON) == TRUE
		set OEM_ABANDON_ON = FALSE
		goto removenetware
	endif
	goto end

end = +
	ifstr(i) $(DoReboot) == "YES"
		shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "STATUS" +
		"The changes you have made will not take effect until the computer is restarted."
	endif

	EndWait
	goto term

term = +

	Return $(CommonStatus)

;
;  Subroutines
;


;*************************************************************************
;
;	SECTION:	ConfigureIpxSpx
;
;	PURPOSE:	configure Ipx / Spx
;
;	ARGUMENTS:	$0	handle the NetWare setup library
;              $1 DoConfig (always display dialog ?)
;
;	RETURNS:	$R0	CommonStatus
;           $R1   DoReboot
;
;  REFERENCES:
;
;	MODIFIES:	Registry bindings and parameters for ipx/spx
;
;
;*************************************************************************

[ConfigureIpxSpx]
	set NwLibHandle = $($0)
	set DoConfig = $($1)

	Debug-Output "OEMNPRNW.INF: Configure IpxSpx"

	read-syms GeneralConstants
	read-syms FileConstants
	read-syms IpxSpxConstants

	read-syms DialogConstants$(!STF_LANGUAGE)


	set AutoDetect = "AUTO DETECT"
	set ETHERNETFrameList = {$(AutoDetect),"ETHERNET_802.2","ETHERNET_802.3","ETHERNET_II","ETHERNET_SNAP"}
	set TOKEN-RINGFrameList = {$(AutoDetect),"TOKEN-RING","TOKEN-RING_SNAP"}
	set FDDIFrameList = {$(AutoDetect),"FDDI_802.2","FDDI_SNAP"}
	set NWIPFrameList = {"ETHERNET_II"}
	set UNKNOWNFrameList = {$(AutoDetect)}

	Shell $(NwSubsInf) GetIpxCardList
	set NetworkCardList = $($R0)
	set MediaTypeList = $($R1)
	set DriverTypeList = $($R2)
	set NumberOfNetworkCards = $($R3)
	set ProductNameList = $($R4)
	set ServiceNameList = $($R5)
	set NWIPInstalled   = $($R6)
	set CardNumberList  = $($R7)

	Debug-Output "NetworkCardList      = "$(NetworkCardList)
	Debug-Output "MediaTypeList        = "$(MediaTypeList)
	Debug-Output "DriverTypeList       = "$(DriverTypeList)
	Debug-Output "NumberOfNetworkCards = "$(NumberOfNetworkCards)
	Debug-Output "ProductNameList      = "$(ProductNameList)
	Debug-Output "ServiceNameList      = "$(ServiceNameList)
	Debug-Output "NWIPInstalled        = "$(NWIPInstalled)
	Debug-Output "CardNumberList       = "$(CardNumberList)

	set InstanceNumberList = {}
	set CardDriverInstanceList = {}

	ForListDo $(ProductNameList)
		set ProductName = $($)
		set DriverType = *($(DriverTypeList), $(#))
		set CardDriverIndex = $(ProductName)$(DriverType)
		set-add $(CardDriverIndex) = $($(CardDriverIndex)), 1
		set InstanceNumberList = >($(InstanceNumberList), $($(CardDriverIndex)))
		set CardDriverInstance = $(ProductName)$(DriverType)$($(CardDriverIndex))
		set CardDriverInstanceList = >($(CardDriverInstanceList), $(CardDriverInstance))
	EndForListDo

	Debug-Output "InstanceNumberList = "$(InstanceNumberList)
	Debug-Output "CardDriverInstanceList = "$(CardDriverInstanceList)

	ifint $(NumberOfNetworkCards) < 1
		Debug-Output "OEMNPRNW.INF: No network cards installed"
		Set DlgType = "MessageBox"
		Set STF_MB_TITLE = "NetWare IPX/SPX Service Setup"
		Set STF_MB_TEXT  = "The NetWare IPX/SPX service can not be configured because no network adapters are installed."
		Set STF_MB_TYPE  = 1
		Set STF_MB_ICON  = 2
		Set STF_MB_DEF	= 1
		ui start "Error Message"
		set CommonStatus = STATUS_USERCANCEL

		goto ConfigureIpxSpxEXIT
	endif

	;
	; Get the card and frame Ipx is currently bound to
	;
	set IpxParametersName = $(!NTN_ServiceBase)"\"$(ProductIPXSPXName)"\Parameters"
	OpenRegKey $(!REG_H_LOCAL) "" $(IpxParametersName) $(MAXIMUM_ALLOWED) KeyIpxParameters
	ifstr(i) $(KeyIpxParameters) != ""
		GetRegValue $(KeyIpxParameters) $(CardInstance) ValueList
		set IpxCardInstance = *($(ValueList), 4)
		Debug-Output "OEMNPRNW.INF: VMLID, IpxCardInstance = "$(IpxCardInstance)

		GetRegValue $(KeyIpxParameters) $(CardTypeName) ValueList
		set IpxCard = *($(ValueList), 4)
		ifstr(i) $(IpxCard) == "VMLID"
			;
			; Get the card name from the VMLID service
			;
			set VMLIDServiceName = $(!NTN_ServiceBase)"\"$(ProductVMLIDName)
			OpenRegKey $(!REG_H_LOCAL) "" $(VMLIDServiceName) $(MAXIMUM_ALLOWED) KeyVMLIDService
			ifstr(i) $(KeyVMLIDService) != ""
				GetRegValue $(KeyVMLIDService) "Bind" ValueList
				set BindList = *($(ValueList), 4)
				Split-String $(BindList) "\" BindListParts
				Debug-Output "OEMNPRNW.INF: VMLID BindListParts = "$(BindListParts)
				set NdisCardService = *($(BindListParts), 4)
				Debug-Output "OEMNPRNW.INF: VMLID, NdisCardService = "$(NdisCardService)
				set CardIndex = ~($(ServiceNameList), $(NdisCardService))
				set IpxCard = *($(ProductNameList), $(CardIndex))
				Debug-Output "OEMNPRNW.INF: VMLID, IpxCard = "$(IpxCard)
				set CurrentIpxNetworkCard = *($(NetworkCardList), $(CardIndex))
				Debug-Output "OEMNPRNW.INF: VMLID, CurrentIpxNetworkCard = "$(CurrentIpxNetworkCard)
				set DriverType = "NDIS"
				set CardDriverInstance = *($(CardDriverInstanceList), $(CardIndex))
				Debug-Output "OEMNPRNW.INF: VMLID, CardDriverInstance = "$(CardDriverInstance)
				set IpxCardNumber = *($(CardNumberList), $(CardIndex))
				Debug-Output "OEMNPRNW.INF: VMLID, IpxCardNumber = "$(IpxCardNumber)

				CloseRegKey $(KeyVMLIDService)
			endif

		else
			set DriverType = "ODI"
			set CardDriverInstance = $(IpxCard)$(DriverType)$(IpxCardInstance)
			Debug-Output "OEMNPRNW.INF: ODI, CardDriverInstance = "$(CardDriverInstance)
			set CardIndex = ~($(CardDriverInstanceList), $(CardDriverInstance))
			set CurrentIpxNetworkCard = *($(NetworkCardList), $(CardIndex))
			Debug-Output "OEMNPRNW.INF: ODI, CurrentIpxNetworkCard = "$(CurrentIpxNetworkCard)

			set IpxCardNumber = *($(CardNumberList), $(CardIndex))
			Debug-Output "OEMNPRNW.INF: ODI, IpxCardNumber = "$(IpxCardNumber)
		endif
		GetRegValue $(KeyIpxParameters) $(FrameTypeName) ValueList
		set IpxFrameType = *($(ValueList), 4)
		CloseRegKey $(KeyIpxParameters)
	else
		Debug-Output "Can't open IpxSpx parameters key "$(IpxServiceName)
	endif

	Debug-Output "OEMNPRNW.INF: ConfigureIpxSpx IpxCard      = "$(IpxCard)
	Debug-Output "OEMNPRNW.INF: ConfigureIpxSpx IpxFrameType = "$(IpxFrameType)
	Debug-Output "OEMNPRNW.INF: ConfigureIpxSpx IpxCardNumber = "$(IpxCardNumber)

	set ReConfigureIpx = ""
	set WriteParameters = ""
	set VMLIDCard = ""


	ifstr(i) $(NWIPInstalled) == YES
		set OldIpxCard = $(IpxCard)
		set IpxCard = "NWIP"
		set IpxFrameType = *($(NWIPFrameList), 1)
		set DriverType = "ODI"
		ifstr(i) $(DoConfig) != YES
			goto dowriteparameters
		else-ifstr(i) $(OldIpxCard) != $(IpxCard)
			set ReConfigureIpx = YES
		endif
		set CurrentIpxNetworkCard = *($(NetworkCardList), 1)
	
	endif


;	Debug-Output "Find "$(IpxCard)" in "$(ProductNameList)
;
;	ForListDo $(ProductNameList)
;		set ProductName = $($)
;		ifstr(i) $(ProductName) == $(IpxCard)
;			;
;			; The product names are the same now check the driver type
;			;
;			set ProductDriverType = *($(DriverTypeList), $(#))
;
;			ifstr(i) $(ProductDriverType) == $(DriverType)
;				set CurrentIpxNetworkCard = *($(NetworkCardList), $(#))
;			endif
;		endif
;	EndForListDo


	set CurrentIpxFrameType = $(IpxFrameType)

	Debug-Output "OEMNPRNW.INF: CurrentIpxNetworkCard = "$(CurrentIpxNetworkCard)

;	Ifcontains(i) $(IpxCard) in $(ProductNameList)

	Ifcontains(i) $(CardDriverInstance) in $(CardDriverInstanceList)
		;
		; The card Ipx is currently bound to is okay exit if not doing configure.
		;
		Ifstr(i) $(DoConfig) != "YES"
			goto ConfigureIpxSpxEXIT
		Endif
	Else-Ifstr(i) $(NWIPInstalled) != YES
		;
		; The card Ipx is bound to is invalid
		;
		set ReConfigureIpx = YES
		set CurrentIpxFrameType = $(AutoDetect)
	Endif


	ifstr(i) $(CurrentIpxNetworkCard) == ""
		set CurrentIpxNetworkCard = *($(NetworkCardList), 1)
	endif

	ifstr(i) $(CurrentIpxFrameType) == ""
		set CurrentIpxFrameType = $(AutoDetect)
	endif

	set LastIpxNetworkCard = $(CurrentIpxNetworkCard)

dothedialog = +
	set CurrentMediaType = *($(MediaTypeList), ~($(NetworkCardList), $(CurrentIpxNetworkCard)))
	set FrameTypeList = $($(CurrentMediaType)FrameList)
	ifstr(i) $(CurrentIpxNetworkCard) != $(LastIpxNetworkCard)
		set CurrentIpxFrameType = *($(FrameTypeList), 1)
	endif
	set LastIpxNetworkCard = $(CurrentIpxNetworkCard)

	StartWait
	read-syms "IpxCardFrameDlg"$(!STF_LANGUAGE)


	set NotifyFields = {"YES","NO"}
	set ComboListItemsIn = {NetworkCardList,FrameTypeList}
	set ComboListItemsOut = {CurrentIpxNetworkCard,CurrentIpxFrameType}

	ui start "LANDriverParms" $(NwLibHandle)

	ifstr(i) $(DLGEVENT) == "NOTIFY"

		Debug-Output "NOTIFY"
		set ReInit = YES
		goto dothedialog
	else-ifstr(i) $(DLGEVENT) == "CONTINUE"
		Debug-Output "Continue hit"
		set WriteParameters = YES
		set ListIndex = ~($(NetworkCardList), $(CurrentIpxNetworkCard))
		set IpxCard = *($(ProductNameList), $(ListIndex))
		set IpxCardNumber = *($(CardNumberList), $(ListIndex))
		set DriverType = *($(DriverTypeList), $(ListIndex))
		ifstr(i) $(DriverType) == "NDIS"
			set VMLIDCard = $(IpxCard)
			set VMLIDService = *($(ServiceNameList), $(ListIndex))
			set IpxCard = "VMLID"
			set IpxCardInstance = 1
		else
			set IpxCardInstance = *($(InstanceNumberList), $(ListIndex))
		endif
		set IpxFrameType = $(CurrentIpxFrameType)
		set CommonStatus = STATUS_SUCCESSFUL
	else-ifstr(i) $(DLGEVENT) == "BACK"
		Debug-Output "Action: CANCEL. Bye."
		ifstr(i) $(ReConfigureIpx) == YES
			Debug-Output "OEMNPRNW.INF: Ipx needs a new home"
			set WriteParameters = YES
			set ListIndex = 1
			set IpxCard = *($(ProductNameList), $(ListIndex))
			set IpxCardNumber = *($(CardNumberList), $(ListIndex))
			set DriverType = *($(DriverTypeList), $(ListIndex))
			ifstr(i) $(DriverType) == "NDIS"
				set VMLIDCard = $(IpxCard)
				set VMLIDService = *($(ServiceNameList), $(ListIndex))
				set IpxCard = "VMLID"
				set IpxCardInstance = 1
			else
				set IpxCardInstance = *($(InstanceNumberList), $(ListIndex))
			endif
		endif
		set CommonStatus = STATUS_USERCANCEL
	else-ifstr(i) $(DLGEVENT) == "EXIT"
		;
		; user selected the advanced button
		;


		StartWait
		set HelpContext = $(IDH_IPXSPXPARMS)
		LibraryProcedure LibResult $(NwLibHandle) IPXSPXDialog

		Debug-Output "LibResult = "$(LibResult)

		ifstr(i) $(LibResult) == "CONTINUE"
			Debug-Output "OK hit"

			Set DoReboot = "YES"
			Set CommonStatus = STATUS_REBOOT
		endif

		goto dothedialog

	else
		Debug-Output "DLGEVENT = "$(DLGEVENT)
	endif

	ui pop 1

dowriteparameters = +

	ifstr(i) $(WriteParameters) == YES
		set IpxParametersName = $(!NTN_ServiceBase)"\"$(ProductIPXSPXName)"\Parameters"
		OpenRegKey $(!REG_H_LOCAL) "" $(IpxParametersName) $(MAXIMUM_ALLOWED) KeyIpxParameters
		ifstr(i) $(KeyIpxParameters) != ""
			SetRegValue $(KeyIpxParameters) {$(CardTypeName),$(NoTitle),$(!REG_VT_SZ),$(IpxCard)}
			SetRegValue $(KeyIpxParameters) {$(FrameTypeName),$(NoTitle),$(!REG_VT_SZ),$(IpxFrameType)}
			SetRegValue $(KeyIpxParameters) {$(CardInstance),$(NoTitle),$(!REG_VT_DWORD),$(IpxCardInstance)}
			SetRegValue $(KeyIpxParameters) {$(IpxNtCardInstance),$(NoTitle),$(!REG_VT_SZ),$(IpxCardNumber)}

			set VMLIDServiceName = $(!NTN_ServiceBase)"\"$(ProductVMLIDName)
			OpenRegKey $(!REG_H_LOCAL) "" $(VMLIDServiceName) $(MAXIMUM_ALLOWED) KeyVMLIDService
			ifstr(i) $(KeyVMLIDService) != ""
				ifstr(i) $(VMLIDCard) != ""
					;
					; Turn on VMLID and set the card to bind to
					;
					set BindValue = "\Device\"$(VMLIDService)
					SetRegValue $(KeyVMLIDService) {"Bind",$(NoTitle),$(!REG_VT_SZ),$(BindValue)}
					SetRegValue $(KeyVMLIDService) {"Start",$(NoTitle),$(!REG_VT_DWORD),2}

					;
					; We are bound to an NDIS adapter so check if source routing is needed
					;
					Ifstr(i) $(CurrentMediaType) != "ETHERNET"
						Shell $(NwSubsInf) NWConfigureSourceRouting "Novell"
					Endif

				else
					;
					; Turn off VMLID
					;
					SetRegValue $(KeyVMLIDService) {"Start",$(NoTitle),$(!REG_VT_DWORD),4}
				endif
				CloseRegKey $(KeyVMLIDService)
			else

			endif
			CloseRegKey $(KeyIpxParameters)
		else
			Debug-Output "OEMNPRNW.INF: writeparameters can't open "$(IpxParametersName)
		endif

		;
		; set OdiLoad
		;
		set OdiLoadServiceName = $(!NTN_ServiceBase)"\"$(ProductODILOADName)
		OpenRegKey $(!REG_H_LOCAL) "" $(OdiLoadServiceName) $(MAXIMUM_ALLOWED) KeyOdiLoadService
		ifstr(i) $(KeyOdiLoadService) != ""
			ifstr(i) $(VMLIDCard) != ""
				;
				; Turn off OdiLoad if Ipx is bound to an Ndis driver
				;
				SetRegValue $(KeyOdiLoadService) {"Start",$(NoTitle),$(!REG_VT_DWORD),4}

			else-ifstr(i) $(NWIPInstalled) == YES
				;
				; If any Odi drivers are installed turn on OdiLoad otherwise
				; turn it off.
				;
				Ifcontains(i) "ODI" in $(DriverTypeList)
					SetRegValue $(KeyOdiLoadService) {"Start",$(NoTitle),$(!REG_VT_DWORD),2}
				Else
					SetRegValue $(KeyOdiLoadService) {"Start",$(NoTitle),$(!REG_VT_DWORD),4}
				Endif

			else
				;
				; Turn on OdiLoad because we must be using an Odi driver
				;
				SetRegValue $(KeyOdiLoadService) {"Start",$(NoTitle),$(!REG_VT_DWORD),2}

			endif
			CloseRegKey $(KeyOdiLoadService)
		else
			Debug-Output "OEMNPRNW.INF: can't open OdiLoad service "$(OdiLoadServiceName)
		endif

				
	endif

ConfigureIpxSpxEXIT = +

	return $(CommonStatus) $(DoReboot)

;*************************************************************************
;
;	SECTION:	GetInfFileNameFromRegistry
;
;	PURPOSE:	get the inf file name from the product' NetRules section.
;
;	ARGUMENTS:	$0	product key handle
;			  (ie, system\software\Microsoft\Lance\CurrentVersion)
;
;	RETURNS:	$R0	Inf file name.
;
;  REFERENCES:	Nothing
;
;	MODIFIES:	Nothing
;
;
;*************************************************************************

[GetInfFileNameFromRegistry]
	read-syms InitBaseVars
	set KeyProduct = $($0)
	set InfName = ""

	OpenRegKey $(KeyProduct) "" "NetRules" $(!REG_KEY_READ) NetRuleKey
	Ifstr(i) $(NetRuleKey) != $(KeyNull)
		GetRegValue $(NetRuleKey) "InfName" NetRuleInfNameList
		set NetRuleInfName = *($(NetRuleInfNameList), 4)
		Split-String $(NetRuleInfName), "\", FilenameList
		QueryListSize ListSize $(FilenameList)
		set InfName = *($(FilenameList), $(ListSize))
		CloseRegKey $(NetRuleKey)
	endif

	return $(InfName)


;
;  Helper sections:  service-specific installation and removal functions
;

[InstallEx-AuthenticationPackage]
	StartWait
	Read-syms GeneralConstants
	Read-syms ExtendedConstants
	Set ValueName = "Authentication Packages"

	OpenRegKey $(!REG_H_LOCAL) "" "System\CurrentControlSet\Control\Lsa" $(MAXIMUM_ALLOWED) KeyLsa
						
	Ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
		Debug-Output "OEMNPRNW.INF: Cant open LSA key for authentication package"
		Goto IEX_Auth_Return
	Endif

	GetRegValue $(KeyLsa) $(ValueName) AuthValueList
	Set AuthList = *($(AuthValueList),4)

	Set DoIt = 1
	ForListDo $(AuthList)
		Ifstr(i) $($) == $(PkgName)
			Set DoIt = 0
		Endif
	EndForListDo

	Ifint $(DoIt) == 1
		Set NewAuthList = >($(AuthList),$(PkgName))
		SetRegValue $(KeyLsa) {$(ValueName),$(NoTitle),$(!REG_VT_MULTI_SZ),$(NewAuthList)}
		Ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
			Debug-Output "OEMNPRNW.INF: Cant update LSA value for authentication package"
		Endif
	Endif

	CloseRegKey $(KeyLsa)

IEX_Auth_Return = +
	Return

[InstallEx-NetworkProvider]
	StartWait
	Read-syms GeneralConstants
	Read-syms ExtendedConstants
	Set ValueName = "ProviderOrder"

	OpenRegKey $(!REG_H_LOCAL) "" "System\CurrentControlSet\Control\NetworkProvider\order" $(MAXIMUM_ALLOWED) KeyPro

	Ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
		Debug-Output "OEMNPRNW.INF: Cant open NetworkProvder\order key"
		Goto IEX_Prov_Return
	Endif

	GetRegValue $(KeyPro) $(ValueName) ProValueList
	Set ProString = *($(ProValueList),4)
	Split-string $(ProString) "," ProPieces
	Debug-Output "OEMNPRNW.INF:  Provider list string is: "$(ProPieces)

	Set DoIt = 1
	ForListDo $(ProPieces)
		Ifstr(i) $($) != ","
			Ifstr(i) $($) == $(ProviderName)
				Set DoIt = 0
				Debug-Output "OEMNPRNW.INF:  Provider already present"
			Endif
		Endif
	EndForListDo

	Ifint $(DoIt) == 1
		Set NewPieces = ""
		Set NewPieces = >($(NewPieces),$(ProviderName))
	;	Ifstr(i) *($(ProPieces),1) != $(KeyNull)
			Set NewPieces = >($(NewPieces),",")
	;	Endif

		ForListDo $(ProPieces)
			Set NewPieces = >($(NewPieces),$($))
		EndForListDo

;	 Debug-Output "OEMNPRNW.INF:  New provider list string is: "$(NewPieces)

		Set NewString = ""
		ForListDo $(NewPieces)
			Set NewString = $(NewString)$($)
		EndForListDo
		Debug-Output "OEMNPRNW.INF:  New provider string is: "$(NewString)

		SetRegValue $(KeyPro) {$(ValueName),$(NoTitle),$(!REG_VT_SZ),$(NewString)}
		Ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
			Debug-Output "OEMNPRNW.INF: Can't update ProviderOrder value"
		Endif
	Endif

	CloseRegKey $(KeyPro)

	OpenRegKey $(!REG_H_LOCAL) "" "Software\Microsoft\Windows NT\CurrentVersion\File Manager\AddOns" $(MAXIMUM_ALLOWED) KeyPro

	Ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
		Debug-Output "OEMNPRNW.INF: Can't open File Manager\AddOns key"
		Goto IEX_Prov_Return
	Endif

	SetRegValue $(KeyPro) {"Novell NetWare Extension",$(NoTitle),$(!REG_VT_SZ),"nwfmext.dll"}
	CloseRegKey $(KeyPro)


IEX_Prov_Return = +
	Return

[InstallEx-ServiceGroupOrder]
   StartWait
	Read-syms GeneralConstants
	Read-syms ExtendedConstants
	Set ValueName = "List"
	Set Result = NO_ERROR
	Set Predecessor = $($0)

	OpenRegKey $(!REG_H_LOCAL) "" "System\CurrentControlSet\Control\ServiceGroupOrder" $(MAXIMUM_ALLOWED) KeySgo

	Ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
		set Result = "OEMNPRNW.INF: Cant open ServiceGroupOrder key"
		Debug-Output $(Result)
		Goto IEX_Sgo_Return
	Endif

	GetRegValue $(KeySgo) $(ValueName) SgoValue

	Set SgoList = *($(SgoValue),4)
	Set NewList = {}

	ForListDo $(SgoList)
		Set Item = $($)
		Ifstr(i) $(Item) == $(Predecessor)
			Set NewList = >($(NewList),$(Item))
			Ifstr(i) $(Item) == $(Predecessor)
				; Add all NetWare names to the list here
				ForListDo $(SvcList)
					Set NewList = >($(NewList),$($))
				EndForListDo
			Endif
		Else-Ifstr(i) $(Item) == *($(SvcList),1)
			; Oops.  We're in the wrong place.  Don't copy us to the new list were making.
			; Increment Trigger so the next item will be skipped over.
		Else-Ifstr(i) $(Item) == *($(SvcList),2)
			; Oops.  We're in the wrong place.  Don't copy us to the new list were making.
			; Increment Trigger so the next item will be skipped over.
		Else-Ifstr(i) $(Item) == *($(SvcList),3)
			; Oops.  We're in the wrong place.  Don't copy us to the new list were making.
			; Increment Trigger so the next item will be skipped over.
		Else
			Set NewList = >($(NewList),$(Item))
		Endif
	EndForListDo

	SetRegValue $(KeySgo) {$(ValueName),$(NoTitle),$(!REG_VT_MULTI_SZ),$(NewList)}
	Ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
		set Result = "OEMNPRNW.INF: Cant update ServiceGroupOrder value"
		Debug-Output $(Result)
	Endif

	CloseRegKey $(KeySgo)

IEX_Sgo_Return = +
	Return $(Result)

;
; Install the NetWare print provider
;
[InstallEx-NetWarePrintServices]
   StartWait
	Read-syms GeneralConstants
	Read-syms ExtendedConstants
	Set ValueName = "Name"
	Set OrderName = "Order"

	OpenRegKey $(!REG_H_LOCAL) "" $(PrintProvider) $(MAXIMUM_ALLOWED) KeyPrint

	Ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
		Debug-Output "OEMNPRNW.INF: Cant open "$(PrintProvider)" key"
		Goto IEX_Nps_Return
	Endif

	CreateRegKey $(KeyPrint) {$(NetWarePrintProviderName),$(NoTitle),GenericClass} "" $(MAXIMUM_ALLOWED) "" KeyProvider
	Ifint $(RegLastError) != !(!REG_ERROR_SUCCESS)
		Debug-Output "OEMNPRNW.INF: NetWare Print Services already install."
		OpenRegKey $(KeyPrint) "" $(NetWarePrintProviderName) $(MAXIMUM_ALLOWED) KeyProvider
	Endif


	SetRegValue $(KeyProvider) {$(ValueName),$(NoTitle),$(!REG_VT_SZ),"nwspool.dll"}
	Ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
		Debug-Output "OEMNPRNW.INF: Can't update NetWare Print Services value"
	Endif

	GetRegValue $(KeyPrint) $(OrderName) PrintProviderOrder
	Set ProviderOrderList = *($(PrintProviderOrder), 4)

	Set DoIt = 1

	ForListDo $(ProviderOrderList)
		Set Item = $($)
		Ifstr(i) $(Item) == $(NetWarePrintProviderName)
			; We're already in the list
			Set DoIt = 0
		Endif
	EndForListDo

	Ifint $(DoIt) == 1
		Set ProviderOrderList = >($(ProviderOrderList), $(NetWarePrintProviderName))
		SetRegValue $(KeyPrint) {$(OrderName),$(NoTitle),$(!REG_VT_MULTI_SZ),$(ProviderOrderList)}
		Ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
			Debug-Output "OEMNPRNW.INF: Cant update Print Providers Order value"
		Endif
	Endif

	CloseRegKey $(KeyProvider)
	CloseRegKey $(KeyPrint)

IEX_Nps_Return = +
	Return

[FinishInstalling-NWFS]
	read-syms GeneralConstants
	read-syms FileConstants

	Set WorkStationHandle = $($0)
	Set KeyParameters = $($1)
	Set KeyLinkage = $($2)
	Set TransportSelected = $($5)

; Check for the pre-alpha nwfs key if it exists delete it we are now using
; the key NetWareWorkStation
;
	set NetWareFileSystem = "Nwfs"
	set PreAlphaWorkstation = $(!NTN_ServiceBase)"\"$(NetWareFileSystem)

	OpenRegKey $(!REG_H_LOCAL) "" $(PreAlphaWorkstation) $(MAXIMUM_ALLOWED) KeyWorkstation
	Ifstr(i) $(KeyWorkstation) != ""
		CloseRegKey $(KeyWorkstation)
		OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase) $(MAXIMUM_ALLOWED) KeyServices
		Ifstr(i) $(KeyServices) == ""
			Debug-Output "OEMNPRNW.INF: Delete Nwfs, Can't open "$(!NTN_ServiceBase)
		Else
			DeleteRegTree $(KeyServices) $(NetWareFileSystem)
			CloseRegKey $(KeyServices)
		Endif
	Endif


	SetRegValue $(KeyLinkage) {"OtherDependencies",$(NoTitle),$(!REG_VT_MULTI_SZ),{"Mup","+NetWare Services"}}

	CreateRegKey $(WorkStationHandle) {"NetworkProvider",$(NoTitle),GenericClass} "" $(MAXIMUM_ALLOWED) "" ProviderHandle
	Ifstr(i) $(ProviderHandle) == ""
		Debug-Output "OEMNPRNW.INF: Can't create NetWareWorkstation\NetworkProvider"
		OpenRegValue $(WorkStationHandle) "" "NetworkProvider" $(MAXIMUM_ALLOWED) ProviderHandle
		Ifstr(i) $(ProviderHandle) == ""
			goto FIN_NWWS_Return
		Endif
	Endif

	SetRegValue $(ProviderHandle) {"Class",$(NoTitle),$(!REG_VT_DWORD),"3"}
	SetRegValue $(ProviderHandle) {"Name",$(NoTitle),$(!REG_VT_SZ),"NetWare Services"}
	SetRegValue $(ProviderHandle) {"ProviderPath",$(NoTitle),$(!REG_VT_EXPAND_SZ),$(System32Root)"NETWARE.DLL"}
	SetRegValue $(ProviderHandle) {"DeviceName",$(NoTitle),$(!REG_VT_SZ),"\Device\NetWareWorkstation"}

	SetRegValue $(KeyParameters) {"Retry Count",$(NoTitle),$(!REG_VT_DWORD),16}
	SetRegValue $(KeyParameters) {"Burst Mode",$(NoTitle),$(!REG_VT_DWORD),1}
	SetRegValue $(KeyParameters) {"First Time Install",$(NoTitle),$(!REG_VT_DWORD),1}

	CloseRegKey $(ProviderHandle)

	Debug-Output "2: TransportSelected = "$(TransportSelected)

	Ifstr(i) $(TransportSelected) == "NWLINK"
		Debug-Output "Set registry for NWLINK, KeyParameters = "$(KeyParameters)
		SetRegValue $(KeyParameters) {"IPX TDI Provider",$(NoTitle),$(!REG_VT_SZ),"\Device\Streams\NWLINKIPX"}
	Endif


FIN_NWWS_Return = +
	Return

[FinishInstalling-IPXSPX]
	read-syms GeneralConstants
	read-syms FileConstants
	read-syms IpxSpxConstants

	set ParmKey = $($1)
	set LinkageKey = $($2)

	;  set Parameters

	SetRegValue $(ParmKey) {$(CardTypeName),$(NoTitle),$(!REG_VT_SZ),$(CardName)}
	SetRegValue $(ParmKey) {$(CardInstance),$(NoTitle),$(!REG_VT_DWORD),$(CardInstanceNum)}
	SetRegValue $(ParmKey) {"Session Count",$(NoTitle),$(!REG_VT_DWORD),48}
	SetRegValue $(ParmKey) {"Window Size",$(NoTitle),$(!REG_VT_DWORD),3}
	SetRegValue $(ParmKey) {"Retry Count",$(NoTitle),$(!REG_VT_DWORD),10}
	SetRegValue $(ParmKey) {"Retry Delay Timeout",$(NoTitle),$(!REG_VT_DWORD),0}
	SetRegValue $(ParmKey) {"Watchdog Abort Timeout",$(NoTitle),$(!REG_VT_DWORD),30}
	SetRegValue $(ParmKey) {"Watchdog Listen Timeout",$(NoTitle),$(!REG_VT_DWORD),6}
	SetRegValue $(ParmKey) {"Watchdog Verify Timeout",$(NoTitle),$(!REG_VT_DWORD),3}

	; set Linkage

	SetRegValue $(LinkageKey) {$(BindValueName),$(NoTitle),$(!REG_VT_SZ),"\DEVICE\IPXSPX"}

	Shell $(UtilityInf) AddWinsockInfo $(ProductIPXSPXName) "wshnw.dll" "14" "14"
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output "OEMNPRNW.INF: AddWinsockInfo ShellCode error "$($ShellCode)
	endif



; Check for the pre-alpha Ipx service key if it exists delete it.  We are now
; using the key IpxSpx
;
	set PreAlphaIpxName	= "Ipx"
	set PreAlphaIpxService = $(!NTN_ServiceBase)"\"$(PreAlphaIpxName)

	OpenRegKey $(!REG_H_LOCAL) "" $(PreAlphaIpxService) $(MAXIMUM_ALLOWED) KeyIpx
	Ifstr(i) $(KeyIpx) != ""
		CloseRegKey $(KeyIpx)
		OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase) $(MAXIMUM_ALLOWED) KeyServices
		Ifstr(i) $(KeyServices) == ""
			Debug-Output "OEMNPRNW.INF: Delete Ipx, Can't open "$(!NTN_ServiceBase)
		Else
			DeleteRegTree $(KeyServices) $(PreAlphaIpxName)
			FlushRegKey $(KeyServices)
			CloseRegKey $(KeyServices)
		Endif
	Endif

	Return


[FinishInstalling-LSL]
	Return


[FinishInstalling-RESMGR]
	Return


[FinishInstalling-ODILOAD]
	Set KeyLinkage = $($2)

	SetRegValue $(KeyLinkage) {"OtherDependencies",$(NoTitle),$(!REG_VT_MULTI_SZ),{"+ODI"}}

	Return


[FinishInstalling-MUP]
	Return


[FinishInstalling-TDI]
	Return


[FinishInstalling-SPXAPI]
	Return

[FinishInstalling-IPXAPI]
	Return

[FinishInstalling-ROUTE]
	Return

[FinishInstalling-RECONNECT]
	Return

[FinishInstalling-VMLID]
	Return

[FinishInstalling-NWPOPUP]
	Debug-Output "FinishInstalling-NWPOPUP"
	set KeyNwPop = $($0)

	FlushRegKey $(KeyNwPop)
;	OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)\NwPopUp $(MAXIMUM_ALLOWED) KeyNwPop
	Ifstr(i) $(KeyNwPop) != ""
		Debug-Output "Opened Key NWPOPUP"
		GetRegValue $(KeyNwPop) "Type" ValueTypeList
		Debug-Output "TypeList = "$(ValueTypeList)
		set ValueType = *($(ValueTypeList), 4)
		Debug-Output "Type = "$(ValueType)
		set-add ValueType = $(ValueType),256
		SetRegValue $(KeyNwPop) {"Type",$(NoTitle),$(!REG_VT_DWORD),$(ValueType)}
;		CloseRegKey $(KeyNwPop)
		Endif
	Endif
	Return

[FinishInstalling-ODINSUP]
	Return

[ProgressCopyENG]
	!p:ProCaption	= "NetWare for Windows NT Setup"
	!p:ProCancel	= "Cancel"
	!p:ProCancelMsg = "NetWare for Windows NT is not correctly installed.  Are you sure you want "+
			 "to cancel copying files?"
	!p:ProCancelCap = "Setup Message"
	!p:ProText1	= "Copying:"
	!p:ProText2	= "To:"
	!p:Error	 = "Unable to determine proper source disk location; copy cannot be performed."

[DoAskSource]
	Set DAS_CWDDIR  = $($0)
	Set DAS_SRCDIR  = $($1)
	Set DAS_BUILTIN = $($2)
	Set DAS_Result  = STATUS_FAILED
	Ifstr(i) $(!STF_SRCDIR_OVERRIDE) != ""
		Set DAS_SRCDIR = $(!STF_SRCDIR_OVERRIDE)
		Set DAS_Result = STATUS_SUCCESSFUL
		Goto DAS_exit
	Endif
	Ifstr(i) $(DAS_BUILTIN) == YES
		Ifstr(i) $(!NTN_InstallPhase) == primary
			Ifstr(i) $(!STF_SRCDIR_WINNT) != ""
				Set DAS_SRCDIR = $(!STF_SRCDIR_WINNT)
			Endif
			Set DAS_Result = STATUS_SUCCESSFUL
			Goto DAS_exit
		Endif
	Endif
	Debug-Output "OEMNPRNW.INF: [DoAskSource] STF_CWDDIR = "$(DAS_CWDDIR)" STF_SRCDIR = "$(DAS_SRCDIR)
	Ifstr(i) $(DAS_SRCDIR) == ""
		Set DAS_SRCDIR = "A:\"
	Endif
	Ifstr(i) $(DAS_SRCDIR) == $(!STF_SRCDIR_USED)
		Set DAS_SRCDIR = $(!STF_SRCDIR_KEYED)
	Endif
	Set NetWareDlgText = "Please enter the full path of the NetWare for Windows NT distribution "+
				"files.  Then choose Continue."
	Shell "subroutn.inf" DoAskSourceEx $(DAS_SRCDIR) $(NetWareDlgText)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output "UTILITY.INF: shelling SUBROUTN.INF [DoAskSource] failed"
		goto DAS_exit
	endif
	Set DAS_Result = $($R0)
	Set DAS_SRCDIR = $($R1)
	Set !STF_SRCDIR_USED = $($R1)
	Set !STF_SRCDIR_KEYED = $($R3)
DAS_exit =+
	Read-syms ProgressCopy$(!STF_LANGUAGE)
	Return $(DAS_Result) $(DAS_SRCDIR)

;***************************************************************
;  INSTALL SECTIONS
;***************************************************************
[CreateNetWareGroup]
	set NetWareGroup = "NetWare"
	CreateCommonProgManGroup $(NetWareGroup) ""
	RemoveCommonProgManGroup $(NetWareGroup)
	CreateCommonProgManGroup $(NetWareGroup) ""
	ShowCommonProgManGroup $(NetWareGroup), 1
	CreateCommonProgmanItem "NetWare", "DOS Support" "%SystemRoot%\netware.pif" "%SystemRoot%\system32\nwsetup.dll" 1
	CreateCommonProgmanItem "NetWare", "Getting Started" "winhlp32 %SystemRoot%\system32\netware\readme.hlp" "" 0
;
;	Minimize the group
;
	ShowCommonProgManGroup $(NetWareGroup), 6
	Exit

[Install-NetWare-Dir]
	CreateDir $(!STF_WINDOWSSYSPATH)\NetWare
	CreateDir $(!STF_WINDOWSSYSPATH)\NLS
	CreateDir $(!STF_WINDOWSSYSPATH)\NLS\English
	Exit

[Install-Option]
	set STF_VITAL	 = ""
	set STF_OVERWRITE	= "VERIFYSOURCEOLDER"

	Debug-Output "OEMNPRNW.INF: Language directory to use: LANGUAGE = "$(LANGUAGE)
	Debug-Output "OEMNPRNW.INF: Install-FirstFiles: AddCopy = "$(AddCopy)
	Debug-Output "OEMNPRNW.INF: Install-FirstFiles: DoCopy  = "$(DoCopy)
	Debug-Output "OEMNPRNW.INF: STF_WINDOWSPATH = "$(!STF_WINDOWSPATH)


	Debug-Output "OEMNPRNW.INF: STF_NTPATH = "$(!STF_NTPATH)

	Ifstr(i) $(AddCopy) == "YES"
		;
		; Add the files to the copy list
		;
		AddSectionFilesToCopyList Files-FirstFiles							$(SrcDir)							$(!STF_WINDOWSSYSPATH)
		AddSectionFilesToCopyList Files-Readme									$(SrcDir)							$(!STF_WINDOWSSYSPATH)\netware
		AddSectionFilesToCopyList Files-NWSETUP								$(SrcDir)$(!STF_PLATFORM)		 	$(!STF_WINDOWSSYSPATH)
		AddSectionFilesToCopyList Files-CLEAN									$(SrcDir)$(!STF_PLATFORM)		 	$(!STF_WINDOWSSYSPATH)\netware
		AddSectionFilesToCopyList Files-Help									$(SrcDir)$(!STF_PLATFORM)\nls\english	$(!STF_WINDOWSSYSPATH)\nls\english
		AddSectionFilesToCopyList Files-Messages								$(SrcDir)$(!STF_PLATFORM)\nls\english	$(!STF_WINDOWSSYSPATH)
		AddSectionFilesToCopyList Files-16bitLibs								$(SrcDir)I386\libs16                 	$(!STF_WINDOWSSYSPATH)
		AddSectionFilesToCopyList Files-Unicode								$(SrcDir)I386\nls					$(!STF_WINDOWSSYSPATH)\nls
		AddSectionFilesToCopyList Files-System32-$(!STF_PLATFORM)		$(SrcDir)$(!STF_PLATFORM)\redir		$(!STF_WINDOWSSYSPATH)
	
		AddSectionFilesToCopyList Files-Inf-$(!STF_PLATFORM)				$(SrcDir)$(!STF_PLATFORM)			$(!STF_WINDOWSSYSPATH)
		AddSectionFilesToCopyList Files-NtRoot-$(!STF_PLATFORM)			$(SrcDir)$(!STF_PLATFORM)\redir		$(!STF_WINDOWSPATH)
		AddSectionFilesToCopyList Files-NetWare-$(!STF_PLATFORM)			$(SrcDir)$(!STF_PLATFORM)\redir		$(!STF_WINDOWSSYSPATH)\netware
		AddSectionFilesToCopyList Files-Drivers-$(!STF_PLATFORM)			$(SrcDir)$(!STF_PLATFORM)\redir		$(!STF_WINDOWSSYSPATH)\drivers
		AddSectionFilesToCopyList Files-Libs-$(!STF_PLATFORM)				$(SrcDir)$(!STF_PLATFORM)\libs32		$(!STF_WINDOWSSYSPATH)
	Endif


	Ifstr(i) $(DoCopy) == "YES"
	;
	; Copy files in the copy list
	;
		set !STF_NCPA_FLUSH_COPYLIST = TRUE
		CopyFilesInCopyList
	Endif

	Exit

[Install-Update]
	set STF_VITAL        = ""

	AddSectionFilesToCopyList Files-Inf										$(SrcDir)								$(!STF_WINDOWSSYSPATH)

	AddSectionFilesToCopyList Files-FirstFiles							$(SrcDir)								$(!STF_WINDOWSSYSPATH)
	AddSectionFilesToCopyList Files-Readme									$(SrcDir)								$(!STF_WINDOWSSYSPATH)\netware
	AddSectionFilesToCopyList Files-NWSETUP								$(SrcDir)$(!STF_PLATFORM)		 	$(!STF_WINDOWSSYSPATH)
	AddSectionFilesToCopyList Files-CLEAN									$(SrcDir)$(!STF_PLATFORM)		 	$(!STF_WINDOWSSYSPATH)\netware
	AddSectionFilesToCopyList Files-Help									$(SrcDir)$(!STF_PLATFORM)\nls\english		$(!STF_WINDOWSSYSPATH)\nls\english
	AddSectionFilesToCopyList Files-Messages								$(SrcDir)$(!STF_PLATFORM)\nls\english		$(!STF_WINDOWSSYSPATH)
	AddSectionFilesToCopyList Files-16bitLibs								$(SrcDir)I386\libs16                 		$(!STF_WINDOWSSYSPATH)
	AddSectionFilesToCopyList Files-Unicode								$(SrcDir)I386\nls						$(!STF_WINDOWSSYSPATH)\nls
	AddSectionFilesToCopyList Files-System32-$(!STF_PLATFORM)		$(SrcDir)$(!STF_PLATFORM)\redir		$(!STF_WINDOWSSYSPATH)

	AddSectionFilesToCopyList Files-Inf-$(!STF_PLATFORM)				$(SrcDir)$(!STF_PLATFORM)			$(!STF_WINDOWSSYSPATH)
	AddSectionFilesToCopyList Files-NtRoot-$(!STF_PLATFORM)			$(SrcDir)$(!STF_PLATFORM)\redir		$(!STF_WINDOWSPATH)
	AddSectionFilesToCopyList Files-NetWare-$(!STF_PLATFORM)			$(SrcDir)$(!STF_PLATFORM)\redir		$(!STF_WINDOWSSYSPATH)\netware
	AddSectionFilesToCopyList Files-Drivers-$(!STF_PLATFORM)			$(SrcDir)$(!STF_PLATFORM)\redir		$(!STF_WINDOWSSYSPATH)\drivers
	AddSectionFilesToCopyList Files-Libs-$(!STF_PLATFORM)				$(SrcDir)$(!STF_PLATFORM)\libs32		$(!STF_WINDOWSSYSPATH)

	;
	; Copy files in the copy list
	;
	set !STF_NCPA_FLUSH_COPYLIST = TRUE
	CopyFilesInCopyList

	Exit
[Install-CheckFileExists]
	Debug-Output "OEMNPRNW.INF: FiletoCheck = "$(FileToCheck)
	LibraryProcedure STATUS,$(!LIBHANDLE), CheckFileExistance $(FileToCheck)
	Debug-Output "OEMNPRNW.INF: CheckFileExists STATUS = "$(STATUS)
	exit

[DialogConstantsENG]
Help		= "&Help"
Exit		= "&Cancel"
OK		  = "&OK"
HelpContext = ""
Continue		= "Con&tinue"
Cancel		= "&Cancel"
Advanced    = "&Advanced"
IDH_NETWAREWRKSTATIONPARMS =  901
IDH_NETWAREIPXBIND         =  902
IDH_IPXSPXPARMS            =  903
IDH_NETWORKPROTOCOL        =  904
IDH_NETWAREODISETTINGS     =  905
IDH_NETWARECLIENTINSTALL   =  906
IDH_NETWARENDISODI         =  907
IDH_NODEADDRESSOVERIDE     =  908
IDH_NWIP							=  909
IDH_RESMGRCONFIG           =  951

[ResMgrDlgENG]
DlgType = "RadioCombination"
DlgTemplate = "RESMGR_CONFIG"
Caption = "Resource Manager Configuration"
CBOptionGreyed = {}
RadioOptionGreyed = {}
HelpContext = $(IDH_RESMGRCONFIG)
Label1 = "Communication Buffers"
ComboListItemsIn = {}
ComboListItemsOut = {}
NotifyFields = {}
EditTextIn = { $(CommunicationBuffers) }
EditTextLim = { 3 }


[IpxCardFrameDlgENG]
DlgType = "RadioCombination"
DlgTemplate = "NEW_IPXFRAME"
Caption = "IPX Configuration"
EditTextIn = ""
EditTextLim = ""
CBOptionsGreyed = {}
HelpContext = $(IDH_NETWAREIPXBIND)
Label1 = "Pick the frame type to bind IPX to"
Label2 = "Driver"
Label3 = "Frame"
ComboListItemsIn = {}
ComboListItemsOut = {}
NotifyFields = {"YES","NO"}


[NdisDlgENG]
IDH_NETWARENDISODI			=	907
Help		= "&Help"
OK			= "OK"
Continue	= "Continue"
Cancel		= "Cancel"
	DlgType = "RadioCombination"
	DlgTemplate = "ONELIST"
	Caption = "Choose the Driver to Bind with"
	Label1 = "Installed NDIS Adapters"
	EditTextIn = ""
	EditTextLim = ""
	CBOptionsGreyed = {}
	HelpContext = $(IDH_NETWARENDISODI)
	ComboListItemsIn = { NdisTitleList }
	ComboListItemsOut = { DefaultTitle }
	NotifyFields = { "NO" }


[VMLIDIPXDlgENG]
	DlgType = "RadioCombination"
	Label1 = "Enter the default frame type to bind to IPX"
	Label2 = "Board"
	Label3 = "Frame"
	DlgTemplate = "IPXFRAME"
	Caption = "IPX Bind Parameters"
	EditTextIn = ""
	EditTextLim = ""
	CBOptionsGreyed = {}
	RadioOptionsGreyed = {}
	HelpContext = $(IDH_NETWAREIPXBIND)
	ComboOut = $(FrameListDefault)
	ComboListItemsIn = { FrameList }
	ComboListItemsOut = { ComboOut }
	NotifyFields = { "NO" }


[OdinsupDlgENG]
	DlgType = "RadioCombination"
	DlgTemplate = "ONELIST"
	Caption = "NetWare NDIS over ODI (ODINSUP) Setup"
	Label1 = "Installed ODI Adapters"
	EditTextIn = ""
	EditTextLim = ""
	CBOptionsGreyed = {}
	HelpContext = $(IDH_NETWARENDISODI)
	ComboListItemsIn = { OdiTitleList }
	ComboListItemsOut = { DefaultOdiTitle }
	NotifyFields = { "NO" }

[Source Media Descriptions]
	1  = "NetWare Client for Windows NT Disk 1"  ,    TAGFILE = NTCLNT_1
	2  = "NetWare Client for Windows NT Disk 2"  ,    TAGFILE = NTCLNT_2
	3  = "NetWare Client for Windows NT MIPS Disk"  , TAGFILE = NTCLNT_3
	4  = "NetWare Client for Windows NT ALPHA Disk" , TAGFILE = NTCLNT_4

[Files-Inf]
1, oemsetup.inf, SIZE=50000, RENAME=$(!UG_Filename)

[Files-Readme]
1, readme.hlp, SIZE=30000

[Files-FirstFiles]
1, nwsubs.inf, SIZE=30000, DECOMPRESS

[Files-CLEAN]
1, clean.exe, SIZE=50000

[Files-NWSETUP]
1, nwsetup.dll, SIZE=50000

[Files-Help]
1, tokentsm.msg, SIZE=50000, DECOMPRESS
1, ethertsm.msg, SIZE=50000, DECOMPRESS
1, fdditsm.msg, SIZE=50000, DECOMPRESS
1, nwnthelp.hlp, SIZE=30000, DECOMPRESS
1, nwcpl.hlp, SIZE=30000, DECOMPRESS
1, netwarer.dll, SIZE=50000, DECOMPRESS
1, nwcplr.dll,  SIZE=50000, DECOMPRESS

[Files-Messages]
1, vipx.msg, SIZE=50000, DECOMPRESS
1, netx.msg, SIZE=50000, DECOMPRESS

[Files-16bitLibs]
1, nwcalls.dll, SIZE=20000, DECOMPRESS
1, nwnet.dll, SIZE=20000, DECOMPRESS
1, nwlocale.dll, SIZE=20000, DECOMPRESS
1, nwncp.dll, SIZE=20000, DECOMPRESS
1, nwclient.dll, SIZE=20000, DECOMPRESS
1, nwipxspx.dll, SIZE=50000, DECOMPRESS
1, netware.drv, SIZE=20000, DECOMPRESS

[Files-Unicode]
1, 1252_uni.001, SIZE=500, DECOMPRESS
1, 437_uni.001, SIZE=500, DECOMPRESS
1, uni_850.001, SIZE=3000, DECOMPRESS
1, uni_mon.001, SIZE=5000, DECOMPRESS
1, uni_437.001, SIZE=3000, DECOMPRESS
1, uni_1252.001, SIZE=3000, DECOMPRESS
1, uni_col.001, SIZE=5000, DECOMPRESS
1, 850_uni.001, SIZE=500, DECOMPRESS

[Files-System32-I386]
1, netware.dll, SIZE=50000, DECOMPRESS
1, nwapi32.dll, SIZE=50000, DECOMPRESS
1, nwfmext.dll, SIZE=50000, DECOMPRESS
1, nwevents.dll, SIZE=20000, DECOMPRESS
1, nwspool.dll, SIZE=30000, DECOMPRESS
1, nwv1_0.dll, SIZE=20000, DECOMPRESS
1, psapi32.dll, SIZE=20000, DECOMPRESS
1, wshnw.dll, SIZE=20000, DECOMPRESS
1, nwcpl.cpl, SIZE=20000, DECOMPRESS
1, ipxapi.dll, SIZE=20000, DECOMPRESS
1, spxapi.dll, SIZE=20000, DECOMPRESS
;1, nwshell.exe, SIZE=2000, DECOMPRESS
1, nwauto.nt, SIZE=1000, DECOMPRESS
1, nwconfig.nt, SIZE=1000, DECOMPRESS
1, vipx.exe, SIZE=50000, DECOMPRESS
1, netx.exe, SIZE=50000, DECOMPRESS
1, vipxvdd.dll, SIZE=50000, DECOMPRESS
1, ipxspx32.dll, SIZE=50000, DECOMPRESS
1, nwdrvvdd.dll, SIZE=50000, DECOMPRESS
1, nwpfctrs.dll, SIZE=50000, DECOMPRESS
1, lslstats.h,SIZE=50000, DECOMPRESS
1, lslstats.ini,SIZE=50000, DECOMPRESS
1, rdrstats.ini,SIZE=50000, DECOMPRESS
1, rdrstats.h,SIZE=50000, DECOMPRESS
1, odistats.ini,SIZE=50000, DECOMPRESS
1, odistats.h,SIZE=50000, DECOMPRESS

[Files-Inf-I386]
1, oemnadna.inf, SIZE=50000, DECOMPRESS
1, oemnadnb.inf, SIZE=50000, DECOMPRESS
1, oemnadnc.inf, SIZE=50000, DECOMPRESS
1, oemnadnd.inf, SIZE=50000, DECOMPRESS
1, odinsup.inf SIZE=30000, DECOMPRESS
1, oemnsvip.inf, SIZE=50000, DECOMPRESS

[Files-NtRoot-I386]
1, netware.pif, SIZE=10000, DECOMPRESS

[Files-NetWare-I386]
1, resmgr.sys, SIZE=50000, DECOMPRESS
1, nwfs.sys, SIZE=120000, DECOMPRESS
1, ipxspx.sys, SIZE=100000, DECOMPRESS
1, odiload.sys, SIZE=50000, DECOMPRESS
1, lsl.sys, SIZE=50000, DECOMPRESS
1, ethertsm.nlm, SIZE=20000, DECOMPRESS
1, tokentsm.nlm, SIZE=20000, DECOMPRESS
1, fdditsm.nlm, SIZE=20000, DECOMPRESS
1, route.sys, SIZE=20000, DECOMPRESS
1, spxapi.sys, SIZE=20000, DECOMPRESS
1, ipxapi.sys, SIZE=20000, DECOMPRESS
1, reconsvc.exe, SIZE=20000, DECOMPRESS
1, vmlid.sys, SIZE=50000, DECOMPRESS
1, nwip.sys, SIZE=50000, DECOMPRESS
1, nwmsgsvc.exe, SIZE=50000, DECOMPRESS

[Files-Drivers-I386]
1, odinsup.sys, SIZE=50000, DECOMPRESS

[Files-Libs-I386]
2, nwcvdd.dll, SIZE=50000, DECOMPRESS
2, calwin32.dll, SIZE=20000, DECOMPRESS
2, netwin32.dll, SIZE=20000, DECOMPRESS
2, locwin32.dll, SIZE=20000, DECOMPRESS
2, ncpwin32.dll, SIZE=20000, DECOMPRESS
2, clnwin32.dll, SIZE=20000, DECOMPRESS
2, supwin32.dll, SIZE=20000, DECOMPRESS
2, nwpsrv32.dll, SIZE=20000, DECOMPRESS



Download Driver Pack

How To Update Drivers Manually

After your driver has been downloaded, follow these simple steps to install it.

  • Expand the archive file (if the download file is in zip or rar format).

  • If the expanded file has an .exe extension, double click it and follow the installation instructions.

  • Otherwise, open Device Manager by right-clicking the Start menu and selecting Device Manager.

  • Find the device and model you want to update in the device list.

  • Double-click on it to open the Properties dialog box.

  • From the Properties dialog box, select the Driver tab.

  • Click the Update Driver button, then follow the instructions.

Very important: You must reboot your system to ensure that any driver updates have taken effect.

For more help, visit our Driver Support section for step-by-step videos on how to install drivers for every file type.

server: web3, load: 1.51