;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
;
;
; OEMNSVWA.INF
;
;		Novell WUser Agent
;
;
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
;
; The following is the version info for Novell
;

;VeRsIoN=v4.70 Novell WUser Agent (980316)
;CoPyRiGhT=copyright 1998, by Novell, INC. All rights reserved.

[Identification]
	OptionType = NetService

[Options]
	WUA

[FileConstants]
	;
	;  File names, etc.
	;
	
	UtilityInf	= "UTILITY.INF"
	subroutineinf	= "SUBROUTN.INF"
	NwSubsInf	= "NWSUBS.INF"
	NwLangIdDll	= "NWLANGID.DLL"
	NwSetupDll	= "nwsetup.dll"
	SoftwareType	= "service"
	Exit_Code	= 0
	
	;
	; Product Info
	;
	
	Manufacturer		= "Novell"
	UserModeRoot		= "%SystemRoot%"
	System32Root		= $(UserModeRoot)"\System32"
	SoftwareBinHome		= $(System32Root)"\NetWare\"
	DriverBinHome		= $(System32Root)"\Drivers\"
;	NetWareEventFile	= $(System32Root)"\nls\"$(NLSDirName)"\wusermsg.dll"

	;
	; KB: KBStuff
	;
	
	ProductKBSTUFFControl	  = service
	ProductKBSTUFFHidden	  = 0
	ProductKBSTUFFInstrumentation  = FALSE
	ProductKBSTUFFName	  = "KBSTUFF"
	ProductKBSTUFFImagePath	  = $(System32Root)\drivers\kbstuff.sys
	ProductKBSTUFFSvcType	  = "kernelautostart"
	ProductKBSTUFFGroup	  = "Extended Base"
	ProductKBSTUFFDependList  = {}
	ProductKBSTUFFEventFile	  = ""
	
	;
	; WUA: Novell WUser Agent
	;
	
	ProductWUAControl	  = component
	ProductWUAHidden	  = 0
	ProductWUAInstrumentation = FALSE
	ProductWUAName		  = "Novell WUser Agent"
;	ProductWUAImagePath	  = $(System32Root)\wuser32.exe
	ProductWUASvcType	  = "serviceauto"
	ProductWUAGroup		  = ""
	ProductWUADependList	  = {"WM"}
;	ProductWUAEventFile	  = $(NetWareEventFile)
	ProductWUATypeSupported	  = 31
	ProductWUAEventLogLocation = "Security"
	
	;
	; Registry key names
	;
	
	ProductKeyName		= $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"$(ProductWUAName)"\CurrentVersion"
	ParamKeyName		= $(!NTN_ServiceBase)"\"$(ProductWUAName)"\Parameters"
	ServiceNameList		= ^(ServiceNames, 1)
	UpdateServiceNameList	= ^(UpdateServiceNames, 1)

[ServiceNames]
	;
	; referenced by ServiceNameList
	;
	SVC_1		= "KBSTUFF"
	SVC_2		= "WUA"

[UpdateServiceNames]
	;
	; referenced by UpdateRoutine
	;
	SVC_1		= "KBSTUFF"
	SVC_2		= "WUA"

[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"
	
	DriverPath		= $(!STF_NTPATH)\drivers

	;
	; Product Info
	;
	
	Manufacturer		= "Novell"
	ProductMajorVersion	= 4
	ProductMinorVersion	= 70
	ProductVersion		= $(ProductMajorVersion)"."$(ProductMinorVersion)
	
;------------------------------------------------------------------------------
; 1. Identify	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	To return the option list supported by this INF and
;			the localized text list representing the options.
; Input:	$($0):	Lang. used (ENG | FRN | ....)
;
; Output:	$($R0):	STATUS:	STATUS_SUCCESSFUL	|
;				STATUS_NOLANGUAGE	|
;				STATUS_FAILED		|
;				STATUS_NOTSUPPORTED
;		$($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)

;------------------------------------------------------------------------------
; 2. InstallOption	This section is shelled to by main installation processing
;
; Function:	To copy files representing Options
;		To configure the installed option
;		To update the Registry for the installed option
;
; Input:	$($0):	Lang. 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		|
;				STATUS_NOTSUPPORTED
;
;------------------------------------------------------------------------------

[InstallOption]

	Set !G:DebugOutputControl = 0

	;
	; Set default values for
	;

	set Status	= STATUS_FAILED

	;
	; extract parameters
	;

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

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

	Debug-OutPut "OEMNSVWA.INF: Option   = "$($Option)
	Debug-OutPut "OEMNSVWA.INF: SrcDir   = "$($SrcDir)
	Debug-OutPut "OEMNSVWA.INF: AddCopy  = "$($AddCopy)
	Debug-OutPut "OEMNSVWA.INF: DoCopy   = "$($DoCopy)
	Debug-OutPut "OEMNSVWA.INF: DoConfig = "$($DoConfig)

	set-subst LF = "\n"
	read-syms GeneralConstants
	read-syms FileConstants
	read-syms FileConstants$(!STF_LANGUAGE)
	read-syms InstallOption$(!STF_LANGUAGE)
	detect date

	;
	; Check if the language requested is supported
	;

	set LanguageList = ^(LanguagesSupported, 1)
	Ifcontains(i) $($0) in $(LanguageList)
		goto installoption
	else
		Debug-OutPut "OEMNSVWA.INF: Language not supported"
		set Status = STATUS_NOLANGUAGE
		goto end
	endif

installoption = +

	;
	; This call checks the STF_ variables and sets the NWU variables.
	;

	Shell "" UnattendedInstallOption

	;
	; Get the data from the Unattended file.
	;

	ifstr(i) $(!NWUnattendedFile) != ""
		ifstr(i) $(!NWUnattendedSection) != ""
			Shell $(!NWUnattendedFile) ReadDefaultData, $(!NWUnattendedSection)
			ifstr(i) $($R0) != "STATUS_SUCCESSFUL"
				Debug-Output "Shell to read the NW Parameter values from an Unattend.txt file Failed."

				Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "Warning", $(UnattendFileReadFailed)

				ifstr(i) $($R1) == "CANCEL"
					set CommonStatus = STATUS_USERCANCEL
					goto end
				endif
			endif
		endif
	endif

	ifstr(i) $(!NWUnattendedFile) != ""
		ifstr(i) $(!NWWizard) != YES
			Debug-OutPut "OEMNSVWA.INF: !DoRemove = "$(!DoRemove)
			ifstr(i) $(!DoRemove) == YES
				set !NTN_InstallMode = deinstall
			else-Ifstr(i) $(!DoInstall) == NO
				Debug-OutPut "OEMNSVWA.INF: !DoInstall = "$(!DoInstall)
				set CommonStatus = STATUS_SUCCESSFUL
				goto end
			endif
		endif		
	endif

    ;
    ;   Must have the client installed first
    ;
	OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\NetWareWorkStation" $(MAXIMUM_ALLOWED) KeyProduct
	ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)

		Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "FATAL", $(NetWareClientNotInstalledMessage)

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

		set CommonStatus = STATUS_USERCANCEL
		goto end
	endif

	CloseRegKey $(KeyProduct)

	;
	; Find what NLS directory is being used
	;

	set NovellParameters = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\Parameters"
	Debug-OutPut "OEMNSVWA.INF: NovellParameters is "$(NovellParameters)
	OpenRegKey $(!REG_H_LOCAL) "" $(NovellParameters) $(MAXIMUM_ALLOWED) KeyNovellParameters
	ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
		GetRegValue $(KeyNovellParameters) "NWLanguage" LanguageList
		ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
			set NLSDirName = *($(LanguageList), 4)
		else
			goto fatalregistry
		endif
		CloseRegKey $(KeyNovellParameters)
	else
		goto fatalregistry
	Endif

	GetDriveInPath SystemDrive $(!STF_WINDOWSSYSPATH)	; get drive where os is installed
	ifstr(i) $(SystemDrive) == ""						; if no drive found
		Set SystemDrive = "C:"								; default to C:
	endif

	;
	; Get NT version
	;

	set CurrentVersion = $(!NTN_SoftwareBase)"\Microsoft\Windows NT\CurrentVersion"
	OpenRegKey $(!REG_H_LOCAL) "" $(CurrentVersion) $(MAXIMUM_ALLOWED) CurrentVersionKey
	ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
		GetRegValue $(CurrentVersionKey) "CurrentVersion" VersionList
		ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
			set VersionListData = *($(VersionList), 4)
			Split-string $(VersionListData) "." SplitVersionList
			Set NTMajorVersion = *($(SplitVersionList), 1)
			Set NTMinorVersion = *($(SplitVersionList), 3)

			Debug-OutPut "OEMNSVWA.INF: Windows NT current version is "$(VersionListData)
			Debug-OutPut "OEMNSVWA.INF: Windows NT Major version is "$(NTMajorVersion)
			Debug-OutPut "OEMNSVWA.INF: Windows NT Minor version is "$(NTMinorVersion)
		else
			Debug-Output "OEMNSVWA.INF:  Error getting NT version"
		endif
		CloseRegKey $(CurrentVersionKey)
	else
		Debug-Output "OEMNSVWA.INF:  Error opening "$(CurrentVersion)
	endif

	;
	; Is this an Advanced Server
	;

	Debug-Output "OEMNSVWA.INF:  Checking to see if advanced server"
	set AdvancedServer = "NO"
	Set TempKeyName = "SYSTEM\CurrentControlSet\Control\ProductOptions"
	OpenRegKey $(!REG_H_LOCAL) "" $(TempKeyName) $(MAXIMUM_ALLOWED) TempKey
	Ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
		Set ValueName = "ProductType"
		GetRegValue $(TempKey) $(ValueName) ValueList
		Ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
			set ValueListData = *($(ValueList), 4)
			set AdvancedServer = "YES"
			ifstr(i) $(ValueListData) == "WinNT"
				set AdvancedServer = "NO"
				Debug-Output "OEMNSVWA.INF:  AdvancedServer is "$(AdvancedServer)
			endif
		else
			Debug-Output "OEMNSVWA.INF:  Failed to get ProductType"
		endif
		CloseRegKey $(TempKey)
	else
		Debug-Output "OEMNSVWA.INF:  Failed to open ProductOptions key"
	endif

;	ifstr(i) $(AdvancedServer) == "YES"
;		set DlgType		= "MessageBox"
;		set STF_MB_TITLE	= $(ErrorMessageTitle)
;		set STF_MB_TEXT	 	= $(NetWareWUAOnASMessageText)
;		set STF_MB_TYPE		= 1
;		set STF_MB_ICON		= 3
;		set STF_MB_DEF		= 1
;		ui start "NetWareWUAOnAS"
;
;		set CommonStatus = STATUS_USERCANCEL
;		goto end
;	endif

	set-title	$(FunctionTitle)
	set to	= Begin
	set from = Begin
	set CommonStatus = STATUS_SUCCESSFUL
	EndWait

Begin = +
	Debug-Output "OEMNSVWA.INF: Begin Install Mode = "$(!NTN_InstallMode)
	Ifstr(i) $(!NTN_InstallMode) == deinstall
		set StartLabel = removewua
	else-Ifstr(i) $(!NTN_InstallMode) == Update
		set StartLabel = updatewua
	else-Ifstr(i) $(!NTN_InstallMode) == bind
		set StartLabel = bindwua
	else-Ifstr(i) $(!NTN_InstallMode) == configure
		set StartLabel = configurewua
	else
		set StartLabel 			= installwua
		set OEM_ABANDON_OPTIONS 	= {}
		set OEM_ABANDON_SOFTWARE 	= FALSE
		set OEM_ABANDON_ON 		= TRUE

		;
		;  Turn on all the options.
		;

		ForListDo $(ServiceNameList)
			Set Do$($) = TRUE
		EndForListDo
	endif
	set from = $(fatal)
	set to = $(fatal)
	goto $(StartLabel)


;******************************************
;
;	Install the Novell WUser Agent
;
;******************************************
installwua = +
	Debug-Output "OEMNSVWA.INF:  Installing WUA"

	Debug-Output "OEMNSVWA.INF: Remove Intel WUser Agent"
	Shell $(UtilityInf), RemoveService, "Intel WUser Agent", YES
	Ifint $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output "OEMNSVWA.INF: ShellCode error removing Intel WUser Agent"
	Endif

	Debug-Output "OEMNSVWA.INF: Stopping Novell WUser Agent"
	LoadLibrary $(LoadDisk3Text) $(!STF_WINDOWSSYSPATH)"\"$(NwSetupDll) NwLibHandle
	LibraryProcedure GUIResult $(NwLibHandle) NWStopService $(ProductWUAName)
	FreeLibrary $(NwLibHandle)	

	set AddCopy	= "YES"
	set DoCopy	= "YES"

	Ifstr(i) $(DoCopy) == "YES"
AskSourceAgain = +

		;
		;  Get source location
		;

		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 end
		Endif
	
		Set SrcDir = $($R1)
	
		LibraryProcedure STATUS, $(!LIBHANDLE), AppendBackSlash $(SrcDir)
	
		ifstr(i) $(STATUS) != "ERROR"
			set SrcDir = $(STATUS)
		Endif

		LibraryProcedure Status1, $(!LIBHANDLE), CheckFileExistance, $(SrcDir)nls\$(NLSDirName)"\OEMNSVWA.INF"
		ifstr(i) $(Status1) != "YES"
			goto AskSourceAgain
		endif
	Endif


	endif

	set OEM_ABANDON_ON  = TRUE

	StartWait

	;
	; Create file directories
	;

	install "Install-Dirs"

	;
	; Copy all files to destination
	;

	install "Install-Files"
	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 AddCopy = $(OriginalAddCopy)
	set DoCopy  = $(OriginalDoCopy)

	StartWait

	;
	;  Install all enabled services mentioned in the ServiceNameList
	;

InstallEnabledServices = +

	ForListDo  $(ServiceNameList)
		Set SvcOpt = $($)
		Debug-Output "****OEMNSVWA.INF:  InstallEnabledServices"
		Debug-Output "****OEMNSVWA.INF:  SvcOpt is "$(SvcOpt)
		;
		; Check to see if the product to be installed is already installed
		;

		Set TempProductKeyName = $(!NTN_ServiceBase)"\"$(Product$(SvcOpt)Name)
		Debug-Output "****OEMNSVWA.INF:  ProductXXXName is "$(Product$(SvcOpt)Name)
		OpenRegKey $(!REG_H_LOCAL) "" $(TempProductKeyName) $(MAXIMUM_ALLOWED) TempKey
		ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
			Debug-Output "OEMNSVWA.INF:  "$(SvcOpt)" is already installed"
			Set Do$(SvcOpt) = FALSE
		Endif

;		Set TempKeyName = $(!NTN_ServiceBase)"\WM"
;		OpenRegKey $(!REG_H_LOCAL) "" $(TempKeyName) $(MAXIMUM_ALLOWED) TempKey
;		Ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
;			set Product$(SvcOpt)DependList  = {"WM"}
;			CloseRegKey $(TempKey)
;		Endif

		Set ProductWUAImagePath = $(SystemDrive)"\Novell\ZENRC\wuser32.exe"
		Set ProductWUAEventFile = $(SystemDrive)"\Novell\ZENRC\NLS\"$(NLSDirName)"\wusermsg.dll"

		Debug-Output "****OEMNSVWA.INF:  DoSvcOpt is "$(Do$(SvcOpt))
		Ifstr(i) $(Do$(SvcOpt)) == TRUE
			Ifstr(i) $(Product$(SvcOpt)Control) == component
				Debug-Output "OEMNSVWA.INF: install component: "$(SvcOpt)

				Shell $(UtilityInf), AddSoftwareComponent +
					$(Manufacturer), +
					$(Product$(SvcOpt)Name), +
					$(Product$(SvcOpt)Name), +
					$(Product$(SvcOpt)DisplayName), +
					"OEMNSVWA.INF", +
					$(Product$(SvcOpt)ImagePath), +
					$(Product$(SvcOpt)SvcType), +
					$(Product$(SvcOpt)Group), +
					$(Product$(SvcOpt)DependList), "" +
					$(Product$(SvcOpt)EventFile), "", +  
				    $(Product$(SvcOpt)EventLogLocation), 1
	
				Ifint $($ShellCode) != $(!SHELL_CODE_OK)
					Debug-Output "OEMNSVWA.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 "OEMNSVWA.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 ProductOpSupport = 133
				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)DisplayName)},+
						{Description,$(NoTitle),$(!REG_VT_SZ),$(Product$(SvcOpt)DisplayName)},+
						{ServiceName,$(NoTitle),$(!REG_VT_SZ),$(Product$(SvcOpt)Name)},+
			                        {OperationsSupport,$(NoTitle),$(!REG_VT_DWORD),$(ProductOpSupport)},+
						{InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)}}
		
				Shell  $(UtilityInf), AddValueList, $(SvcVersion), $(NewValueList)
				StartWait
				Ifint $($ShellCode) != $(!SHELL_CODE_OK)
					Debug-Output "OEMNSVWA.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 "OEMNSVWA.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 "OEMNSVWA.INF: Registry error adding NetRules to "$(SvcOpt)
					EndWait
					goto fatalregistry
				Endif
	
			Else
				Debug-Output "OEMNSVWA.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), +
					$(Product$(SvcOpt)TypeSupported), +
					$(Product$(SvcOpt)EventLogLocation), 1
		
				StartWait
				Ifint $($ShellCode) != $(!SHELL_CODE_OK)
					Debug-Output "OEMNSVWA.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 "OEMNSVWA.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
skipservice = +
	EndForListDo

	Ifstr(i) $(CalledFromUpdate) == "YES"
		goto ReturnToUpdate
	endif

	;
	;	Install various registry parameters
	;

	Install Install-Parameters	

	;
	; Write out the unattended variables to registry
	;
	
	shell "" Write-Unattended-Variables

	ifint $($ShellCode) != $(!SHELL_CODE_OK)
		goto ShellCodeError
	else-ifstr(i) $($R0) != STATUS_SUCCESSFUL
		Debug-Output "OEMNSVWA:  User Canceled due to a error processing the Unattended Variables."
		set CommonStatus = STATUS_USERCANCEL
		goto setfailed
	endif

	goto end


;*********************************************
;
;	Configure the Novell WUser Agent
;
;*********************************************
configurewua = +
	Debug-Output "OEMNSVWA.INF:  Configuring WUA"
        Shell $(UtilityInf),RegistryErrorString,CANNOT_CONFIGURE_SOFTWARE
        ifint $($ShellCode) != $(!SHELL_CODE_OK)
            Debug-Output "OEMNSVWA.INF: ShellCode error: cannot get an error string."
            goto ShellCodeError
        endif
        set Error = $($R0)
        set from = end
        set to = end
	set CommonStatus = STATUS_USERCANCEL
	set Severity = STATUS

        goto nonfatal

;*******************************************************
;
;	Review bindings for the Novell Workstation Manager
;
;*******************************************************
bindwua = +
	Debug-Output "OEMNSVWA.INF:  Binding WUA"

	goto end


;******************************************
;
;	Remove the Novell WUser Agent
;
;******************************************
removewua = +
	Debug-Output "OEMNSVWA.INF:  Removing WUA"

	ForListDo  $(ServiceNameList)
		Set SvcOpt = $($)
		Ifstr(i) $(Product$(SvcOpt)Control) == component
			Debug-Output "OEMNSVWA.INF: remove component: "$(SvcOpt)

		        Shell $(UtilityInf), RemoveSoftwareComponent, $(Manufacturer),  $(Product$(SvcOpt)Name)

			Ifint $($ShellCode) != $(!SHELL_CODE_OK)
				Debug-Output "OEMNSVWA.INF: RemoveSoftwareComponent ShellCode error "$($ShellCode)" installing "$(SvcOpt)
				EndWait
				goto ShellCodeError
			Endif
		Else
			Debug-Output "OEMNSVWA.INF: remove service: "$(SvcOpt)

			Shell $(UtilityInf), RemoveService, $(Product$(SvcOpt)Name), NO

			Ifint $($ShellCode) != $(!SHELL_CODE_OK)
				Debug-Output "OEMNSVWA.INF: ShellCode error removing "$(SvcOpt)
				EndWait
				goto ShellCodeError
			Endif
		Endif
	EndForListDo

	Set TempKeyName = $(!NTN_SoftwareBase)"\"$(Manufacturer)
	OpenRegKey $(!REG_H_LOCAL) "" $(TempKeyName) $(MAXIMUM_ALLOWED) TempKey
	ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
		Debug-Output "OEMNSVWA.INF:  Deleting all our WUA software"

		DeleteRegTree $(TempKey) "Novell WUser Agent"
		ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
			Debug-Output "OEMNSVWA.INF:  Failed to delete Netware WUA registry tree"
		endif

		CloseRegKey $(TempKey)
	else
		Debug-Output "OEMNSVWA.INF:  Failed to open software key to delete old software"
	endif


	Set TempKeyName = $(!NTN_ServiceBase)"\EventLog\Security"
	OpenRegKey $(!REG_H_LOCAL) "" $(TempKeyName) $(MAXIMUM_ALLOWED) TempKey
	ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)

		DeleteRegTree $(TempKey) "Novell WUser Agent"
		ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
			Debug-Output "OEMNPRNW.INF:  Failed to delete Novell WUser Agent registry key from "$(TempKeyName)
		endif

		CloseRegKey $(TempKey)
	else
		Debug-Output "OEMNPRNW.INF:  Failed to open "$(TempKeyName)
	endif

	set TempRegKeyName = "SOFTWARE\Microsoft\Windows\CurrentVersion\Run" 
	OpenRegKey $(!REG_H_LOCAL) ""  $(TempRegKeyName) $(MAXIMUM_ALLOWED) TmpKey
	ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)                                                          ; if no new key
		DeleteRegValue $(TmpKey) "ZENworks FTP server"
		ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
			Debug-Output "OEMNSVWA.INF:  Failed to delete ZENworks FTP server registry tree"
		endif
		DeleteRegValue $(TmpKey) "ZENRC Tray Icon"
		ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
			Debug-Output "OEMNSVWA.INF:  Failed to delete ZENRC Tray Icon registry tree"
		endif
	endif                           
	CloseRegKey $(TmpKey)


	set TmpRegKeyName = "HARDWARE\DEVICEMAP\VIDEO" 
	OpenRegKey $(!REG_H_LOCAL) ""  $(TmpRegKeyName) $(MAXIMUM_ALLOWED) TmpKey
	ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
		GetRegValue $(TmpKey) "\Device\Video0" VideoList
		ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
			set VideoData = *($(VideoList), 4)
			Split-String $(VideoData) "\" VideoReg1
			set TmpVideoKeyName = ""							
			ForListDo $(VideoReg1)
				ifint $(#) >= 6
					set TmpVideoKeyName = $(TmpVideoKeyName)$($)
				endif
			EndForListDo
			OpenRegKey $(!REG_H_LOCAL) ""  $(TmpVideoKeyName) $(MAXIMUM_ALLOWED) TmpVideoKey
			ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
				GetRegValue $(TmpVideoKey) "InstalledDisplayDrivers" DriversList
				ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
					set DriversData = *($(DriversList), 4)
					Set NewDrvValue = {}
					Set FindValue = "drishti"
					Ifcontains(i) $(FindValue) in $(DriversData)
						Debug-Output "OEMNSVWA.INF: Inside of contains-drishti loop."
						ForListDo $(DriversData)
							Ifstr(i) $($) != $(FindValue)
								Set NewDrvValue = >($(NewDrvValue), $($))
							Endif
						EndForListDo
					Else
						ForListDo $(DriversData)
							Set NewDrvValue = >($(NewDrvValue), $($))
						EndForListDo
					Endif
					SetRegValue $(TmpVideoKey) {"InstalledDisplayDrivers", $(NoTitle), $(!REG_VT_MULTI_SZ), $(NewDrvValue)}
					ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)                                                  ; create new key
						Debug-Output "OEMNSVWA.INF: Failed to remove drishti for Remote Management"
					endif
				endif
			endif
		endif
	endif

	Ifstr(i) $(TmpVideoKey) != ""
		CloseRegKey $(TmpVideoKey)
	endif

	Ifstr(i) $(TmpKey) != ""
		CloseRegKey $(TmpKey)
	endif


	LoadLibrary $(LoadDisk3Text) $(!STF_WINDOWSSYSPATH)"\"$(NwSetupDll) NwLibHandle

	Debug-Output "OEMNSVWA.INF:  Deleting all our WUA files"

	LibraryProcedure GUIResult $(NwLibHandle) NWDeleteFile $(SystemDrive)"\Novell\ZENRC\wusermsg.dll"
	LibraryProcedure GUIResult $(NwLibHandle) NWDeleteFile $(SystemDrive)"\Novell\ZENRC\loc32vc.dll"
	LibraryProcedure GUIResult $(NwLibHandle) NWDeleteFile $(SystemDrive)"\Novell\ZENRC\wuser32.exe"
	LibraryProcedure GUIResult $(NwLibHandle) NWDeleteFile $(SystemDrive)"\Novell\ZENRC\queuebuf.dll"
	LibraryProcedure GUIResult $(NwLibHandle) NWDeleteFile $(SystemDrive)"\Novell\ZENRC\multprot.dll"
	LibraryProcedure GUIResult $(NwLibHandle) NWDeleteFile $(SystemDrive)"\Novell\ZENRC\zenpol32.dll"
	LibraryProcedure GUIResult $(NwLibHandle) NWDeleteFile $(SystemDrive)"\Novell\ZENRC\wchat32.exe"
	LibraryProcedure GUIResult $(NwLibHandle) NWDeleteFile $(SystemDrive)"\Novell\ZENRC\wslave32.exe"
	LibraryProcedure GUIResult $(NwLibHandle) NWDeleteFile $(SystemDrive)"\Novell\ZENRC\rcagent.hlp"
	LibraryProcedure GUIResult $(NwLibHandle) NWDeleteFile $(SystemDrive)"\Novell\ZENRC\rcagent.cnt"

	LibraryProcedure GUIResult $(NwLibHandle) NWDeleteFile $(SystemDrive)"\Novell\ZENRC\diagnt.dll"
	LibraryProcedure GUIResult $(NwLibHandle) NWDeleteFile $(SystemDrive)"\Novell\ZENRC\cmlwp32.dll"
	LibraryProcedure GUIResult $(NwLibHandle) NWDeleteFile $(SystemDrive)"\Novell\ZENRC\lwpacc32.dll"
	LibraryProcedure GUIResult $(NwLibHandle) NWDeleteFile $(SystemDrive)"\Novell\ZENRC\lwput32.dll"
	LibraryProcedure GUIResult $(NwLibHandle) NWDeleteFile $(SystemDrive)"\Novell\ZENRC\sftplg32.dll"
	LibraryProcedure GUIResult $(NwLibHandle) NWDeleteFile $(SystemDrive)"\Novell\ZENRC\srvftp32.acc"
	LibraryProcedure GUIResult $(NwLibHandle) NWDeleteFile $(SystemDrive)"\Novell\ZENRC\srvftp32.exe"
	LibraryProcedure GUIResult $(NwLibHandle) NWDeleteFile $(SystemDrive)"\Novell\ZENRC\utillg32.dll"
	LibraryProcedure GUIResult $(NwLibHandle) NWDeleteFile $(SystemDrive)"\Novell\ZENRC\wtalk32.exe"
	LibraryProcedure GUIResult $(NwLibHandle) NWDeleteFile $(SystemDrive)"\Novell\ZENRC\talklg32.dll"

	LibraryProcedure GUIResult $(NwLibHandle) NWDeleteFile $(!STF_WINDOWSSYSPATH)"\drishti.dll"
	LibraryProcedure GUIResult $(NwLibHandle) NWDeleteFile $(!STF_WINDOWSSYSPATH)"\yukti.dll"
	LibraryProcedure GUIResult $(NwLibHandle) NWDeleteFile $(!STF_WINDOWSSYSPATH)"\zentray.exe"

	LibraryProcedure GUIResult $(NwLibHandle) NWDeleteFile $(!STF_WINDOWSSYSPATH)"\drivers\kbstuff.sys"

	LibraryProcedure GUIResult $(NwLibHandle) NWDeleteFile $(!STF_WINDOWSPATH)"\lwppro.ini"

	LibraryProcedure GUIResult $(NwLibHandle) NWDeleteFile $(SystemDrive)"\Novell\ZENRC\NLS\"$(NLSDirName)"\wsr32.dll"
	LibraryProcedure GUIResult $(NwLibHandle) NWDeleteFile $(SystemDrive)"\Novell\ZENRC\NLS\"$(NLSDirName)"\wusermsg.dll"
	LibraryProcedure GUIResult $(NwLibHandle) NWDeleteFile $(SystemDrive)"\Novell\ZENRC\NLS\"$(NLSDirName)"\rcagent.hlp"
	LibraryProcedure GUIResult $(NwLibHandle) NWDeleteFile $(SystemDrive)"\Novell\ZENRC\NLS\"$(NLSDirName)"\rcagent.cnt"
	LibraryProcedure GUIResult $(NwLibHandle) NWDeleteFile $(SystemDrive)"\Novell\ZENRC\NLS\"$(NLSDirName)"\sftplg32.dll"
	LibraryProcedure GUIResult $(NwLibHandle) NWDeleteFile $(SystemDrive)"\Novell\ZENRC\NLS\"$(NLSDirName)"\talklg32.dll"



	FreeLibrary $(NwLibHandle)

	goto end

;******************************************
;
;	Update the Novell WUser Agent
;
;******************************************
updatewua = +
	Debug-Output "****OEMNSVWA.INF:  Updating WUA"

	Debug-Output "OEMNSVWA.INF: Stopping Novell WUser Agent"
	LoadLibrary $(LoadDisk3Text) $(!STF_WINDOWSSYSPATH)"\"$(NwSetupDll) NwLibHandle
	LibraryProcedure GUIResult $(NwLibHandle) NWStopService $(ProductWUAName)
	FreeLibrary $(NwLibHandle)	

	set AddCopy	= "YES"
	set DoCopy	= "YES"

	Ifstr(i) $(DoCopy) == "YES"
AskSourceAgain = +

		;
		;  Get source location
		;

		set OldSTF_SRCDIR_OVERRIDE = $(!STF_SRCDIR_OVERRIDE)
		set !STF_SRCDIR_OVERRIDE = $(SrcDir)

		Shell "", DoAskSource, $(!STF_CWDDIR), $(SrcDir) NO
	
		Ifint $($ShellCode) != $(!SHELL_CODE_OK)
			Goto ShellCodeError
		Else-Ifstr(i) $($R0) == STATUS_FAILED
			Shell $(UtilityInf) RegistryErrorString "ASK_SOURCE_FAIL"
			ifint $($ShellCode) != $(!SHELL_CODE_OK)
				goto ShellCodeError
			endif
			set Error = $($R0)
			Goto fatal
		Else-Ifstr(i) $($R0) == STATUS_USERCANCEL
			Goto end
		Endif
	
		Set SrcDir = $($R1)
	
		LibraryProcedure STATUS, $(!LIBHANDLE), AppendBackSlash $(SrcDir)
	
		ifstr(i) $(STATUS) != "ERROR"
			set SrcDir = $(STATUS)
		Endif

		LibraryProcedure Status1, $(!LIBHANDLE), CheckFileExistance, $(SrcDir)nls\$(NLSDirName)"\OEMNSVWA.INF"
		ifstr(i) $(Status1) != "YES"
			goto AskSourceAgain
		endif
	Endif

	;
	; Create destination directories
	;

	install "Install-Dirs"

	;
	; Copy all files to destination
	;

	set AddCopy	= "YES"
	set DoCopy	= "YES"

	Install "Install-Files"
	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 AddCopy = $(OriginalAddCopy)
	set DoCopy  = $(OriginalDoCopy)

	Debug-Output "****OEMNSVWA.INF:  in UpdateWUA"
	ForListDo $(UpdateServiceNameList)
		Set UpdateSvcOpt = $($)
		Debug-Output "****OEMNSVWA.INF:  UpdateServiceNameList is "$(UpdateServiceNameList)
		Debug-Output "****OEMNSVWA.INF:  UpdateSvcOpt is "$(UpdateSvcOpt)

		;
		; Check to see if the product to be fixed is there
		;

		Set ProductKeyName = $(!NTN_ServiceBase)"\"$(Product$(UpdateSvcOpt)Name)
		Debug-Output "****OEMNSVWA.INF:  ProductKeyName is "$(ProductKeyName)
		OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) ProductKey
		ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
			Debug-Output "OEMNSVWA.INF:  "$(UpdateSvcOpt)" is installed, fix it up"

			;
			; Update the product software information
			;

			Set TempKeyName = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"$(Product$(UpdateSvcOpt)Name)"\CurrentVersion"
			OpenRegKey $(!REG_H_LOCAL) "" $(TempKeyName) $(MAXIMUM_ALLOWED) TempKey
			ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)

				;
				; Set the new major version number
				;

				SetRegValue $(TempKey) {"MajorVersion", $(NoTitle), $(!REG_VT_DWORD), $(ProductMajorVersion)}
				ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
					Debug-Output "OEMNSVWA.INF:  Failed to set new major version info for "$(UpdateSvcOpt)
				endif

				;
				; Set the new minor version number
				;

				SetRegValue $(TempKey) {"MinorVersion", $(NoTitle), $(!REG_VT_DWORD), $(ProductMinorVersion)}
				ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
					Debug-Output "OEMNSVWA.INF:  Failed to set new minor version info for "$(UpdateSvcOpt)
				endif

				;
				; Set the new description and title
				;

				SetRegValue $(TempKey) {"Description", $(NoTitle), $(!REG_VT_SZ), $(Product$(UpdateSvcOpt)DisplayName)}
				ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
					Debug-Output "OEMNSVWA.INF:  Failed to update Description for "$(UpdateSvcOpt)
				endif

				SetRegValue $(TempKey) {"Title", $(NoTitle), $(!REG_VT_SZ), $(Product$(UpdateSvcOpt)DisplayName)}
				ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
					Debug-Output "OEMNSVWA.INF:  Failed to update Title for "$(UpdateSvcOpt)
				endif

				;
				; Close the key
				;

				CloseRegKey $(TempKey)
			else
				Debug-Output "OEMNSVWA.INF:  Failed to open key "$(TempKeyName)
			endif

			;
			; Fix the display name
			;

			SetRegValue $(ProductKey) {"DisplayName", $(NoTitle), $(!REG_VT_SZ), $(Product$(UpdateSvcOpt)DisplayName)}
			ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
				Debug-Output "OEMNSVWA.INF:  Failed to update DisplayName for "$(UpdateSvcOpt)
			endif

			;
			; Set the correct path in the registry for the service that
			; got moved. wuser32.exe was changed from systemroot/system32 
			; to c:\novell\zenrc.
			;

			ifstr(i) $(UpdateSvcOpt) == "WUA"

				;
				; Set the new Image Path
				;

				Set ProductWUAImagePath = $(SystemDrive)"\Novell\ZENRC\wuser32.exe"
				SetRegValue $(ProductKey) {"ImagePath", $(NoTitle), $(!REG_VT_EXPAND_SZ), $(Product$(UpdateSvcOpt)ImagePath)}
				ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
					Debug-Output "OEMNSVWA.INF:  Failed to fix ImagePath for "$(UpdateSvcOpt)
				endif
			        Shell "" AddServiceDependency "Novell WUser Agent" "WM"
			endif

			;
			; Close the first key
			;
			CloseRegKey $(ProductKey)

			ifstr(i) $(UpdateSvcOpt) == "WUA"
				Set ProductWUAEventFile = $(SystemDrive)"\Novell\ZENRC\NLS\"$(NLSDirName)"\wusermsg.dll"
				Set TempKeyName = $(!NTN_ServiceBase)"\EventLog\Security\Novell WUser Agent"
				OpenRegKey $(!REG_H_LOCAL) "" $(TempKeyName) $(MAXIMUM_ALLOWED) TempKey
				ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
					SetRegValue $(TempKey) {"EventMessageFile", $(NoTitle), $(!REG_VT_EXPAND_SZ), $(ProductWUAEventFile)}
					CloseRegKey $(TempKey)
				else
					Debug-Output "OEMNPRNW.INF:  Failed to open "$(TempKeyName)
				endif
			endif
		endif

	EndForListDo

	;
	; Set up to install any services that were not part of a previous client.
	;

	ForListDo $(ServiceNameList)
		Set Do$($) = TRUE
	EndForListDo

	set CalledFromUpdate = "YES"
	goto InstallEnabledServices

ReturnToUpdate = +

	;
	;	Remove any repositioned RC files
	;
	LoadLibrary $(LoadDisk3Text) $(!STF_WINDOWSSYSPATH)"\"$(NwSetupDll) NwLibHandle
	LibraryProcedure GUIResult $(NwLibHandle) NWDeleteFile $(SystemDrive)"\Novell\ZENRC\wusermsg.dll"
	LibraryProcedure GUIResult $(NwLibHandle) NWDeleteFile $(SystemDrive)"\Novell\ZENRC\wsr32.dll"
	LibraryProcedure GUIResult $(NwLibHandle) NWDeleteFile $(SystemDrive)"\Novell\ZENRC\rcagent.hlp"
	LibraryProcedure GUIResult $(NwLibHandle) NWDeleteFile $(SystemDrive)"\Novell\ZENRC\rcagent.cnt"
	LibraryProcedure GUIResult $(NwLibHandle) NWDeleteFile $(SystemDrive)"\Novell\ZENRC\sftplg32.dll"
	LibraryProcedure GUIResult $(NwLibHandle) NWDeleteFile $(SystemDrive)"\Novell\ZENRC\talklg32.dll"
	FreeLibrary $(NwLibHandle)

	;
	;	Install various registry parameters
	;

	Install Install-Parameters

	;
	; Write out the unattended variables to registry
	;
	
	shell "" Write-Unattended-Variables

	ifint $($ShellCode) != $(!SHELL_CODE_OK)
		goto ShellCodeError
	else-ifstr(i) $($R0) != STATUS_SUCCESSFUL
		Debug-Output "OEMNSVWA:  User Canceled due to a error processing the Unattended Variables."
		set CommonStatus = STATUS_USERCANCEL
		goto setfailed
	endif

	set !STF_SRCDIR_OVERRIDE = $(OldSTF_SRCDIR_OVERRIDE)

	goto end


;******************************************
;
;	Common exit section
;
;******************************************
abandon = +
	Debug-Output "OEMNSVWA.INF: abandon"
	ForListDo $(OEM_ABANDON_OPTIONS)
		Shell $(UtilityInf), RemoveHardwareComponent, $(Manufacturer), $(ProductSoftwareName), $($)
		ifint $($ShellCode) != $(!SHELL_CODE_OK)
			Debug-Output "OEMNSVWA.INF: RemoveHardwareComponent ShellCode error "$($ShellCode)
			goto ShellCodeError
		endif
		set RegistryErrorIndex = $($R0)
		Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
			goto fatalregistry
		endif
	EndForListDo
	Ifstr(i) $(OEM_ABANDON_SOFTWARE) == TRUE
		Shell $(UtilityInf), RemoveSoftwareComponent, $(Manufacturer), $(ProductSoftwareName), FALSE
		ifint $($ShellCode) != $(!SHELL_CODE_OK)
			Debug-Output "OEMNSVWA.INF: RemoveSoftwareComponent ShellCode error "$($ShellCode)
			goto ShellCodeError
		endif
		set RegistryErrorIndex = $($R0)
		Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
			goto fatalregistry
		endif
	endif
	goto end


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
		goto "end"
	endif


nonfatal = +
	Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "NONFATAL", $(Error)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
		goto ShellCodeError
	endif
	ifstr(i) $($R1) == "OK"
		goto $(from)
	else
		goto "end"
	endif


fatalregistry = +
	Shell $(UtilityInf) RegistryErrorString $(RegistryErrorIndex)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
		goto ShellCodeError
	endif
	set Error = $($R0)
	goto fatal


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


ShellCodeError = +
	set DlgType		= "MessageBox"
	set STF_MB_TITLE	= $(ShellCodeErrorTitle)
	set STF_MB_TEXT		= $(ShellCodeErrorText)
	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
	ifstr(i) $(OEM_ABANDON_ON) == TRUE
		set OEM_ABANDON_ON = FALSE
		goto abandon
	endif
	goto end


end = +
	goto term


term = +
	Return $(CommonStatus) $(DriverToLoad)


;-----------------------------------------------------------------------
;
;
;	Additional installation and update processing for services
;
;
;-----------------------------------------------------------------------
[FinishInstalling-WUA]
Debug-Output "FinishInstalling-WUA"
set KeyWUA = $($0)

FlushRegKey $(KeyWUA)
ifstr(i) $(KeyWUA) != ""
	Debug-Output "Opened Key "$(KeyWUA)
	GetRegValue $(KeyWUA) "Type" ValueTypeList
	Debug-Output "TypeList = "$(ValueTypeList)
	set ValueType = *($(ValueTypeList),4)
	Debug-Output "Type = "$(ValueType)
	set-add ValueType = $(ValueType),256
	SetRegValue $(KeyWUA) {"Type",$(NoTitle),$(!REG_VT_DWORD),$(ValueType)}
Endif
Return

;-----------------------------------------------------------------------
;
;		SECTION:	Install-Files
;
;		PURPOSE:	Called at install or update to copy
;					files to the system
;
;		ARGUMENTS:	None
;
;		RETURNS:	None
;
;		REFERENCES:	None
;
;		MODIFIES:	None
;
;-----------------------------------------------------------------------
[Install-Dirs]
 	Debug-Output "OEMNSVWA.INF:  Creating file directories"
	CreateDir $(SystemDrive)"\Novell"
	CreateDir $(SystemDrive)"\Novell\ZENRC"
	CreateDir $(SystemDrive)"\Novell\ZENRC\NLS"
	CreateDir $(SystemDrive)"\Novell\ZENRC\NLS\"$(NLSDirName)
	Exit


[Install-Files]
 	Debug-Output "OEMNSVWA.INF:  Installing files"
	set STF_VITAL = ""

	Ifstr(i) $(AddCopy) == "YES"
		;
		; Add the files to the copy list
		;
		AddSectionFilesToCopyList Files-Inf-$(NLSDirName) 	 $(SrcDir)nls\$(NLSDirName)	$(!STF_WINDOWSSYSPATH)
		AddSectionFilesToCopyList Files-Drivers			 $(SrcDir)redir			$(!STF_WINDOWSSYSPATH)\drivers
		AddSectionFilesToCopyList Files-Zenrc		 	 $(SrcDir)redir			$(SystemDrive)\novell\zenrc
		AddSectionFilesToCopyList Files-Zenrc-$(NLSDirName)	 $(SrcDir)nls\$(NLSDirName)	$(SystemDrive)\novell\zenrc\nls\$(NLSDirName)
		AddSectionFilesToCopyList Files-System32	 	 $(SrcDir)redir			$(!STF_WINDOWSSYSPATH)
		AddSectionFilesToCopyList Files-NtRoot			 $(SrcDir)redir			$(!STF_WINDOWSPATH)
	 	Debug-Output "OEMNSVWA.INF:  Files added to list"
	Endif

	Ifstr(i) $(DoCopy) == "YES"
		;
		; Copy files in the copy list
		;
		set !STF_NCPA_FLUSH_COPYLIST = TRUE
		set !STF_NETCANCELOVERIDE = "YES"			 		; this line removes the cancel button
		CopyFilesInCopyList
	 	Debug-Output "OEMNSVWA.INF:  Files copied"
	Endif

	Exit

;******************************************
;
;	File copy information
;
;******************************************
[Source Media Descriptions]
	1	= "Novell Client for Windows NT Setup Disk 3",	TAGFILE = NWC_3

[Files-Inf-English]
	1,	OEMNSVWA.INF,	SIZE=50000,	DECOMPRESS

[Files-Inf-Chineses]
	1,	oemnsvwa.inf,	SIZE=50000,	DECOMPRESS

[Files-Inf-Chineset]
	1,	oemnsvwa.inf,	SIZE=50000,	DECOMPRESS

[Files-Inf-Deutsch]
	1,	oemnsvwa.inf,	SIZE=50000,	DECOMPRESS

[Files-Inf-Espanol]
	1,	oemnsvwa.inf,	SIZE=50000,	DECOMPRESS

[Files-Inf-Francais]
	1,	oemnsvwa.inf,	SIZE=50000,	DECOMPRESS

[Files-Inf-Italiano]
	1,	oemnsvwa.inf,	SIZE=50000,	DECOMPRESS

[Files-Inf-Korean]
	1,	oemnsvwa.inf,	SIZE=50000,	DECOMPRESS

[Files-Inf-Nihongo]
	1,	oemnsvwa.inf,	SIZE=50000,	DECOMPRESS

[Files-Inf-Portugue]
	1,	oemnsvwa.inf,	SIZE=50000,	DECOMPRESS

[Files-Inf-Russki]
	1,	oemnsvwa.inf,	SIZE=50000,	DECOMPRESS

[Files-Zenrc]
	1,	multprot.dll,	SIZE=50000,	DECOMPRESS
	1,	queuebuf.dll,	SIZE=50000,	DECOMPRESS
	1,	loc32vc.dll,	SIZE=50000,	DECOMPRESS
	1,	wuser32.exe,	SIZE=50000,	DECOMPRESS
	1,	zenpol32.dll,	SIZE=50000,	DECOMPRESS
	1,	diagnt.dll,	SIZE=50000,	DECOMPRESS
	1,	cmlwp32.dll,	SIZE=50000,	DECOMPRESS
	1,	lwpacc32.dll,	SIZE=50000,	DECOMPRESS
	1,	lwput32.dll,	SIZE=50000,	DECOMPRESS
	1,	srvftp32.acc,	SIZE=50000,	DECOMPRESS
	1,	srvftp32.exe,	SIZE=50000,	DECOMPRESS
	1,	wtalk32.exe,	SIZE=50000,	DECOMPRESS
	1,	utillg32.dll,	SIZE=50000,	DECOMPRESS

[Files-Zenrc-English]
	1,	wsr32.dll,	SIZE=50000,	DECOMPRESS
	1,	wusermsg.dll,	SIZE=50000,	DECOMPRESS
	1,	rcagent.hlp,	SIZE=50000,	DECOMPRESS
	1,	rcagent.cnt,	SIZE=50000,	DECOMPRESS
	1,	sftplg32.dll,	SIZE=50000,	DECOMPRESS
	1,	talklg32.dll,	SIZE=50000,	DECOMPRESS

[Files-Zenrc-Chineses]
	1,	wsr32.dll,	SIZE=50000,	DECOMPRESS
	1,	wusermsg.dll,	SIZE=50000,	DECOMPRESS
	1,	rcagent.hlp,	SIZE=50000,	DECOMPRESS
	1,	rcagent.cnt,	SIZE=50000,	DECOMPRESS
	1,	sftplg32.dll,	SIZE=50000,	DECOMPRESS
	1,	talklg32.dll,	SIZE=50000,	DECOMPRESS

[Files-Zenrc-Chineset]
	1,	wsr32.dll,	SIZE=50000,	DECOMPRESS
	1,	wusermsg.dll,	SIZE=50000,	DECOMPRESS
	1,	rcagent.hlp,	SIZE=50000,	DECOMPRESS
	1,	rcagent.cnt,	SIZE=50000,	DECOMPRESS
	1,	sftplg32.dll,	SIZE=50000,	DECOMPRESS
	1,	talklg32.dll,	SIZE=50000,	DECOMPRESS

[Files-Zenrc-Deutsch]
	1,	wsr32.dll,	SIZE=50000,	DECOMPRESS
	1,	wusermsg.dll,	SIZE=50000,	DECOMPRESS
	1,	rcagent.hlp,	SIZE=50000,	DECOMPRESS
	1,	rcagent.cnt,	SIZE=50000,	DECOMPRESS
	1,	sftplg32.dll,	SIZE=50000,	DECOMPRESS
	1,	talklg32.dll,	SIZE=50000,	DECOMPRESS

[Files-Zenrc-Espanol]
	1,	wsr32.dll,	SIZE=50000,	DECOMPRESS
	1,	wusermsg.dll,	SIZE=50000,	DECOMPRESS
	1,	rcagent.hlp,	SIZE=50000,	DECOMPRESS
	1,	rcagent.cnt,	SIZE=50000,	DECOMPRESS
	1,	sftplg32.dll,	SIZE=50000,	DECOMPRESS
	1,	talklg32.dll,	SIZE=50000,	DECOMPRESS

[Files-Zenrc-Francais]
	1,	wsr32.dll,	SIZE=50000,	DECOMPRESS
	1,	wusermsg.dll,	SIZE=50000,	DECOMPRESS
	1,	rcagent.hlp,	SIZE=50000,	DECOMPRESS
	1,	rcagent.cnt,	SIZE=50000,	DECOMPRESS
	1,	sftplg32.dll,	SIZE=50000,	DECOMPRESS
	1,	talklg32.dll,	SIZE=50000,	DECOMPRESS

[Files-Zenrc-Italiano]
	1,	wsr32.dll,	SIZE=50000,	DECOMPRESS
	1,	wusermsg.dll,	SIZE=50000,	DECOMPRESS
	1,	rcagent.hlp,	SIZE=50000,	DECOMPRESS
	1,	rcagent.cnt,	SIZE=50000,	DECOMPRESS
	1,	sftplg32.dll,	SIZE=50000,	DECOMPRESS
	1,	talklg32.dll,	SIZE=50000,	DECOMPRESS

[Files-Zenrc-Korean]
	1,	wsr32.dll,	SIZE=50000,	DECOMPRESS
	1,	wusermsg.dll,	SIZE=50000,	DECOMPRESS
	1,	rcagent.hlp,	SIZE=50000,	DECOMPRESS
	1,	rcagent.cnt,	SIZE=50000,	DECOMPRESS
	1,	sftplg32.dll,	SIZE=50000,	DECOMPRESS
	1,	talklg32.dll,	SIZE=50000,	DECOMPRESS

[Files-Zenrc-Nihongo]
	1,	wsr32.dll,	SIZE=50000,	DECOMPRESS
	1,	wusermsg.dll,	SIZE=50000,	DECOMPRESS
	1,	rcagent.hlp,	SIZE=50000,	DECOMPRESS
	1,	rcagent.cnt,	SIZE=50000,	DECOMPRESS
	1,	sftplg32.dll,	SIZE=50000,	DECOMPRESS
	1,	talklg32.dll,	SIZE=50000,	DECOMPRESS

[Files-Zenrc-Portugue]
	1,	wsr32.dll,	SIZE=50000,	DECOMPRESS
	1,	wusermsg.dll,	SIZE=50000,	DECOMPRESS
	1,	rcagent.hlp,	SIZE=50000,	DECOMPRESS
	1,	rcagent.cnt,	SIZE=50000,	DECOMPRESS
	1,	sftplg32.dll,	SIZE=50000,	DECOMPRESS
	1,	talklg32.dll,	SIZE=50000,	DECOMPRESS

[Files-Zenrc-Russki]
	1,	wsr32.dll,	SIZE=50000,	DECOMPRESS
	1,	wusermsg.dll,	SIZE=50000,	DECOMPRESS
	1,	rcagent.hlp,	SIZE=50000,	DECOMPRESS
	1,	rcagent.cnt,	SIZE=50000,	DECOMPRESS
	1,	sftplg32.dll,	SIZE=50000,	DECOMPRESS
	1,	talklg32.dll,	SIZE=50000,	DECOMPRESS

[Files-NtRoot]
	1,	lwppro.ini,	SIZE=50000,	DECOMPRESS

[Files-System32]
;	1,	drishti.dll,	SIZE=50000,	DECOMPRESS
	1,	yukti.dll,	SIZE=50000,	DECOMPRESS
	1,	zentray.exe,    SIZE=50000,	DECOMPRESS

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

;-----------------------------------------------------------------------
;
;		SECTION:	Install-Parameters
;
;		PURPOSE:	Called at install or update to add
;					various parameters to the registry
;
;		ARGUMENTS:	None
;					
;		RETURNS:	None
;
;		REFERENCES:	None
;
;		MODIFIES:	None
;
;-----------------------------------------------------------------------
[Install-Parameters]

	;
	; HKEY_LOCAL_MACHINE\Software\Novell\Novell WUser Agent\CurrentVersion
	;

	set TempKeyName = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\Novell WUser Agent\CurrentVersion"
	OpenRegKey $(!REG_H_LOCAL) "" $(TempKeyName) $(MAXIMUM_ALLOWED) TempKey
	ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
		;
		;	Set internal versions
		;
		set HaveInternalVersion = YES
		ifint $(!MajorInternalVersion) == 0
			ifint $(!MinorInternalVersion) == 0
				set HaveInternalVersion = NO
			endif
		endif
			
		ifstr(i) $(HaveInternalVersion) == NO
			DeleteRegValue $(TempKey) "MajorInternalVersion"
			DeleteRegValue $(TempKey) "MinorInternalVersion"
		else
			SetRegValue $(TempKey) {"MajorInternalVersion", $(NoTitle), $(!REG_VT_DWORD), $(!MajorInternalVersion)}
			Ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
				Debug-Output "OEMNSVWA.INF:  Unable to update MajorInternalVersion value in "$(TempKeyName)
			endif

			SetRegValue $(TempKey) {"MinorInternalVersion", $(NoTitle), $(!REG_VT_DWORD), $(!MinorInternalVersion)}
			Ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
				Debug-Output "OEMNSVWA.INF:  Unable to update MinorInternalVersion value in "$(TempKeyName)
			endif
		endif

        CloseRegKey $(TempKey)
	endif

	set TempKeyName = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\Z.E.N.works"
	OpenRegKey $(!REG_H_LOCAL) "" $(TempKeyName) $(MAXIMUM_ALLOWED) TempKey
	ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
		Debug-Output "OEMNSVWA.INF: Creating "$(TempKeyName)

		CreateRegKey $(!REG_H_LOCAL) {$(TempKeyName), $(NoTitle), GenericClass} "" $(MAXIMUM_ALLOWED) "" TempKey
		ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
			Debug-Output "OEMNSVWA.INF: Error creating "$(TempKeyName)
		Endif
	endif
	ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
		SetRegValue $(TempKey) {"ZENRCInstalled", $(NoTitle), $(!REG_VT_DWORD), 32}
		Ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
			Debug-Output "OEMNSVWA.INF:  Unable to update ZENRCInstalled in "$(TempKeyName)
		endif
	        CloseRegKey $(TempKey)
	endif

	set TempRegKeyName = "SOFTWARE\Microsoft\Windows\CurrentVersion\Run" 
	OpenRegKey $(!REG_H_LOCAL) ""  $(TempRegKeyName) $(MAXIMUM_ALLOWED) TmpKey
	ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)                                                          ; if no new key
		CreateRegKey $(!REG_H_LOCAL) {$(TempRegKeyName), $(NoTitle), GenericClass} "" $(MAXIMUM_ALLOWED) "" TmpKey
		ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)                                                  ; create new key
			Debug-Output "OEMNSVWA.INF: Failed to create Run for Remote Management"
			goto runerror1                                                                                                                  ; if error, then done
		endif
	endif                           
	Set CommandLine = "zentray.exe"
	SetRegValue $(TmpKey) {"ZENRC Tray Icon", $(NoTitle), $(!REG_VT_SZ), $(CommandLine)}
	ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
		Debug-Output "OEMNSVWA.INF: Failed to add Run for Remote Management"
	endif
	CloseRegKey $(TmpKey)
runerror1 = +

	set TmpRegKeyName = "HARDWARE\DEVICEMAP\VIDEO" 
	OpenRegKey $(!REG_H_LOCAL) ""  $(TmpRegKeyName) $(MAXIMUM_ALLOWED) TmpKey
	ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
		GetRegValue $(TmpKey) "\Device\Video0" VideoList
		Debug-OutPut "VideoList = "*($(VideoList), 4)
		ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
			set VideoData = *($(VideoList), 4)
			Debug-OutPut "VideoData = "$(VideoData)
			Split-String $(VideoData) "\" VideoReg1
			set TmpVideoKeyName = ""							
			ForListDo $(VideoReg1)
				ifint $(#) >= 6
					set TmpVideoKeyName = $(TmpVideoKeyName)$($)
				endif
			EndForListDo
			Debug-Output "OEMNSVWA.INF:  TmpVideoKeyName = "$(TmpVideoKeyName)
			OpenRegKey $(!REG_H_LOCAL) ""  $(TmpVideoKeyName) $(MAXIMUM_ALLOWED) TmpVideoKey
			ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
				GetRegValue $(TmpVideoKey) "InstalledDisplayDrivers" DriversList
				ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
					Debug-Output "***OEMNSVWA.INF:  DriversList = "$(DriversList)
					Debug-Output "***OEMNSVWA.INF:  DriversList4 = "*($(DriversList), 4)
					set DriversData = *($(DriversList), 4)
					Debug-Output "***OEMNSVWA.INF:  DriversData = "$(DriversData)
					Set FindValue = "drishti"
;new
					Set NewList  = {}
					set NewList2 = {}
					Ifcontains(i) $(FindValue) in $(DriversData)
;						Strip out all "drishti", incase every device is not paired up.
						ForListDo $(DriversData)
							Ifstr(i) $($) != $(FindValue)
								Set NewList = >($(NewList), $($))
							Endif
						EndForListDo
					else
						set NewList = $(DriversData)
					endif
					Debug-Output "***OEMNSVWA.INF:  NewList = "$(NewList)

;                                       Now, pair up all devices with "drishti"
					ForListDo $(NewList)
						Set NewList2 = >($(NewList2), "drishti")
						Set NewList2 = >($(NewList2),  $($))
						Debug-Output "********OEMNSVWA.INF:  NewList2 = "$(NewList2)
					EndForListDo

					Debug-Output "***OEMNSVWA.INF:  NewList2 = "$(NewList2)
					SetRegValue $(TmpVideoKey) {"InstalledDisplayDrivers", $(NoTitle), $(!REG_VT_MULTI_SZ), $(NewList2)}
					ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)                                                  ; create new key
						Debug-Output "OEMNSVWA.INF: 5). Failed to set drishti for Remote Management"
					endif
;new
				else
					Debug-Output "OEMNSVWA.INF: 4). Failed to set drishti for Remote Management"
				endif
			else
				Debug-Output "OEMNSVWA.INF: 3). Failed to set drishti for Remote Management"
			endif
		else
			Debug-Output "OEMNSVWA.INF: 2). Failed to set drishti for Remote Management"
		endif
	else
		Debug-Output "OEMNSVWA.INF: 1). Failed to set drishti for Remote Management"
	endif

	Ifstr(i) $(TmpVideoKey) != ""
		CloseRegKey $(TmpVideoKey)
	endif

	Ifstr(i) $(TmpKey) != ""
		CloseRegKey $(TmpKey)
	endif

	LoadLibrary $(LoadDisk3Text) $(!STF_WINDOWSSYSPATH)"\"$(NwSetupDll) NwLibHandle
	LibraryProcedure GUIResult $(NwLibHandle) NWModifyIniFile "LWPAccess", "SRVFTP32AccessFile", $(SystemDrive)"\novell\zenrc\srvftp32.acc", $(!STF_WINDOWSPATH)"\lwppro.ini"
	FreeLibrary $(NwLibHandle)	

	Exit

;-----------------------------------------------------------------------
;
;               SECTION:        DoAskSource
;
;               PURPOSE:        Called at install and update time to 
;                               prompt for the source location
;
;               ARGUMENTS:      None
;                                       
;               RETURNS:        None
;
;               REFERENCES:     None
;
;               MODIFIES:       None
;
;-----------------------------------------------------------------------
[DoAskSource]
	read-syms GeneralConstants
	read-syms FileConstants
	read-syms FileConstants$(!STF_LANGUAGE)
	read-syms InstallOption$(!STF_LANGUAGE)
	read-syms DoAskSource$(!STF_LANGUAGE)

	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
	Else
		set SourcePathName = $(!NTN_SoftwareBase)"\Microsoft\Windows NT\CurrentVersion"
		OpenRegKey $(!REG_H_LOCAL) "" $(SourcePathName) $(MAXIMUM_ALLOWED) SourcePathKey
		ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
			GetRegValue $(SourcePathKey) "SourcePath" SourcePathList
			ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
				set SourcePath = *($(SourcePathList), 4)
				ifstr(i) $(DAS_SRCDIR) == $(SourcePath)
					set NWSourcePathName = $(!NTN_SoftwareBase)"\Novell\NetWareWorkstation\CurrentVersion"
					OpenRegKey $(!REG_H_LOCAL) "" $(NWSourcePathName) $(MAXIMUM_ALLOWED) NWSourcePathKey
					ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
						GetRegValue $(NWSourcePathKey) "SourcePath" NWSourcePathList
						ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
							set NWSourcePath = *($(NWSourcePathList), 4)
							ifstr(i) $(NWSourcePath) != ""
								set DAS_SRCDIR = $(NWSourcePath)
							endif
						endif
				        CloseRegKey $(NWSourcePathKey)
					endif
				endif
			endif
	        CloseRegKey $(SourcePathKey)
		endif
	Endif
	Debug-Output "OEMNXPGW.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
	Shell "subroutn.inf" DoAskSourceEx $(DAS_SRCDIR) $(NetWareDlgText)
	ifint $($ShellCode) != $(!SHELL_CODE_OK)
		Debug-Output "OEMNXPGW.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)
	
;-----------------------------------------------------------------------
;
;
;		SECTION:		UnattendedInstallOption:
;
;		PURPOSE:		This section is shelled to by the Install Option.  It looks at the three MS Unattended variables and then
;		sets the Novell specific variable for NWACU and the NWUnattended file.
;		Our install for both setup.exe /ACU and Unattended install from MS then uses NWACU and the NWUnattended variables.
;
;		ARGUMENTS:	None
;
;		RETURNS:		None
;
;		REFERENCES:	None
;
;		MODIFIES:	None
;
;-----------------------------------------------------------------------
[UnattendedInstallOption]

	read-syms GeneralConstants
	read-syms FileConstants

	ifstr(i) $(!STF_GUI_UNATTENDED) == "NO"
		ifstr(i) $(!STF_UNATTENDED) == "YES"
			set !NWACU = "YES"
		endif
	else-ifstr(i) $(!STF_GUI_UNATTENDED) == "YES"
		ifstr(i) $(!NWUnattendedFile) == ""
			set !NWACU = "YES"
			set !NWUnattendedFile = $(!STF_UNATTENDED)
			set !NWUnattendedSection = $(!STF_UNATTENDED_SECTION)
		else-ifstr(i) $(!STF_UNATTENDED_SECTION) != ""
			set !NWUnattendedSection = $(!STF_UNATTENDED_SECTION)
		endif
	endif

Return


;*************************************************************************
;----------Write-Unattended-Variables-----------------------------------
;
;
;		SECTION:		Write-Unattended-Variables:
;
;		PURPOSE:		This section writes the unattended variables to the
;						registry.
;
;		ARGUMENTS:	None
;
;		RETURNS:		None
;
;		REFERENCES:	Called at end of install section and the update section
;
;		MODIFIES:	None
;
;*************************************************************************
[Write-Unattended-Variables]
	read-syms GeneralConstants
	read-syms FileConstants
	read-syms InstallOption$(!STF_LANGUAGE)

	;	If the /U parameter is passed from Setupnw.exe then call this section to set the defaults.
	;	Add the values in the unattended file to the registry.
	set UnattendReturnStatus = STATUS_SUCCESSFUL

	ifstr(i) $(!NWUnattendedFile) != ""
		LoadLibrary $(LoadDisk3Text) $(!STF_WINDOWSSYSPATH)"\"$(NwSetupDll) NwLibHandle
		SetHelpFile $(!STF_WINDOWSSYSPATH)"\nls\"$(!P:NLSDirName)"\nt4setup.hlp" $(!MinimumID) $(!MaximumID)

		LibraryProcedure LibResult $(NwLibHandle) NWUnattendedInstall $(!NWUnattendedFile) $(!P:Option)

		FreeLibrary $(NwLibHandle)
	endif

Return $(UnattendReturnStatus)


[AddServiceDependency]
    Debug-Output "AddServiceDependency: entry"
    set MAXIMUM_ALLOWED = 33554432
    set SERVICE_NO_CHANGE = 4294967295
    set Status   = STATUS_FAILED
    Set KeyNull  = ""
    set DependentService = $(!NTN_ServiceBase)\$($0)
    set DependentName = $($0)
    set DependOn = $($1)
    set ServiceKey = $(KeyNull)
    OpenRegKey $(!REG_H_LOCAL) "" $(DependentService)"\Linkage" $(MAXIMUM_ALLOWED) ServiceKey
    ifstr(i) $(ServiceKey) != $(KeyNull)
        GetRegValue $(ServiceKey) "OtherDependencies" ServicesList
        ifint $(RegLastError) != 0
           set ServiceValues = {}
        else
           set ServiceValues = *($(ServicesList),4)
        endif
        debug-output "AddServiceDependency: Old OtherDependencies: "$(ServiceValues)
        ifstr(i) $(ServiceValues) == {}
            Set ServiceValues = {$(DependOn)}
        else-ifstr(i) $(ServiceValues) == ""
            Set ServiceValues = {$(DependOn)}
        else-ifcontains(i) $(DependOn) in $(ServiceValues)
            return STATUS_SUCCESSFUL
        else
            Set ServiceValues = >($(ServiceValues), $(DependOn))
        endif
        debug-output "AddServiceDependency: New OtherDependencies: "$(ServiceValues)
        SetRegValue $(ServiceKey) {OtherDependencies, 0,+
                                   $(!REG_VT_MULTI_SZ), $(ServiceValues)}
        CloseRegKey $(ServiceKey)
        set Status = STATUS_SUCCESSFUL
    else
        Debug-Output "AddServiceDependency: error opening service "$(DependentService)"\Linkage"
        Debug-Output "AddServiceDependency: error was: "$(RegLastError)
    endif
    set KeyService = $(KeyNull)
    OpenRegKey $(!REG_H_LOCAL) "" $(DependentService) $(MAXIMUM_ALLOWED) KeyService
    ifstr $(KeyService) != $(KeyNull)
        set newDependList = {$(DependOn)}
        GetRegValue    $(KeyService) "DependOnService" ServiceList
        ifint $(RegLastError) == 0
            Debug-Output "AddServiceDependency: old DependOnService List "*($(ServiceList), 4)
            ForListDo *($(ServiceList),4)
                ifstr(i) $($) != $(DependOn)
                   set newDependList = >($(newDependList), $($))
                endif
            EndForListDo
        endif
        GetRegValue    $(KeyService) "DependOnGroup" GrpList
        ifint $(RegLastError) == 0
            Debug-Output "AddServiceDependency: old DependOnGroup List "*($(GrpList), 4)
            ForListDo *($(GrpList),4)
               set grp = "+"$($)
               set newDependList = >($(newDependList), $(grp))
            EndForListDo
        endif
        Debug-Output "OEMNSVRA.INF: AddServiceDependency: new Dependency List "$(newDependList)
        LibraryProcedure Result, $(!LIBHANDLE), SetupChangeServiceConfig, $(DependentName) $(SERVICE_NO_CHANGE), $(SERVICE_NO_CHANGE), $(SERVICE_NO_CHANGE), "", "", $(newDependList), "", "", ""
        CloseRegKey $(KeyService)
    else
        Debug-Output "AddServiceDependency: failed to open service linkage key"$(DependentService)
        Debug-Output "AddServiceDependency: error was: "$(RegLastError)
    endif
    Debug-Output "AddServiceDependency: exit"
    return $(Status)

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

[OptionsTextENG]
	WUA	= "Remote management"

[FileConstantsENG]
	;
	; Producer Info
	;
	
	FunctionTitle	= "Remote management"

	;
	; Service Info
	;	
	
	ProductWUADisplayName	= "Remote management"
	ProductWUADescription	= "Remote management allows an administrator to remotely control workstations. It depends on Workstation Manager in order to function."

	ProductKBSTUFFDisplayName	= "Remote management Keyboard Driver"
	ProductKBSTUFFDescription	= "Remote management Keyboard Driver"

	;
	;  Variables to support thermometer gauge and error dialogs
	;
	
	ProCaption	= "Remote management for Windows NT Setup"
	ProCancel	= "Cancel"
	ProCancelMsg	= "Remote management for Windows NT is not "+
		"correctly installed.  Are you sure you want to cancel "+
		"copying files?"
	ProCancelCap	= "Network Setup Message"
	ProText1	= "Copying:"
	ProText2	= "To:"
	
[ProgressCopyENG]
	!p:ProCaption	= "Remote management for Windows NT Setup"
	!p:ProCancel	= "Cancel"
	!p:ProCancelMsg	= "Remote management 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."

[InstallOptionENG]
	ErrorMessageTitle 	= "Remote management Install Error"

	ShellCodeErrorTitle 	= "Error:  Remote management Install"

	ShellCodeErrorText 	= "Shell Code Error"

	LoadDisk3Text 		= "Please load the Novell Client for Windows NT "+
				  "disk 3 into drive "

	NetWareClientNotInstalledMessage = "You must install the Novell Client for Windows NT before this product can be installed."

	NetWareWUAOnASMessageText = "Remote management is only supported with the "+
		"workstation versions of Microsoft Windows NT.  It is NOT supported "+
		"with the Advanced Server versions."

	UnattendFileReadFailed = "Read File Error while trying to read and "+
		"initialize either the Novell ACU options and/or the Novell Client parameters "+
		"from the Unattended file.  The Novell Client parameters will not "+
		"be set in the registry, and any ACU installation options will not "+
		"install.  Press CANCEL to Abort the installation and correct the "+
		"syntax errors in the UNATTEND.TXT file.  Press OK to manually "+
		"complete the install of the Novell NT Client without setting the "+
		"Client parameters."

[DoAskSourceENG]
	NetWareDlgText = "Please enter the full path to the Novell "+
		"Client for Windows NT distribution files.  Then choose Continue."

