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

;
; The following is the version info for Novell
;

;VeRsIoN=v4.70 Novell Client Install for Windows NT (980305)
;CoPyRiGhT=copyright 1992-1999, by Novell, INC. All rights reserved.

;-----------------------------------------------------------------------
; 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
	NDPS
	CPROXY
	NTTSA
	WM
	NALNTSRV
	NetWareIP
;	WUA
	

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


[OptionNWFS]
INF = "OEMNPRNW.INF"
INSTALL = YES
OPTIONAL = NO
CONFIGDLL = WIZCFG.DLL

[OptionNDPS]
INF = "OEMNSVNP.INF"
INSTALL = YES
OPTIONAL = YES

[OptionCPROXY]
INF = "OEMNXPGW.INF"
INSTALL = NO
OPTIONAL = YES

[OptionNTTSA]
INF = "OEMNSVTS.INF"
INSTALL = NO
OPTIONAL = YES

[OptionWM]
INF = "OEMNSVWM.INF"
INSTALL = NO
OPTIONAL = YES
CONFIGDLL = WIZCFG.DLL

[OptionNALNTSRV]
INF = "OEMNSVNS.INF"
INSTALL = NO
OPTIONAL = YES

[OptionWUA]
INF = "OEMNSVWA.INF"
INSTALL = NO
OPTIONAL = YES

[OptionNetWareIP]
INF = "OEMNSVIP.INF"
INSTALL = NO
OPTIONAL = NO


[InitBaseVars]

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

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

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

[FileConstants]
	UtilityInf                              = "UTILITY.INF"
	subroutineinf                   = "SUBROUTN.INF"
	NwSubsInf                               = "NWSUBS.INF"
	NwSetupDll                              = "nwlangid.dll"
	NwOemSetupInf                   = "oemnprnw.inf"
	SoftwareType                    = "service"
	Exit_Code                               = 0


[GeneralConstants]
	from    = ""
	to              = ""

	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)


[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]
	Set !G:DebugOutputControl = 0
	Debug-Output "OEMSETUP.INF: ************************** Identify ***********************"
	set NTLanguage = $(!STF_LANGUAGE)
	Debug-Output "OEMSETUP.INF:  Identify, NTLanguage			= "$(NTLanguage)
	Debug-Output "OEMSETUP.INF:  Identify, Current Directory	= "$(!STF_CWDDIR)
	Debug-Output "OEMSETUP.INF:  Identify, Source Directory	= "$(!STF_SRCDIR)
	Debug-Output "OEMSETUP.INF:  Identify, OemSetupFilePath	= "$(!P:OemSetupFilePath)
	Debug-Output "OEMSETUP.INF:  Identify, OptDisketteSrc		= "$(!P:OptDisketteSrc)

	set SourceDir = $(!P:OptDisketteSrc)

	set !NW_SourceDir                       = $(SourceDir)

	detect ProcessorDetect

	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

	StartWait

	read-syms Identification
	read-syms FileConstants

	;
	; Check if we are already installed, if so fail this request
	;

	OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\NetWareWorkStation" $(MAXIMUM_ALLOWED) KeyProduct
	ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)

		;
		; Same version already existed in the local machine
		; Popup the dialog and ask the user whether he wants to continue
		;

		CloseRegKey $(KeyProduct)
		set CommonStatus = STATUS_FAILED
		goto end
	endif

	Ifstr(i) $(SourceDir) == ""
		Debug-Output "OEMSETUP.INF: SourceDir is blank, not first time install"
		set Status = STATUS_FAILED
		set Identifier = {}
		set Media = {}
		goto identify_exit
	Endif

	set Status              = STATUS_SUCCESSFUL
	set Identifier  = $(OptionType)

	LibraryProcedure STATUS, $(!LIBHANDLE), AppendBackSlash $(SourceDir)
	Ifstr(i) $(STATUS) != "ERROR"
		set SourceDir = $(STATUS)
	Endif

	;
	; Get the language name
	;

	Shell "" GetLanguageName $(SourceDir)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
		goto ShellCodeError
	endif

	set LanguageName = $($R0)
	set LangOemsetupInf = $(SourceDir)"NLS\"$(LanguageName)"\"$(NwOemSetupInf)

	FlushInf $(LangOemsetupInf)

	;
	; Get the Media Descriptions from the language specific oemsetup
	;

	shell $(LangOemsetupInf) Identify
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
		goto ShellCodeError
	endif

	Set Status              = $($R0)
	Set Identifier = $($R1)
	Set Media               = $($R2)

identify_exit = +
	Debug-Output "Status			= "$(Status)
	Debug-Output "Identifier	= "$(Identifier)
	Debug-Output "Media			= "$(Media)
	goto end

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"
	set CommonStatus = STATUS_FAILED
	goto end

end = +
	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 !G:DebugOutputControl = 0
	Debug-Output "OEMSETUP.INF: ****************************** ReturnOptions ************************"
	set NTLanguage = $($0)
	Debug-Output "OEMSETUP.INF:  ReturnOptions, NTLanguage			= "$(NTLanguage)
	Debug-Output "OEMSETUP.INF:  ReturnOptions, OemSetupFilePath	= "$(!P:OemSetupFilePath)
	Debug-Output "OEMSETUP.INF:  ReturnOptions, OptDisketteSrc		= "$(!P:OptDisketteSrc)

	StartWait

	read-syms FileConstants

	detect ProcessorDetect

	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

	StartWait

	Ifstr(i) $(!NW_SourceDir) == ""
		set !NW_SourceDir = $(!STF_SRCDIR)
		Debug-Output "OEMSETUP.INF: NW_SourceDir set to "$(!NW_SourceDir)
	Endif

	set SourceDir = $(!NW_SourceDir)

	set Status                              = STATUS_FAILED
	set OptionList                  = {}
	set OptionTextList      = {}

	LibraryProcedure STATUS, $(!LIBHANDLE), AppendBackSlash $(SourceDir)
	Ifstr(i) $(STATUS) != "ERROR"
		set SourceDir = $(STATUS)
	Endif

	;
	; Get the language name
	;

	Shell "" GetLanguageName $(SourceDir)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
		goto ShellCodeError
	endif

	set LanguageName = $($R0)


	ForListDo ^(Options, 1)

		read-syms Option$($)

	    set LangOemsetupInf = $(SourceDir)"NLS\"$(LanguageName)"\"$(INF)

		;
		; Get the option text from the language specific oemsetup
		;

		Shell $(LangOemsetupInf) ReturnOptions $(NTLanguage)
		ifint $($ShellCode) != $(!SHELL_CODE_OK)
			goto ShellCodeError
		endif

		set Status                              = $($R0)

		ForListDo $($R1)
			set OptionList = >($(OptionList), $($))
		EndForListDo

		ForListDo $($R2)
			set OptionTextList      = >($(OptionTextList), $($))
		EndForListDo

	EndForListDo

	Debug-Output "Status				= "$(Status)
	Debug-Output "OptionList		= "$(OptionList)
	Debug-Output "OptionTextList	= "$(OptionTextList)

	EndWait
	goto end

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"
	set CommonStatus = STATUS_FAILED
	goto end

end = +
	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]
	Set !G:DebugOutputControl = 0
	Debug-Output "OEMSETUP.INF: ******************* InstallOption *******************"

	StartWait

	read-syms FileConstants

	;
	; extract parameters
	;

	set NTLanguage  = $($0)
	set Option              = $($1)
	set SrcDir              = $($2)
	set AddCopy             = $($3)
	set DoCopy              = $($4)
	set DoConfig    = $($5)
	set SourceDir   = $($2)

	detect ProcessorDetect

	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

	StartWait

	Debug-Output "InstallOption: SourceDir = "$(SourceDir)


	LibraryProcedure STATUS, $(!LIBHANDLE), AppendBackSlash $(SourceDir)
	Ifstr(i) $(STATUS) != "ERROR"
		set SourceDir = $(STATUS)
	Endif

	;
	; Get the language name
	;

	Shell "" GetLanguageName $(SourceDir)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
		goto ShellCodeError
	endif

	set LanguageName = $($R0)
	Debug-Output "OEMSETUP.INF:  Using "$(LanguageName)

	read-syms Option$(Option)

	set LangOemsetupInf = $(SourceDir)"NLS\"$(LanguageName)"\"$(INF)

	Shell $(LangOemsetupInf) InstallOption $(NTLanguage) $(Option) $(SrcDir) $(AddCopy) $(DoCopy) $(DoConfig) $(LanguageName)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
		goto ShellCodeError
	else
		set CommonStatus        = $($R0)
		goto end
	endif


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"
	set CommonStatus = STATUS_FAILED
	goto end

end = +
	EndWait
	Return $(CommonStatus)



;----------GetLanguageName-------------------------------------------------
;
; GetLanguageName:
;
;       This section is shelled to by main installation processing
;       or by NCPASHEL.INF during reconfig, removal, update, etc.
;
;
; FUNCTION:  To get the intalled language name.
;
; INPUT:        $($0):  Language Install passed in to use (ENG always, broken)
;
; OUTPUT:       $($R0): Language Name "ENGLISH", "SPANISH", etc
;
;------------------------------------------------------------------------
[GetLanguageName]
	set SourceDir   = $($0)

	read-syms FileConstants

	;
	; Get the language ID for this machine from NT
	;

	LibraryProcedure STATUS, $(!LIBHANDLE), AppendBackSlash $(SourceDir)
	Ifstr(i) $(STATUS) != "ERROR"
		set SourceDir = $(STATUS)
	Endif

	Ifstr(i) $(SourceDir) == ""
		set NWSetupPath = $(NwSetupDll)
	Else
		set NWSetupPath = $(SourceDir)$(NwSetupDll)
	Endif

	LoadLibrary "" $(NWSetupPath) NwLibHandle
	LibraryProcedure LanguageName $(NwLibHandle) NWGetLanguageName $(SourceDir) "OEMSETUP.INF"
	FreeLibrary $(NwLibHandle)

	Return $(LanguageName)


;/////////////////////////////////////////////////////////////////////////////
;/////////////////////////////////////////////////////////////////////////////
;/////////////////////////////////////////////////////////////////////////////
;/////////////////////////////////////////////////////////////////////////////
;/////////////////////////////////////////////////////////////////////////////
;/////////////////////////////////////////////////////////////////////////////
;
;       Functionality to replace that found in NCPASHEL.INF
;
;

[StfVariableDetect]
    STF_PROCESSOR = "" ? $(!LIBHANDLE) GetProcessor
    STF_PLATFORM  = "I386"
    STF_LANGUAGE   = "" ? $(!LIBHANDLE) GetLanguage
    LanguageList   = ^(LanguageID, 1)
    STF_WINDOWSPATH    = "" ? $(!LIBHANDLE) GetWindowsNtDir
    STF_WINDOWSSYSPATH = "" ? $(!LIBHANDLE) GetWindowsNtSysDir
    STF_NTPATH         = $(!STF_WINDOWSPATH)
    STF_COMPUTERNAME   = "" ? $(!LIBHANDLE) GetMyComputerName
    STF_BUSTYPE        = "" ? $(!LIBHANDLE) GetMyBusType
    STF_BUSTYPELIST    = "" ? $(!LIBHANDLE) GetMyBusTypeList
[StfVariableSyms]
    ProcessorID_I386  = I386
    ProcessorID_I486  = I486
    ProcessorID_I586  = I586
    ProcessorID_R4000 = R4000
    ProcessorID_Alpha = Alpha_AXP
    ProcessorID_PPC601  = PPC601
    ProcessorID_PPC603  = PPC603
    ProcessorID_PPC604  = PPC604
    ProcessorID_PPC620  = PPC620
    PlatformID_I386   = I386
    PlatformID_Mips   = Mips
    PlatformID_Alpha  = Alpha
    PlatformID_PPC    = ppc
    STF_PRODUCT        = WINNT
    STF_USERNAME       = ""
    STF_INSTALL_MODE   = "CUSTOM"
    STF_UPDGRADE       = NO
    STF_NCDETECT       = NO
    STF_NCOPTION       = ""
    STF_NCDETCARD      = 99999
    STF_NCDETINFO      = {}
    STF_NC_PARAMS      = {}
    STF_NC_PNAMES      = {}
    STF_SRCDIR_KEYED   = ""
    STF_SRCDIR_USED    = ""
    STF_SRCDIR_OVERRIDE = ""
    STF_SRCDIR_WINNT   = ""
    STF_TEMPLATE_CRITERR = "CRITERR2"
    STF_TEMPLATE_NONCRITERR = "NONCRITERR2"
    STF_INSTALLED_OS = {} ? $(!LIBHANDLE) GetInstalledOSNames
    FatalErrorIndex = 1
    !Exit_Code = 0
[DoAskOemsetupSource]
    read-syms DoAskUpgradeSrcDlgText$(!STF_LANGUAGE)
    shell "subroutn.inf" DoAskSourceEx $($0) $(DlgText)
    Return $($R0) $($R1) $($R2) $($R3)
[Shell Commands]
     set-title "Windows NT Setup"
     Set !G:DebugOutputControl = 0
     LoadLibrary "x" $(!STF_CWDDIR)setupdll.dll !LIBHANDLE
     Set !NCPA_HANDLE = ""
     Ifstr(i) $(NTN_InfSection) != OemSoftwareInstall
	 LoadLibrary "y" $(!STF_CWDDIR)ncpa.cpl !NCPA_HANDLE
     Endif
     Shell "subroutn.inf" ReadSetupHelpIds
     SetHelpFile "setupnt.hlp" $(!MinimumID) $(!MaximumID)
     set-subst LF = "\n"
     StartWait
     read-syms StfVariableSyms
     read-syms StfVariableDetect
     detect StfVariableDetect
     Set !STF_NTPATH = $(!STF_WINDOWSSYSPATH)
     OpenRegKey $(!REG_H_LOCAL) "" "System\CurrentControlSet\Control\ProductOptions" 33554432 KeyProductOption
     ifstr(i) $(KeyProductOption) != ""
	 GetRegValue $(KeyProductOption) "ProductType" ProductTypeList
	 set TempProductType = *($(ProductTypeList),4)
	 ifstr(i) $(TempProductType) == "winnt"
	     set !STF_PRODUCT = WINNT
	 else-ifstr(i) $(TempProductType) == "lanmannt"
	     set !STF_PRODUCT = LANMANNT
	 else-ifstr(i) $(TempProductType) == "servernt"
	     set !STF_PRODUCT = SERVERNT
	 endif
	 CloseRegKey $(KeyProductOptions)
     endif
     Debug-Output "NCPASHEL.INF: STF_SRCDIR is "$(!STF_SRCDIR)
     Debug-Output "NCPASHEL.INF: NTN_SRCPATH is "$(!NTN_SRCPATH)
     Ifstr(i) $(!NTN_SRCPATH) != ""
	Set !STF_ORIGINAL_SRCDIR = $(!STF_SRCDIR)
	Set !STF_SRCDIR = $(!NTN_SRCPATH)
	Debug-Output "NCPASHEL.INF: Reset STF_SRCDIR to:"$(!STF_SRCDIR)
     Endif
     Ifstr(i) $(!STF_SRCDIR) == ""
	 OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\Microsoft\Windows Nt\CurrentVersion" $(!REG_KEY_READ) KeyNt
	 Ifstr(i) $(KeyNt) != ""
	     GetRegValue $(KeyNt) "SourcePath" SourcePathValue
	     Set !STF_SRCDIR = *($(SourcePathValue),4)
	     Debug-Output "NCPASHEL.INF: SourcePath retrieved is "$(!STF_SRCDIR)
	     CloseRegKey $(KeyNt)
	 Endif
	 Ifstr(i) $(!STF_SRCDIR) == ""
	   Set !STF_SRCDIR = "A:\"
	 Endif
    EndIf
     Set SetupInp = 0
     Set !NTN_InstallPhase = secondary
     OpenRegKey $(!REG_H_LOCAL) "" "SYSTEM\Setup" $(!REG_KEY_READ) KeySetup
     Ifstr(i) $(KeySetup) != ""
	 GetRegValue $(KeySetup) "SystemSetupInProgress" SetupInpValue
	 Ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
	     Set SetupInp = *($(SetupInpValue),4)
	     Debug-Output "NCPASHEL.INF: SetupInp = "$(SetupInp)
	 Endif
	 Ifint $(SetupInp) == 1
	     Set !NTN_InstallPhase = primary
	     GetRegValue $(KeySetup) "WinntPath" SetupPathValue
	     Ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
		 Set !STF_SRCDIR_WINNT = *($(SetupPathValue),4)
		 Debug-Output "NCPASHEL.INF: STF_SRCDIR_WINNT = "$(!STF_SRCDIR_WINNT)
	     Endif
	 Endif
	 CloseRegKey $(KeySetup)
     Endif
     Debug-Output "NCPASHEL.INF: Setup phase = "$(!NTN_InstallPhase)
   Ifstr(i) $(NTN_InfSection) == BindingsReview
	Goto skipdetection
   Endif
   Ifstr(i) $(NTN_InstallMode) == install
	Goto startdetection
   Endif
   Ifstr(i) $(NTN_InstallMode) == configure
	Goto startdetection
   Endif
   Goto skipdetection
startdetection = +
   Ifstr(i) $(!NCPA_HANDLE) != ""
       Debug-Output "NCPASHEL.INF: Enable netcard detection from NCPA.CPL"
       Shell "NCPARAM.INF" Param_ControlDetection DTSTART
   Endif
skipdetection = +
     ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_I386)
	 set STF_PLATFORM = $(PlatformID_I386)
	 set SYS      = $(ProcessorID_I386)
     else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_I486)
	 set STF_PLATFORM = $(PlatformID_I386)
	 set SYS      = $(ProcessorID_I386)
     else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_I586)
	 set STF_PLATFORM = $(PlatformID_I386)
	 set SYS      = $(ProcessorID_I386)
     else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_R4000)
	 set STF_PLATFORM = $(PlatformID_Mips)
	 set SYS      = $(ProcessorID_R4000)
     else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_Alpha)
	 set STF_PLATFORM = $(PlatformID_Alpha)
	 set SYS      = $(ProcessorID_Alpha)
     else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_PPC601)
	 set STF_PLATFORM = $(PlatformID_PPC)
	 set SYS      = $(ProcessorID_PPC601)
     else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_PPC603)
	 set STF_PLATFORM = $(PlatformID_PPC)
	 set SYS      = $(ProcessorID_PPC603)
     else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_PPC604)
	 set STF_PLATFORM = $(PlatformID_PPC)
	 set SYS      = $(ProcessorID_PPC604)
     else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_PPC620)
	 set STF_PLATFORM = $(PlatformID_PPC)
	 set SYS      = $(ProcessorID_PPC620)
     else
	 set STF_PLATFORM = $(PlatformID_I386)
	 set SYS      = $(ProcessorID_I386)
     endif
     Ifstr(i) $(!STF_LANGUAGE) != "ENG"
	 Debug-Output "NCPASHEL: Language not set to English; resetting"
	 !STF_LANGUAGE = "ENG"
     Endif
     read-syms ProgressCopy$(!STF_LANGUAGE)
    Ifstr(i) $(!NTN_RegBase) == ""
	set !NTN_RegBase = ""
    Endif
    set !NTN_ServiceBase  = "SYSTEM\CurrentControlSet\SERVICES"
    Ifstr(i) $(!NTN_InstallMode) == ""
	Debug-Output "NCPASHEL:!NTN_InstallMode was not defined!"
	set !NTN_InstallMode  = "configure"
    Endif
    Ifstr(i) $(!NTN_SoftwareBase) == ""
	set !NTN_SoftwareBase = "SOFTWARE"
    Endif
    set !NTN_Origination = "ncpa"
    Ifstr(i) $(!NTN_Infname) == ""
	goto fatalnoinfname
    Endif
    Ifstr(i) $(!NTN_InfSection) == ""
	Set !NTN_InfSection = "InstallOption"
    Endif
    ifstr(i) $(!NTN_InstallMode) == "Update"
;        Debug-Output "NCPASHEL.INF: Upgrade mode"
;        Shell "" DoAskOemsetupSource $(!STF_SRCDIR)
;        Ifstr(i) $($ShellCode) != $(!SHELL_CODE_OK)
;            goto shellerror
;        Endif
;        ifstr(i) $($R0) == STATUS_SUCCESSFUL
;            set !STF_SRCDIR = $($R1)
;        else-ifstr(i) $($R0) == STATUS_USERCANCEL
;            set Exit_Code = 1
;            goto end
;        else
;            set Exit_Code = 2
;            goto end
;        endif
	Set !NTN_Infname = $(!STF_SRCDIR)oemsetup.inf
    endif
    Ifstr(i) $(!NTN_InstallMode) == install
	set AddCopy  = YES
	set DoCopy   = YES
	set DoConfig = YES
    Else-ifstr(i) $(!NTN_InstallMode) == "Update"
	set AddCopy  = YES
	set DoCopy   = YES
	set DoConfig = NO
	Debug-Output "NCPASHEL.INF: Shell to "$(!NTN_Infname)
	Shell $(!NTN_Infname) ReturnOptions $(!STF_LANGUAGE)
	Ifstr(i) $($ShellCode) != $(!SHELL_CODE_OK)
	   Debug-Output "OEMSETUP--NCPASHEL.INF: SHELL ERROR: "$($ShellCode)
	   goto shellerror
	Endif
	Ifstr(i) $($R0) == "STATUS_SUCCESSFUL"
	   IfContains(i) $(!NTN_InfOption) in $($R1)
	      goto ContinueUpgrade
	   endif
	endif
	read-syms IncorrectOemsetupDisk$(!STF_LANGUAGE)
	shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "NONFATAL" $(ErrorText)
	set Exit_Code = 1
	goto end
ContinueUpgrade = +
    Endif
    ifstr(i) $(!NTN_SRCPATH) != ""
	Set !STF_SRCDIR_OVERRIDE = $(!STF_SRCDIR)
    Endif
    Shell $(!NTN_Infname) $(!NTN_InfSection) +
	 $(!STF_LANGUAGE) $(!NTN_InfOption) +
	 $(!STF_SRCDIR) $(AddCopy) $(DoCopy) $(DoConfig)
    Ifstr(i) $($ShellCode) != $(!SHELL_CODE_OK)
       Debug-Output "NCPASHEL.INF: SHELL ERROR: "$($ShellCode)
       goto shellerror
    Endif
    Debug-Output "NCPASHEL: INF return: "$($R0)
    Ifstr(i) $($R0) == STATUS_SUCCESSFUL
	set Exit_Code = 0
    else-ifstr(i) $($R0) == STATUS_USERCANCEL
	set Exit_Code = 1
    else-ifstr(i) $($R0) == STATUS_NO_EFFECT
	set Exit_Code = 3
    else-ifstr(i) $($R0) == STATUS_REBIND
	set Exit_Code = 4
    else-ifstr(i) $($R0) == STATUS_REBOOT
	set Exit_Code = 5
    else
	set Exit_Code = 2
    Endif
    EndWait
    goto end
shellerror = +
   read-syms ShellError$(!$ShellCode)$(!STF_LANGUAGE)
   Debug-Output "NCPASHEL: SHELL ERROR: "$(Error)
   goto fatal
fatalnoinfname = +
   set FatalErrorIndex = 2
   goto fatalmsg
fatalmsg = +
   read-syms FatalError$(FatalErrorIndex)$(!STF_LANGUAGE)
   Debug-Output "NCPASHEL: FATAL ERROR: "$(Error)
   goto fatal
fatal = +
   read-syms FatalDlg$(!STF_LANGUAGE)
   ui start "FatalError"
   goto end
end = +
   Ifstr(i) $(!LIBHANDLE) != ""
       LibraryProcedure DontCare, $(!LIBHANDLE), DeleteAllConnections
   Endif
   Debug-Output "NCPASHEL: NCPASHEL: returning to NCPA"
   goto term
term = +
   Debug-Output "NCPASHEL: Bye."
   exit
[Source Media Descriptions]
    1 = "Windows NT Workstation CD-ROM" , TAGFILE = cdrom.w
[Signature]
    FileType = MICROSOFT_FILE
[GetSignature]
    read-syms Signature
    return $(FileType)
[ProductType]
STF_PRODUCT  = Winnt
STF_PLATFORM = I386
[Files-Inf]
2,      oemsetup.inf,    SIZE=1000,     RENAME=$(!UG_Filename)
[LanguageID]
   ENG
[LanguageTextENG]
   "English (United States)"
[ProgressCopyENG]
    ProCaption   = "Windows NT Networking Setup"
    ProCancel    = "Cancel"
    ProCancelMsg = "Windows NT is not correctly installed.  Are you sure you want "+
		   "to cancel copying files?"
    ProCancelCap = "Setup Message"
    ProText1     = "Copying:"
    ProText2     = "To:"
    PlatformID_I386 = I386
    PlatformID_Mips = Mips
    PlatformID_PPC  = ppc
[FatalDlgENG]
STF_MB_TITLE = "Setup Message"
DlgType = "MessageBox"
STF_MB_TEXT  = $(Error)
STF_MB_TYPE  = 1
STF_MB_ICON  = 3
STF_MB_DEF   = 1
[FatalError1ENG]
Error = "Initialization failed"
[FatalError2ENG]
Error = "No INF file name given (NTN_Infname)"
[FatalError3ENG]
Error = "Invocation of INF file "$(!NTN_Infname)" failed"
[ShellError1ENG]
Error = "INF file "$(!NTN_Infname)" does not exist"
[ShellError2ENG]
Error = "INF file "$(!NTN_Infname)" does not have a section named "$(!NTN_InfSection)
[ShellError3ENG]
Error = "INF file "$(!NTN_Infname)", section "$(!NTN_InfSection)" has syntax errors"
[DoAskUpgradeSrcDlgTextENG]
    DlgText        = "Please enter the full path for the upgrade/update "+
		     "OEMSETUP.INF file. Then choose Continue."
[IncorrectOemsetupDiskENG]
    ErrorText      = "Update aborted. The OEMSETUP.INF does not support upgrade for the specified component."
