[Identification] OptionType = NetService [Options] NWWKSTA [FileConstants] UtilityInf = "UTILITY.INF" subroutineinf = "SUBROUTN.INF" SoftwareType = "service" Exit_Code = 0 NetwareEventDLL = "%SystemRoot%\System32\nwevent.dll" Manufacturer = "Microsoft" ProductMajorVersion = "4" ProductMinorVersion = "0" ProductVersion = $(ProductMajorVersion)"."$(ProductMinorVersion) ProductOpSupport = 132 ; 0x0084 ; Display,Removable,NOT Properties,Not Updatable ProductNWWKSTAName = "NWCWorkstation" ProductNWWKSTAImagePath = "%SystemRoot%\System32\services.exe" NetRuleNWWKSTAType = "nwWsta nwcWorkstation" NetRuleNWWKSTAClass = {"nwcWorkstation basic"} NetRuleNWWKSTABindable = {"nwcWorkstation nwlinkipxTransport non non 100"} NetRuleNWWKSTAUse = $(SoftwareType)" no no" NetRuleNWWKSTABindForm = """NwcWorkstation"" yes yes container" ProductNWRDRName = "NwRdr" ProductNWRDRImagePath = "\SystemRoot\System32\drivers\nwrdr.sys" ProductProviderImagePath = "%SystemRoot%\System32\nwprovau.dll" ProviderName = $(ProductNWWKSTAName) ProductKeyName = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"$(Product$(Option)Name)"\CurrentVersion" ParamKeyName = $(!NTN_ServiceBase)"\"$(Product$(Option)Name)"\Parameters" LSAKeyName = "System\CurrentControlSet\Control\LSA" [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) DriverPath = $(!STF_NTPATH)\drivers [date] Now = {} ? $(!LIBHANDLE) GetSystemDate [DetectDiskSpace] VolumeList = {} ? $(!LIBHANDLE) GetHardDriveLetters VolumeFreeList = {} ? $(!LIBHANDLE) GetHardDriveFreeSpace VolumeFSList = {} ? $(!LIBHANDLE) GetHardDriveFileSystems [DetectSystemMemory] SystemMemory = "" ? $(!LIBHANDLE) GetMemorySize [Identify] read-syms Identification set Status = STATUS_SUCCESSFUL set Identifier = $(OptionType) set Media = #("Source Media Descriptions", 1, 1) Return $(Status) $(Identifier) $(Media) [ReturnOptions] set Status = STATUS_FAILED set OptionList = {} set OptionTextList = {} set LanguageList = ^(LanguagesSupported, 1) Ifcontains(i) $($0) in $(LanguageList) goto returnoptions else set Status = STATUS_NOLANGUAGE goto finish_ReturnOptions endif returnoptions = + set OptionList = ^(Options, 1) ifstr(i) $(!STF_PRODUCT) == "WINNT" set OptionTextList = ^(OptionsWINNTText$($0), 1) else set OptionTextList = ^(OptionsLANMANNTText$($0), 1) endif set Status = STATUS_SUCCESSFUL finish_ReturnOptions = + Return $(Status) $(OptionList) $(OptionTextList) [InstallOption] set Option = $($1) set SrcDir = $($2) set AddCopy = $($3) set DoCopy = $($4) set DoConfig = $($5) set LanguageList = ^(LanguagesSupported, 1) Ifcontains(i) $($0) NOT-IN $(LanguageList) Return STATUS_NOLANGUAGE endif Debug-Output "OEMNSVNW.INF: STF_CWDDIR is: "$(!STF_CWDDIR) Debug-Output "OEMNSVNW.INF: STF_LANGUAGE is: "$(!STF_LANGUAGE) set-subst LF = "\n" set-subst CR = "\r" ifstr(i) $(!STF_PRODUCT) == "WINNT" read-syms Workstation$($0) else read-syms Gateway$($0) endif 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 detect DetectSystemMemory detect DetectDiskSpace set-title $(FunctionTitle) set to = Begin set from = Begin set CommonStatus = STATUS_SUCCESSFUL EndWait Begin = + Ifstr(i) $(!NTN_InstallMode) == deinstall set OEM_ABANDON_OPTIONS = { $(ProductNWWKSTAName), + $(ProductNWRDRName)} set StartLabel = removeadapter else-Ifstr(i) $(!NTN_InstallMode) == Update set StartLabel = UpgradeSoftware else-Ifstr(i) $(!NTN_InstallMode) == bind set StartLabel = bindingadapter else-Ifstr(i) $(!NTN_InstallMode) == configure Shell $(UtilityInf),RegistryErrorString,CANNOT_CONFIGURE_SOFTWARE ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "OEMNSVNW.INF: ShellCode error: cannot get an error string." goto ShellCodeError endif set Error = $($R0) set from = end set to = end goto nonfatalinfo else set StartLabel = installadapter set OEM_ABANDON_OPTIONS = {} endif set DoWKSTA = FALSE set DoRDR = FALSE set DoNWLINK = FALSE Ifstr(i) $(Option) == NWWKSTA set DoWKSTA = TRUE set DoRDR = TRUE set DoNWLINK = TRUE Else-ifstr(i) $(Option) == RDR Set DoRDR = TRUE Else Debug-Output "OEMNSVWK.INF: Unrecognized option" Endif set from = $(fatal) set to = $(fatal) goto $(StartLabel) installadapter = + GetDriveInPath NtDrive $(!STF_WINDOWSSYSPATH) Shell "" GetFilesSize set RequiredSize = $($R0) ForListDo $(VolumeList) set CurrentVolume = *($(VolumeList), $(#)) set CurrentVolumeFree = *($(VolumeFreeList), $(#)) Ifstr(i) $(CurrentVolume) == $(NtDrive) set-mul CurrentVolumeFree = $(CurrentVolumeFree) 1024 Ifint $(CurrentVolumeFree) < $(RequiredSize) Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "NONFATAL", $(NotEnoughSpace) ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif goto end else goto AfterCheckSpace endif EndIf EndForListDo AfterCheckSpace = + Ifstr(i) $(DoCopy) == "YES" Shell $(UtilityInf), 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) Endif set NwlnkName = "NWLINKIPX" OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\NWLINKIPX" $(MAXIMUM_ALLOWED) BS_KeyServices Ifstr $(BS_KeyServices) == $(KeyNull) ; ;Check for new NWLNKIPX ; set NwlnkName = "NWLNKIPX" OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\NWLNKIPX" $(MAXIMUM_ALLOWED) BS_KeyServices Ifstr $(BS_KeyServices) == $(KeyNull) ; ; Set up nwlink for the user ; Shell "oemnxpip.inf" ReturnOptions $(!STF_LANGUAGE) ifstr(i) $($R0) == STATUS_SUCCESSFUL set OldStfSrcDir = $(!STF_SRCDIR_OVERRIDE) set !STF_SRCDIR_OVERRIDE = "" set NwlnkName = *($($R1),1) Shell "oemnxpip.inf" InstallOption $(!STF_LANGUAGE), *($($R1),1),+ $(SrcDir), $(AddCopy), "NO", $(DoConfig) set !STF_SRCDIR_OVERRIDE = $(OldStfSrcDir) else Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "NONFATAL", $(InstallNWLINKFirst) ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif goto end endif else CloseRegKey $(BS_KeyServices) endif else CloseRegKey $(BS_KeyServices) endif OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct Ifstr $(KeyProduct) != $(KeyNull) CloseRegKey $(KeyProduct) Shell $(UtilityInf), VerExistedDlg, $(Product$(Option)Title),+ $(ProductVersion) ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "OEMNSVNW.INF: ShellCode error: cannot get an error string." goto ShellCodeError endif goto end endif CloseRegKey $(KeyProduct) ; ; Check to make sure that NETWAREWORKSTATION is not there ; OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\NetwareWorkstation" $(MAXIMUM_ALLOWED) BS_KeyServices Ifstr $(BS_KeyServices) == $(KeyNull) ; ; Good. Let check the "Mark for deletion" service controller problem. ; Shell $(UtilityInf), CreateService, + "NetwareWorkstation", + $(ProductNWWKSTADisplayName), + $(ProductNWWKSTAImagePath), "autoserviceshare", "NetworkProvider", {}, "",+ $(NetwareEventDLL) ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "OEMNSVNW.INF: ShellCode error" goto ShellCodeError endif debug-output $($R0) set RegistryErrorIndex = $($R0) ifstr(i) $(RegistryErrorIndex) != NO_ERROR ; ; it is still there ; Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "NONFATAL", $(RemoveAndReboot) ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif goto end else Shell $(UtilityInf) RemoveService "NetwareWorkstation" "YES" endif else Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "NONFATAL", $(RemoveAndReboot) ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif CloseRegKey $(BS_KeyServices) goto end endif goto nextstep nextstep = + StartWait Ifstr(i) $(!NTN_InstallMode) == install Ifint $(OldVersionExisted) == $(FALSE) goto installproduct endif endif goto writeparameters installproduct = + CloseRegKey $(ParamKeyName) ifstr(i) $(!NTN_InstallMode) == "install" install "Install-nwcfgdll" 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 endif set OEM_ABANDON_ON = TRUE LoadLibrary "nw" $(!STF_CWDDIR)\nwcfg.dll !NWCFG_HANDLE Set FLibraryErrCtl = 1 ifstr(i) $(!NTN_InstallMode) == "install" 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 endif LibraryProcedure Result $(!NWCFG_HANDLE), SetupRegistryForNWCS LibraryProcedure Result $(!NWCFG_HANDLE), AddNetwarePrinterProvidor ; ; Added Displayname ; OpenRegKey $(!REG_H_LOCAL) "" "System\CurrentControlSet\Control\Print\Providers\"$(ProductPrintProviderName) $(MAXIMUM_ALLOWED) PrintProviderKey ifstr(i) $(PrintProviderKey) != $(KeyNull) SetRegValue $(PrintProviderKey) {"DisplayName",$(NoTitle),$(!REG_VT_SZ),$(ProductPrintProviderName)} CloseRegKey $(PrintProviderKey) endif Set FLibraryErrCtl = 0 ; ; Change netware to the top provider ; OpenRegKey $(!REG_H_LOCAL) "" "System\CurrentControlSet\Control\Print\Providers" $(MAXIMUM_ALLOWED) PrintProviderKey Ifstr $(PrintProviderKey) != $(KeyNull) GetRegValue $(PrintProviderKey),"Order",OrderInfo set OrderList = *($(OrderInfo),4) set NewOrderList = {$(ProductPrintProviderName)} ForListDo $(OrderList) ifstr(i) $($) != $(ProductPrintProviderName) set NewOrderList = >($(NewOrderList),$($)) endif EndForListDo SetRegValue $(PrintProviderKey) {"Order",$(NoTitle),$(!REG_VT_MULTI_SZ),$(NewOrderList)} CloseRegKey $(PrintProviderKey) endif ; ; Set Authentication packages ; OpenRegKey $(!REG_H_LOCAL) "" $(LSAKeyName) $(MAXIMUM_ALLOWED) LSAKey Ifstr $(LSAKey) != $(KeyNull) GetRegValue $(LSAKey),"Authentication Packages", PackagesInfo set Packages = *($(PackagesInfo), 4) ifcontains(i) "nwprovau" in $(Packages) ; don't do it debug-output "Authentication Packages already exist." else ifstr(i) $(Packages) == "" set Packages = {"nwprovau"} else set Packages = >($(Packages),"nwprovau") endif SetRegValue $(LSAKey) {"Authentication Packages",$(NoTitle),$(!REG_VT_MULTI_SZ),$(Packages)} endif CloseRegKey $(LSAKey) endif ifstr(i) $(DoWKSTA) == TRUE Debug-Output "OEMNSVNW.INF: Install Workstation in registry." Set OEM_ABANDON_OPTIONS = >($(OEM_ABANDON_OPTIONS), $(ProductNWWKSTAName)) Shell $(UtilityInf), AddSoftwareComponent, $(Manufacturer), + $(ProductNWWKSTAName), + $(ProductNWWKSTAName), + $(ProductNWWKSTADisplayName), $(STF_CONTEXTINFNAME), + $(ProductNWWKSTAImagePath), "autoserviceshare", "NetworkProvider", {}, "",+ $(NetwareEventDLL) ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "OEMNSVNW.INF: ShellCode error" goto ShellCodeError endif set RegistryErrorIndex = $($R0) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR EndWait Debug-Output "OEMNSVNW.INF: Registry error: add software components" CloseRegKey $($R1) CloseRegKey $($R2) CloseRegKey $($R3) CloseRegKey $($R4) CloseRegKey $($R5) goto fatalregistry endif Set SoftProductKey = $($R1) Set SoftNetRuleKey = $($R2) Set SoftServiceKey = $($R3) Set SoftParameterKey = $($R4) Set SoftLinkageKey = $($R5) set NewValueList = {{SoftwareType,$(NoTitle),$(!REG_VT_SZ),$(SoftwareType)},+ {MajorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMajorVersion)},+ {MinorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMinorVersion)},+ {Title,$(NoTitle),$(!REG_VT_SZ),$(ProductNWWKSTATitle)},+ {Description,$(NoTitle),$(!REG_VT_SZ),$(ProductNWWKSTADescription)},+ {ServiceName,$(NoTitle),$(!REG_VT_SZ),$(ProductNWWKSTAName)},+ {OperationsSupport,$(NoTitle),$(!REG_VT_DWORD),$(ProductOpSupport)}, + {InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)}} Shell $(UtilityInf), AddValueList, $(SoftProductKey), $(NewValueList) ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "OEMNSVNW.INF: ShellCode error." goto ShellCodeError endif set RegistryErrorIndex = $($R0) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR EndWait Debug-Output "OEMNSVNW.INF: registry error: add value list." CloseRegKey $(SoftProductKey) CloseRegKey $(SoftNetRuleKey) CloseRegKey $(SoftServiceKey) CloseRegKey $(SoftLinkageKey) CloseRegKey $(SoftParameterKey) goto fatalregistry endif set NewValueList = {{type,$(NoTitle),$(!REG_VT_SZ),$(NetRuleNWWKSTAType)},+ {class,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleNWWKSTAClass)}, + {use,$(NoTitle),$(!REG_VT_SZ),$(NetRuleNWWKSTAUse)}, + {bindform,$(NoTitle),$(!REG_VT_SZ),$(NetRuleNWWKSTABindForm)}, + {bindable,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleNWWKSTABindable)}, + {InfOption,$(NoTitle),$(!REG_VT_SZ),NWWKSTA}} Shell $(UtilityInf), AddValueList, $(SoftNetRuleKey), $(NewValueList) ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "OEMNSVNW.INF: ShellCode error." goto ShellCodeError endif set RegistryErrorIndex = $($R0) CloseRegKey $(SoftProductKey) CloseRegKey $(SoftNetRuleKey) CloseRegKey $(SoftServiceKey) Shell "" AddParameterKey $(SoftParameterKey) CloseRegKey $(SoftParameterKey) CloseRegKey $(SoftLinkageKey) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR EndWait Debug-Output "OEMNSVNW.INF: Registry error: add value list." goto fatalregistry endif ; Remove autoexec.nt statements ; Set FLibraryErrCtl = 1 set FoundAutoExec = TRUE set AutoExecName = "autoexec.nt" LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(!STF_WINDOWSSYSPATH)"\"$(AutoExecName) ifstr(i) $(STATUS) == NO set AutoExecName = "autoexec.tmp" LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(!STF_WINDOWSSYSPATH)"\"$(AutoExecName) ifstr(i) $(STATUS) == NO set FoundAutoExec = FALSE endif endif ifstr(i) $(FoundAutoExec) == TRUE LibraryProcedure Result $(!NWCFG_HANDLE), RemoveSzFromFile, $(!STF_WINDOWSSYSPATH)"\"$(AutoExecName), $(REM1)$(LF) LibraryProcedure Result $(!NWCFG_HANDLE), RemoveSzFromFile, $(!STF_WINDOWSSYSPATH)"\"$(AutoExecName), "lh %SystemRoot%\system32\nw16"$(LF) LibraryProcedure Result $(!NWCFG_HANDLE), RemoveSzFromFile, $(!STF_WINDOWSSYSPATH)"\"$(AutoExecName), "lh %SystemRoot%\system32\vwipxspx"$(LF) ; ; Setup string in autoexec.nt ; LibraryProcedure Result $(!NWCFG_HANDLE), AppendSzToFile, $(!STF_WINDOWSSYSPATH)"\"$(AutoExecName), $(REM1)$(CR)$(LF) LibraryProcedure Result $(!NWCFG_HANDLE), AppendSzToFile, $(!STF_WINDOWSSYSPATH)"\"$(AutoExecName), "lh %SystemRoot%\system32\nw16"$(CR)$(LF) LibraryProcedure Result $(!NWCFG_HANDLE), AppendSzToFile, $(!STF_WINDOWSSYSPATH)"\"$(AutoExecName), "lh %SystemRoot%\system32\vwipxspx"$(CR)$(LF) endif Set FLibraryErrCtl = 0 endif ifstr(i) $(DoNWLINK) == TRUE ; ; Increase the reference counter ; Shell "utility.inf", IncrementRefCount, "Software\Microsoft\"$(NwlnkName)"\CurrentVersion" endif ifstr(i) $(DoRDR) == TRUE Debug-Output "OEMNSVNW.INF: Install Rdr registry" Set OEM_ABANDON_OPTIONS = >($(OEM_ABANDON_OPTIONS), $(ProductNWRDRName)) Shell $(UtilityInf), CreateService, $(ProductNWRDRName), + $(ProductNWRDRDisplayName), $(ProductNWRDRImagePath), + "system", "Network", {}, "", + $(NetwareEventDLL) ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "OEMNSVNW.INF: ShellCode error" goto ShellCodeError endif set RegistryErrorIndex = $($R0) set NWRdrServiceKey = $($R1) CloseRegKey $($R2) CloseRegKey $($R3) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR EndWait Debug-Output "OEMNSVNW.INF: Registry error: add software components" goto fatalregistry endif ; ; Add performance monitoring info ; CreateRegKey $(NWRdrServiceKey) {"Performance",$(NoTitle),GenericClass} "" + $(MAXIMUM_ALLOWED) "" KeyPerformance set NewValueList = {{Library,$(NoTitle),$(!REG_VT_SZ),"Perfnw.dll"},+ {Open,$(NoTitle),$(!REG_VT_SZ),"OpenNetWarePerformanceData"},+ {Collect,$(NoTitle),$(!REG_VT_SZ),"CollectNetWarePerformanceData"},+ {Close,$(NoTitle),$(!REG_VT_SZ),"CloseNetWarePerformanceData"}} Shell $(UtilityInf), AddValueList, $(KeyPerformance), $(NewValueList) set RegistryErrorIndex = $($R0) CloseRegKey $(KeyPerformance) CloseRegKey $(NWRdrServiceKey) ; ; Create performance help information ; LibraryProcedure Result $(!NWCFG_HANDLE), GetKernelVersion ifint *($(Result),3) < 529 Set FLibraryErrCtl = 1 LibraryProcedure STATUS $(!NWCFG_HANDLE), lodctr $(!STF_WINDOWSSYSPATH)\nwperf.ini ; Ignore the error code for now Set FLibraryErrCtl = 0 endif Ifstr(i) $(RegistryErrorIndex) != NO_ERROR EndWait Debug-Output "OEMNSVNW.INF: Registry error: add performance information" goto fatalregistry endif Debug-Output "OEMNSVNW.INF: Add NetworkProvider" Shell $(UtilityInf), AddNetworkProvider, $(ProviderName), + $(ProductProviderImagePath), $(ProductProviderDisplayName), "nwrdr" set RegistryErrorIndex = $($R0) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR EndWait Debug-Output "OEMNSVNW.INF: Registry error: add software components" goto fatalregistry endif ; ; Put netware provider to the top of the order list ; OpenRegKey $(!REG_H_LOCAL) "" "System\CurrentControlSet\Control\NetworkProvider\Order" $(MAXIMUM_ALLOWED) NetProviderKey Ifstr $(NetProviderKey) != $(KeyNull) GetRegValue $(NetProviderKey),"ProviderOrder",OrderInfo set OrderList = *($(OrderInfo),4) Split-String $(OrderList), ",", ProviderList set NewOrderList = $(ProductNWWKSTAName) ForListDo $(ProviderList) ifstr(i) $($) != "," ifstr(i) $($) != $(ProductNWWKSTAName) set NewOrderList = $(NewOrderList)","$($) endif endif EndForListDo SetRegValue $(NetProviderKey) {"ProviderOrder",$(NoTitle),$(!REG_VT_SZ),$(NewOrderList)} CloseRegKey $(NetProviderKey) endif Shell "" AddShortName ; ; Rpc Stuff ; Shell $(UtilityInf) AddServerRpcProtocol "ncadg_ipx" "rpclt1.dll" Shell $(UtilityInf) AddServerRpcProtocol "ncacn_spx" "rpclt1.dll" Ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "OEMNXPTC.INF: ShellCode error adding RPC procotol" goto ShellCodeError Endif Set RegistryErrorIndex = $($R0) Ifstr(i) $(RegistryErrorIndex) != "NO_ERROR" Debug-Output "OEMNXPTC.INF: ERROR adding RPC protocol data" EndWait goto fatalregistry Endif OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\"$(ProviderName)"\networkprovider" $(MAXIMUM_ALLOWED) ProviderKey ifstr(i) $(ProviderKey) != "" set NewValueList = {{Class,$(NoTitle),$(!REG_VT_DWORD),11},+ {NWCompatibleAuthentication,$(NoTitle),$(!REG_VT_DWORD),1}} Shell $(UtilityInf) AddValueList $(ProviderKey) $(NewValueList) endif CloseRegKey $(ProviderKey) LibraryProcedure Status1, $(!LIBHANDLE), CheckFileExistance, $(!STF_WINDOWSSYSPATH)"\novell.cpl" ifstr(i) $(Status1) == "YES" LibraryProcedure Status2, $(!LIBHANDLE), RenFile, $(!STF_WINDOWSSYSPATH)"\novell.cpl", $(!STF_WINDOWSSYSPATH)"\novell.bak" endif 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 OpenRegKey $(!REG_H_LOCAL) "" "System\CurrentControlSet\Services\LanmanServer\Parameters" $(MAXIMUM_ALLOWED) ServerParmKey ifstr(i) $(ServerParmKey) != "" SetRegValue $(ServerParmKey) {"EnableSharedNetDrives",$(NoTitle),$(!REG_VT_DWORD),1} CloseRegKey $(ServerParmKey) endif endif writeparameters = + FreeLibrary $(!NWCFG_HANDLE) EndWait goto successful ConfigureBrowser = + goto successful bindingadapter =+ set Error = "Binding: Sorry, not yet implemented." goto fatal removeadapter = + OpenRegKey $(!REG_H_LOCAL) "" "System\CurrentControlSet\Control\WOW" $(MAXIMUM_ALLOWED) WowKey ifstr(i) $(WowKey) != "" GetRegValue $(WowKey),"KnownDLLS", KnownDLLsInfo Split-String *($(KnownDLLsInfo),4), " ", KnownDLLsList set KnownDLLs = "" Ifcontains(i) "netware.drv" in $(KnownDLLsList) ForListDo $(KnownDLLsList) ifstr(i) $($) != " " ifstr(i) $($) != "netware.drv" ifstr(i) $(KnownDLLs) == "" set KnownDLLs = $($) else set KnownDLLs = $(KnownDLLs)" "$($) endif endif endif EndForListDo else set KnownDLLs = *($(KnownDLLsInfo),4) endif SetRegValue $(WowKey) {"KnownDLLS",$(NoTitle),$(!REG_VT_SZ),$(KnownDLLs)} CloseRegKey $(WowKey) endif OpenRegKey $(!REG_H_LOCAL) "" "System\CurrentControlSet\Services\LanmanServer\Parameters" $(MAXIMUM_ALLOWED) ServerParmKey ifstr(i) $(ServerParmKey) != "" SetRegValue $(ServerParmKey) {"EnableSharedNetDrives",$(NoTitle),$(!REG_VT_DWORD),0} CloseRegKey $(ServerParmKey) endif LoadLibrary "nw" $(!STF_CWDDIR)\nwcfg.dll !NWCFG_HANDLE Set FLibraryErrCtl = 1 OpenRegKey $(!REG_H_LOCAL) "" "System\CurrentControlSet\Control\Print\Providers" $(MAXIMUM_ALLOWED) PrintProviderKey ifstr(i) $(PrintProviderKey) != "" GetRegValue $(PrintProviderKey) "Order" OrderInfo ifcontains(i) $(OldPrintProviderName) in *($(OrderInfo),4) LibraryProcedure Result $(!NWCFG_HANDLE), DeleteNetwarePrinterProvidor $(OldPrintProviderName) endif ifcontains(i) $(OldPrintProviderName2) in *($(OrderInfo),4) LibraryProcedure Result $(!NWCFG_HANDLE), DeleteNetwarePrinterProvidor $(OldPrintProviderName2) endif endif OpenRegKey $(!REG_H_LOCAL) "" "Software\Microsoft\NwSapAgent" $(MAXIMUM_ALLOWED) SapAgentKey ifstr(i) $(SapAgentKey) == "" else ; ; Let Sap Agent Handle it ; CloseRegKey $(SapAgentKey) endif LibraryProcedure Result $(!NWCFG_HANDLE), DeleteNetwarePrinterProvidor Set FLibraryErrCtl = 0 LibraryProcedure Result $(!NWCFG_HANDLE), GetKernelVersion ifint *($(Result),3) < 529 Set FLibraryErrCtl = 1 LibraryProcedure STATUS $(!NWCFG_HANDLE), unlodctr nwrdr ; Ignore the error code for now Set FLibraryErrCtl = 0 endif ; ; remove Authentication Packages ; OpenRegKey $(!REG_H_LOCAL) "" $(LSAKeyName) $(MAXIMUM_ALLOWED) LSAKey Ifstr $(LSAKey) != $(KeyNull) GetRegValue $(LSAKey),"Authentication Packages", PackagesInfo set Packages = *($(PackagesInfo), 4) ifcontains(i) "nwprovau" not-in $(Packages) ; don't do it ; something wrong.... debug-output "Authentication Packages does not exist.." else set NewPackages = {} ForListDo $(Packages) ifstr(i) $($) != "nwprovau" ifstr(i) $(NewPackages) == {} set NewPackages = {$($)} else set NewPackages = >($(NewPackages),$($)) endif endif EndForListDo SetRegValue $(LSAKey) {"Authentication Packages",$(NoTitle),$(!REG_VT_MULTI_SZ),$(NewPackages)} endif CloseRegKey $(LSAKey) endif ifcontains(i) $(ProductNWWKSTAName) in $(OEM_ABANDON_OPTIONS) Shell $(UtilityInf), RemoveSoftwareComponent, $(Manufacturer), + $(ProductNWWKSTAName) ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "OEMNSVNW.INF: ShellCode error" goto ShellCodeError endif set RegistryErrorIndex = $($R0) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR goto fatalregistry endif endif ForListDo {$(ProductNWRDRName)} ifcontains(i) $($) in $(OEM_ABANDON_OPTIONS) Shell $(UtilityInf), RemoveService, $($), "YES" ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "OEMNSVNW.INF: ShellCode error" goto ShellCodeError endif set RegistryErrorIndex = $($R0) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR goto fatalregistry endif endif EndForListDo set NwlnkName = "NWLINKIPX" OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\NWLINKIPX" $(MAXIMUM_ALLOWED) BS_KeyServices Ifstr $(BS_KeyServices) == $(KeyNull) set NwlnkName = "NWLNKIPX" endif Shell "UTILITY.INF", DecrementRefCount, "Software\Microsoft\"$(NwlnkName)"\CurrentVersion" ; ; Remove autoexec.nt statements ; Set FLibraryErrCtl = 1 set FoundAutoExec = TRUE set AutoExecName = "autoexec.nt" LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(!STF_WINDOWSSYSPATH)"\"$(AutoExecName) ifstr(i) $(STATUS) == NO set AutoExecName = "autoexec.tmp" LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(!STF_WINDOWSSYSPATH)"\"$(AutoExecName) ifstr(i) $(STATUS) == NO set FoundAutoExec = FALSE endif endif ifstr(i) $(FoundAutoExec) == TRUE LibraryProcedure Result $(!NWCFG_HANDLE), RemoveSzFromFile, $(!STF_WINDOWSSYSPATH)"\"$(AutoExecName), $(REM1)$(LF) LibraryProcedure Result $(!NWCFG_HANDLE), RemoveSzFromFile, $(!STF_WINDOWSSYSPATH)"\"$(AutoExecName), "lh %SystemRoot%\system32\nw16"$(LF) LibraryProcedure Result $(!NWCFG_HANDLE), RemoveSzFromFile, $(!STF_WINDOWSSYSPATH)"\"$(AutoExecName), "lh %SystemRoot%\system32\vwipxspx"$(LF) endif Set FLibraryErrCtl = 0 Shell $(UtilityInf) RemoveNetworkProvider $(ProviderName) ifint $($ShellCode) != $(!SHELL_CODE_OK) Debug-Output "OEMNSVNW.INF: ShellCode error" goto ShellCodeError endif set RegistryErrorIndex = $($R0) Ifstr(i) $(RegistryErrorIndex) != NO_ERROR goto fatalregistry endif ; ; Remove ShortName ; OpenRegKey $(!REG_H_LOCAL) "" "System\CurrentControlSet\Control\NetworkProvider\ShortName" $(MAXIMUM_ALLOWED) ShortNameKey ifstr $(ShortNameKey) != $(KeyNull) DeleteRegValue $(ShortNameKey) "NW" else ; ; we must be able to open the provider key ; debug-output "something wrong..." endif ; ; Clean up registry ; Set FLibraryErrCtl = 1 LibraryProcedure Result $(!NWCFG_HANDLE), CleanupRegistryForNWCS Set FLibraryErrCtl = 0 FreeLibrary $(!NWCFG_HANDLE) Install "RestoreFiles" Set FLibraryErrCtl = 1 ; ; add to delete list just in case the Control Panel is Up or someone is ; accessing these files ; AddfileToDeleteList $(!STF_WINDOWSSYSPATH)"\nwc.cpl" AddfileToDeleteList $(!STF_WINDOWSSYSPATH)"\nwapi32.dll" ; ; go ahead and try to remove them if possible ; LibraryProcedure Status1, $(!LIBHANDLE), DelFile, $(!STF_WINDOWSSYSPATH)"\nwc.cpl" LibraryProcedure Status1, $(!LIBHANDLE), DelFile, $(!STF_WINDOWSSYSPATH)"\nwapi32.dll" Set FLibraryErrCtl = 0 Shell "" RemoveBackupFiles goto end UpgradeSoftware = + ; ; if either nwc.2a or nwc.2b exits, then quit ; LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(SrcDir)"\nwc.2a" ifstr(i) $(STATUS) == YES Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "NONFATAL", $(UpgradeBetaOnTopOfDaytona) ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif goto end endif LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(SrcDir)"\nwc.2b" ifstr(i) $(STATUS) == YES Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "NONFATAL", $(UpgradeBetaOnTopOfDaytona) ifint $($ShellCode) != $(!SHELL_CODE_OK) goto ShellCodeError endif goto end endif Install "Install-Update" ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS goto fatal endif ;install "Install-nwcfgdll" ;ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS ; goto fatal ;endif LoadLibrary "nw" $(!STF_CWDDIR)\nwcfg.dll !NWCFG_HANDLE OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct Ifstr $(KeyProduct) != $(KeyNull) ; ; Check whether we need to update the inf file ; ifstr(i) $(!STF_NTUPGRADE) != "YES" ifstr(i) $(STF_CONTEXTINFNAME) != "oemnsvnw.inf" OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName)"\NetRules" $(MAXIMUM_ALLOWED) KeyNetRules Ifstr $(KeyNetRules) != $(KeyNull) GetRegValue $(KeyNetRules),"InfName", InfNameInfo set !UG_Filename = *($(InfNameInfo), 4) CloseRegKey $(KeyNetRules) else Split-String $(!NTN_Infname), "\", FilenameList QueryListSize ListSize $(FilenameList) set !UG_Filename = *($(FilenameList), $(ListSize)) endif install "Install-Update-Inf" endif endif ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS goto fatal endif SetRegValue $(KeyProduct) {MajorVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductMajorVersion)} SetRegValue $(KeyProduct) {MinorVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductMinorVersion)} ; ; Update description and op support ; SetRegValue $(KeyProduct) {Description,$(NoTitle),$(!REG_VT_SZ),$(ProductNWWKSTADescription)} SetRegValue $(KeyProduct) {OperationsSupport,$(NoTitle),$(!REG_VT_DWORD),$(ProductOpSupport)} CloseRegKey $(KeyProduct) ; ; Check whether we are update beta 1 or beta 2. ; Beta 2 will have a Performance key under \nwcworkstation\parameters ; OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\Nwrdr\Performance" $(MAXIMUM_ALLOWED) KeyPerformance Ifstr $(KeyPerformance) != $(KeyNull) ; ; We are upgrading beta 2. ; CloseRegKey $(KeyPerformance) Set FLibraryErrCtl = 1 ifstr(i) $(!STF_PRODUCT) == "WINNT" LibraryProcedure Result $(!NWCFG_HANDLE), CleanupRegistryForNWCS endif Set FLibraryErrCtl = 0 LibraryProcedure Result $(!NWCFG_HANDLE), GetKernelVersion ifint *($(Result),3) < 529 Set FLibraryErrCtl = 1 LibraryProcedure STATUS $(!NWCFG_HANDLE), unlodctr nwrdr LibraryProcedure STATUS $(!NWCFG_HANDLE), lodctr $(!STF_WINDOWSSYSPATH)\nwperf.ini Set FLibraryErrCtl = 0 endif else ; ; We are upgrading beta 1. Do the followings: ; 1. Add SetupRegistryForNWCS call out. ; 2. Add "vwipxspx" to autoexec.nt ; 3. Add Performance stuff ; 4. Add lodctr ; 5. Change the provider device name ; 6. rename novell.cpl ; 7. Add WOW's known DLL ; 8. Add EnableShareNetDrivers ; 9. Change name ; 10. Change class type ; ; Do 2. Remove autoexec.nt statements ; Set FLibraryErrCtl = 1 LibraryProcedure Result $(!NWCFG_HANDLE), RemoveSzFromFile, $(!STF_WINDOWSSYSPATH)"\autoexec.nt", $(REM1)$(LF) LibraryProcedure Result $(!NWCFG_HANDLE), RemoveSzFromFile, $(!STF_WINDOWSSYSPATH)"\autoexec.nt", "lh %SystemRoot%\system32\nw16"$(LF) LibraryProcedure Result $(!NWCFG_HANDLE), RemoveSzFromFile, $(!STF_WINDOWSSYSPATH)"\autoexec.nt", "lh %SystemRoot%\system32\vwipxspx"$(LF) ; ; Setup string in autoexec.nt ; LibraryProcedure Result $(!NWCFG_HANDLE), AppendSzToFile, $(!STF_WINDOWSSYSPATH)"\autoexec.nt", $(REM1)$(CR)$(LF) LibraryProcedure Result $(!NWCFG_HANDLE), AppendSzToFile, $(!STF_WINDOWSSYSPATH)"\autoexec.nt", "lh %SystemRoot%\system32\nw16"$(CR)$(LF) LibraryProcedure Result $(!NWCFG_HANDLE), AppendSzToFile, $(!STF_WINDOWSSYSPATH)"\autoexec.nt", "lh %SystemRoot%\system32\vwipxspx"$(CR)$(LF) Set FLibraryErrCtl = 0 ; ; Do 3. Add performance stuff ; OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\nwrdr" $(MAXIMUM_ALLOWED) KeyNwrdr CreateRegKey $(KeyNwrdr) {"Performance",$(NoTitle),GenericClass} "" + $(MAXIMUM_ALLOWED) "" KeyPerformance set NewValueList = {{Library,$(NoTitle),$(!REG_VT_SZ),"Perfnw.dll"},+ {Open,$(NoTitle),$(!REG_VT_SZ),"OpenNetWarePerformanceData"},+ {Collect,$(NoTitle),$(!REG_VT_SZ),"CollectNetWarePerformanceData"},+ {Close,$(NoTitle),$(!REG_VT_SZ),"CloseNetWarePerformanceData"}} Shell $(UtilityInf), AddValueList, $(KeyPerformance), $(NewValueList) set RegistryErrorIndex = $($R0) CloseRegKey $(KeyPerformance) CloseRegKey $(KeyNwrdr) ; ; Do 4. Add lodctr ; LibraryProcedure Result $(!NWCFG_HANDLE), GetKernelVersion ifint *($(Result),3) < 529 Set FLibraryErrCtl = 1 LibraryProcedure STATUS $(!NWCFG_HANDLE), lodctr $(!STF_WINDOWSSYSPATH)\nwperf.ini ; Ignore the error code for now Set FLibraryErrCtl = 0 endif Ifstr(i) $(RegistryErrorIndex) != NO_ERROR EndWait Debug-Output "OEMNSVNW.INF: Registry error: add performance information" goto fatalregistry endif endif endif ; ; Do 1. Add SetupRegistryForNWCS ; LibraryProcedure Result $(!NWCFG_HANDLE), SetupRegistryForNWCS ; ; Do 5. Change the provider device name ; OpenRegKey $(!REG_H_LOCAL) "" "System\CurrentControlSet\Services\NWCWorkstation\networkprovider" $(MAXIMUM_ALLOWED) ProviderKey ifstr(i) $(ProviderKey) != "" SetRegValue $(ProviderKey) {Devicename,$(NoTitle),$(!REG_VT_SZ),"\Device\nwrdr"} SetRegValue $(ProviderKey) {Name,$(NoTitle),$(!REG_VT_SZ),$(ProductProviderDisplayName)} CloseRegKey $(ProviderKey) endif ; ; Do 6. rename novell.cpl ; LibraryProcedure Status1, $(!LIBHANDLE), CheckFileExistance, $(!STF_WINDOWSSYSPATH)"\novell.cpl" ifstr(i) $(Status1) == "YES" LibraryProcedure Status2, $(!LIBHANDLE), RenFile, $(!STF_WINDOWSSYSPATH)"\novell.cpl", $(!STF_WINDOWSSYSPATH)"\novell.bak" endif ; ; Do 7. Add WOW's known DLL ; 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 ; ; Do 8. Add EnableShareNetDrivers ; OpenRegKey $(!REG_H_LOCAL) "" "System\CurrentControlSet\Services\LanmanServer\Parameters" $(MAXIMUM_ALLOWED) ServerParmKey ifstr(i) $(ServerParmKey) != "" SetRegValue $(ServerParmKey) {"EnableSharedNetDrives",$(NoTitle),$(!REG_VT_DWORD),1} CloseRegKey $(ServerParmKey) endif ; ; do 9. Change name ; OpenRegKey $(!REG_H_LOCAL) "" "Software\Microsoft\NWCWorkstation\CurrentVersion" $(MAXIMUM_ALLOWED) CurrentVersionKey ifstr(i) $(CurrentVersionKey) != "" SetRegValue $(CurrentVersionKey) {"Title",$(NoTitle),$(!REG_VT_SZ),$(NWType)} CloseRegKey $(CurrentVersionKey) endif OpenRegKey $(!REG_H_LOCAL) "" "System\CurrentControlSet\Services\NWCWorkstation" $(MAXIMUM_ALLOWED) nwcKey ifstr(i) $(nwcKey) != "" SetRegValue $(nwcKey) {"DisplayName",$(NoTitle),$(!REG_VT_SZ),$(NWType)} SetRegValue $(nwcKey) {"ImagePath",$(NoTitle),$(!REG_VT_EXPAND_SZ),$(ProductNWWKSTAImagePath)} CloseRegKey $(nwcKey) endif Set FLibraryErrCtl = 1 OpenRegKey $(!REG_H_LOCAL) "" "System\CurrentControlSet\Control\Print\Providers" $(MAXIMUM_ALLOWED) PrintProviderKey ifstr(i) $(PrintProviderKey) != "" GetRegValue $(PrintProviderKey) "Order" OrderInfo ifcontains(i) $(OldPrintProviderName) in *($(OrderInfo),4) set oldname = $(OldPrintProviderName) goto changePrintProvider endif ifcontains(i) $(OldPrintProviderName2) in *($(OrderInfo),4) set oldname = $(OldPrintProviderName2) goto changePrintProvider endif goto nochangePrintProvider changePrintProvider = + ; spool is not started ;LibraryProcedure Result $(!NWCFG_HANDLE), DeleteNetwarePrinterProvidor $(oldname) ;LibraryProcedure Result $(!NWCFG_HANDLE), AddNetwarePrinterProvidor DeleteRegKey $(PrintProviderKey) $(oldname) OpenRegKey $(PrintProviderKey) "" $(ProductPrintProviderName) $(MAXIMUM_ALLOWED) ProductProviderKey ifstr $(ProductProviderKey) == $(KeyNull) CreateRegKey $(PrintProviderKey) {$(ProductPrintProviderName),$(NoTitle),GenericClass} "" $(MAXIMUM_ALLOWED) "" ProductProviderKey endif ifstr $(ProductProviderKey) != $(KeyNull) SetRegValue $(ProductProviderKey) {"Name",$(NoTitle),$(!REG_VT_SZ),"nwprovau.dll"} SetRegValue $(ProductProviderKey) {"DisplayName",$(NoTitle),$(!REG_VT_SZ),$(ProductPrintProviderName)} endif ; ; Change it to top provider ; OpenRegKey $(!REG_H_LOCAL) "" "System\CurrentControlSet\Control\Print\Providers" $(MAXIMUM_ALLOWED) PrintProviderKey Ifstr $(PrintProviderKey) != $(KeyNull) GetRegValue $(PrintProviderKey),"Order",OrderInfo set OrderList = *($(OrderInfo),4) set NewOrderList = {$(ProductPrintProviderName)} ForListDo $(OrderList) ifstr(i) $($) != $(oldname) ifstr(i) $($) != $(ProductPrintProviderName) set NewOrderList = >($(NewOrderList),$($)) endif endif EndForListDo SetRegValue $(PrintProviderKey) {"Order",$(NoTitle),$(!REG_VT_MULTI_SZ),$(NewOrderList)} CloseRegKey $(PrintProviderKey) endif nochangePrintProvider = + endif Set FLibraryErrCtl = 0 OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\"$(ProviderName)"\networkprovider" $(MAXIMUM_ALLOWED) ProviderKey ifstr(i) $(ProviderKey) != "" set NewValueList = {{Class,$(NoTitle),$(!REG_VT_DWORD),11},+ {NWCompatibleAuthentication,$(NoTitle),$(!REG_VT_DWORD),1}} Shell $(UtilityInf) AddValueList $(ProviderKey) $(NewValueList) CloseRegKey $(ProviderKey) endif OpenRegKey $(!REG_H_LOCAL) "" "System\CurrentControlSet\Control\Print\Providers\"$(ProductPrintProviderName) $(MAXIMUM_ALLOWED) PrintProviderKey ifstr(i) $(PrintProviderKey) != $(KeyNull) SetRegValue $(PrintProviderKey) {"DisplayName",$(NoTitle),$(!REG_VT_SZ),$(ProductPrintProviderName)} CloseRegKey $(PrintProviderKey) endif Shell "" AddShortName Shell $(UtilityInf) AddServerRpcProtocol "ncadg_ipx" "rpclt1.dll" Shell $(UtilityInf) AddServerRpcProtocol "ncacn_spx" "rpclt1.dll" FreeLibrary $(!NWCFG_HANDLE) goto end successful = + 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 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 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 = "Error: "$(FunctionTitle) 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 removeadapter endif goto end end = + goto term term = + Return $(CommonStatus) [RestoreFiles] AddSectionFilesToCopyList Restore-Oldexe $(!STF_WINDOWSSYSPATH) $(!STF_WINDOWSSYSPATH) AddSectionFilesToCopyList Restore-Oldsys $(!STF_WINDOWSSYSPATH)\drivers $(!STF_WINDOWSSYSPATH)\drivers set !STF_NCPA_FLUSH_COPYLIST = TRUE CopyFilesInCopyList Exit [Install-nwcfgdll] set STF_VITAL = "" ifstr(i) $(AddCopy) == "YES" AddSectionFilesToCopyList Files-nwcfgdll $(SrcDir) $(!STF_WINDOWSSYSPATH) endif ifstr(i) $(DoCopy) == "YES" set !STF_NCPA_FLUSH_COPYLIST = TRUE CopyFilesInCopyList endif Exit [Install-Option] set STF_VITAL = "" ifstr(i) $(AddCopy) == "YES" AddSectionFilesToCopyList Files-$(Option) $(SrcDir) $(!STF_WINDOWSSYSPATH) AddSectionFilesToCopyList Files-Drivers $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers endif ifstr(i) $(DoCopy) == "YES" set !STF_NCPA_FLUSH_COPYLIST = TRUE CopyFilesInCopyList endif ifstr(i) $(DoConfig) == "YES" endif Exit [Install-Update] set STF_VITAL = "" AddSectionFilesToCopyList Files-$(Option) $(SrcDir) $(!STF_WINDOWSSYSPATH) AddSectionFilesToCopyList Files-nwcfgdll $(SrcDir) $(!STF_WINDOWSSYSPATH) AddSectionFilesToCopyList Files-Drivers $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers ifstr(i) $(DoCopy) == "YES" set !STF_NCPA_FLUSH_COPYLIST = TRUE CopyFilesInCopyList endif Exit [AddShortName] read-syms GeneralConstants read-syms FileConstants read-syms FileConstants$(!STF_LANGUAGE) ; ; Create Short name ; OpenRegKey $(!REG_H_LOCAL) "" "System\CurrentControlSet\Control\NetworkProvider" $(MAXIMUM_ALLOWED) NetProviderKey ifstr $(NetProviderKey) != $(KeyNull) OpenRegKey $(NetProviderKey) "" "ShortName" $(MAXIMUM_ALLOWED) ShortNameKey ifstr $(ShortNameKey) == $(KeyNull) ; ; Create short key if we cannot open it ; CreateRegKey $(NetProviderKey) {"ShortName",$(NoTitle),GenericClass} "" $(MAXIMUM_ALLOWED) "" ShortNameKey endif ifstr $(ShortNameKey) != $(KeyNull) SetRegValue $(ShortNameKey) {"NW",$(NoTitle),$(!REG_VT_SZ),$(ProductProviderDisplayName)} endif else ; ; we must be able to open the provider key ; debug-output "something wrong..." endif return [AddParameterKey] read-syms GeneralConstants set SoftParameterKey = $($0) ifstr(i) $(!STF_GUI_UNATTENDED) == "YES" shell $(!STF_UNATTENDED) ReadDefaultData $(!STF_UNATTENDED_SECTION) SetRegValue $(SoftParameterKey) {DefaultLocation,$(NoTitle),$(!REG_VT_SZ),$(!DefaultLocation)} SetRegValue $(SoftParameterKey) {DefaultScriptOptions,$(NoTitle),$(!REG_VT_DWORD),$(!DefaultScriptOptions)} endif CreateRegKey $(SoftParameterKey) {"Logon",$(NoTitle),GenericClass} "" $(MAXIMUM_ALLOWED) "" LogonKey CreateRegKey $(SoftParameterKey) {"Option",$(NoTitle),GenericClass} "" $(MAXIMUM_ALLOWED) "" OptionKey Set FLibraryErrCtl = 1 ; ; 2 is the equal to SetValue ; LibraryProcedure Result $(!NWCFG_HANDLE), SetEverybodyPermission, $(OptionKey), 2 Set FLibraryErrCtl = 0 CloseRegKey $(LogonKey) CloseRegKey $(OptionKey) Return [GetFilesSize] set FileSizeList = >(^(Files-Drivers,3),^(Files-NWWKSTA,3)) set TotalSize = 0 ForListDo $(FileSizeList) ForListDo $($) Debug-Output $($) Split-String $($) "=" SplitString set Size = *($(SplitString),3) set-add TotalSize = $(TotalSize) $(Size) EndForListDo EndForListDo set-div SizeInK = $(TotalSize) 1024 return $(SizeInK) [Install-Update-Inf] AddSectionFilesToCopyList Files-Inf $(SrcDir) $(!STF_WINDOWSSYSPATH) set !STF_NCPA_FLUSH_COPYLIST = TRUE CopyFilesInCopyList exit [RemoveBackupFiles] return [Restore-Oldexe] [Restore-Oldsys]