1570 lines
50 KiB
INI
1570 lines
50 KiB
INI
|
;------------------------------------------------------------------------
|
||
|
; Copyright(c) 1992-93 Microsoft Corporation
|
||
|
;
|
||
|
; Services for Macintosh Admin Tools Kit
|
||
|
;
|
||
|
; Author: KrishG
|
||
|
;
|
||
|
; Modification History: Adopted from the Resource Kit for Windows NT
|
||
|
;
|
||
|
;------------------------------------------------------------------------
|
||
|
|
||
|
[Identification]
|
||
|
OptionType = NetTransport
|
||
|
[Options]
|
||
|
; we don't want to allow the admin tool option in Windows NT
|
||
|
; SFMADM
|
||
|
|
||
|
ATALK
|
||
|
[GeneralConstants]
|
||
|
UtilInf = "UTILITY.INF"
|
||
|
SubInf = "SUBROUTN.INF"
|
||
|
!KeyNull = ""
|
||
|
!ACCESS = 33554432
|
||
|
!SERVICE_NO_CHANGE = 4294967295
|
||
|
RegistryErrorIndex = NO_ERROR
|
||
|
KeyProduct = ""
|
||
|
KeyParameters = ""
|
||
|
TRUE = 1
|
||
|
FALSE = 0
|
||
|
NoTitle = 0
|
||
|
; !DebugOutputControl = 0
|
||
|
ProductInfName = "oemnxpsm.inf"
|
||
|
|
||
|
[FileConstants]
|
||
|
Manufacturer = "Microsoft"
|
||
|
ProductMajorVersion = "4"
|
||
|
ProductMinorVersion = "0"
|
||
|
ProductVersion = $(ProductMajorVersion)"."$(ProductMinorVersion)
|
||
|
SFMKeyName = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\SFM\CurrentVersion"
|
||
|
ATALKKeyName = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\AppleTalk\CurrentVersion"
|
||
|
ProductOpSupport = 134 ; 0x0086 ; Display,Removable,Properties,Not Updatable
|
||
|
|
||
|
; flag indicates AppleTalk has been installed for the first time.
|
||
|
IsInitialInstall = 0
|
||
|
SFMUnattended = 0
|
||
|
|
||
|
;------------------------------------------------------------------------
|
||
|
; Performance data
|
||
|
;------------------------------------------------------------------------
|
||
|
|
||
|
AtalkPerfLibraryName = "atkctrs.dll"
|
||
|
AtalkPerfOpenFunction = "OpenAtkPerformanceData"
|
||
|
AtalkPerfCloseFunction = "CloseAtkPerformanceData"
|
||
|
AtalkPerfCollectFunction = "CollectAtkPerformanceData"
|
||
|
AtalkCounterFileName = "atkctrs.ini"
|
||
|
AtalkEventLogName = "atkctrs"
|
||
|
|
||
|
!PerfKeyName = "Performance"
|
||
|
|
||
|
;------------------------------------------------------------------------
|
||
|
; Dll And File Names
|
||
|
;---------------------------------------------------------------------
|
||
|
UtilDll = "sfmutil.dll"
|
||
|
ResDll = "sfmres.dll"
|
||
|
NtNetIniFileName = $(!STF_WINDOWSSYSPATH)"\ntnet.ini"
|
||
|
WinFileIniFileName = $(!STF_WINDOWSSYSPATH)"\winfile.ini"
|
||
|
AfpMgrCplFile = "sfmmgr.cpl"
|
||
|
SrvMgrIniSection = "SMAddons"
|
||
|
WinFileIniSection = "Addons"
|
||
|
AtWinSockDll = "sfmwshat.dll"
|
||
|
!EventLogKey = $(!NTN_ServiceBase)"\EventLog\Application"
|
||
|
|
||
|
;---------------------------------------------------------------------
|
||
|
; AppleTalk Transport Product Descriptions /Net Rules
|
||
|
;---------------------------------------------------------------------
|
||
|
|
||
|
ProductATALKName = "AppleTalk"
|
||
|
ProductATALKImagePath = "%SystemRoot%\system32\drivers\sfmatalk.sys"
|
||
|
ProductATALKSvcType = "kernel"
|
||
|
ProductATALKType = "transport"
|
||
|
ProductATALKEventDll = "%SystemRoot%\system32\sfmatmsg.dll"
|
||
|
NetRuleATALKType = "appletalk appletalktransport"
|
||
|
NetRuleATALKUse = $(ProductATALKType)" none none"
|
||
|
NetRuleATALKBindForm = """appletalk"" yes yes container"
|
||
|
NetRuleATALKClass = {"appletalktransport basic "}
|
||
|
NetRuleATALKBindList = {"appletalktransport ndisDriver non non 100", +
|
||
|
"appletalktransport ltkndisDriver non exclusive 100" }
|
||
|
|
||
|
|
||
|
[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)
|
||
|
set OptionTextList = ^(OptionsText$($0), 1)
|
||
|
set Status = STATUS_SUCCESSFUL
|
||
|
|
||
|
finish_ReturnOptions = +
|
||
|
Return $(Status) $(OptionList) $(OptionTextList)
|
||
|
|
||
|
|
||
|
[date]
|
||
|
Now = {} ? $(!LIBHANDLE) GetSystemDate
|
||
|
|
||
|
|
||
|
[InstallOption]
|
||
|
set Status = STATUS_FAILED
|
||
|
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
|
||
|
detect date
|
||
|
set-subst LF = "\n"
|
||
|
set-subst CR = "\r"
|
||
|
read-syms GeneralConstants
|
||
|
read-syms FileConstants
|
||
|
read-syms DialogConstants$(!STF_LANGUAGE)
|
||
|
read-syms FileConstants$(!STF_LANGUAGE)
|
||
|
|
||
|
set-title $(FunctionTitle)
|
||
|
set CommonStatus = STATUS_SUCCESSFUL
|
||
|
|
||
|
Begin = +
|
||
|
|
||
|
IfStr(i) $(!NTN_InstallMode) == deinstall
|
||
|
Set StartLabel = RemoveAdmin
|
||
|
Set REMOVE_SOFTWARE = {}
|
||
|
Set REMOVE_SOFTWARE = >($(REMOVE_SOFTWARE), $(Product$(Option)Name))
|
||
|
else-Ifstr(i) $(!NTN_InstallMode) == Update
|
||
|
set StartLabel = UpgradeAdmin
|
||
|
else-Ifstr(i) $(!NTN_InstallMode) == configure
|
||
|
goto configureadmin
|
||
|
else-Ifstr(i) $(!NTN_InstallMode) == bind
|
||
|
goto BindingsSfm
|
||
|
else-Ifstr(i) $(!NTN_InstallMode) == install
|
||
|
set StartLabel = InstallAdmin
|
||
|
else
|
||
|
Set StartLabel = end
|
||
|
endif
|
||
|
goto $(StartLabel)
|
||
|
|
||
|
;------------------------------------------------------------------
|
||
|
; Install the product
|
||
|
;------------------------------------------------------------------
|
||
|
|
||
|
InstallAdmin = +
|
||
|
|
||
|
StartWait
|
||
|
Set FLibraryErrCtl = 1
|
||
|
|
||
|
; Detect if SFM is already installed
|
||
|
|
||
|
Set ProductTextName = $(Product$(Option)Name)
|
||
|
|
||
|
OpenRegKey $(!REG_H_LOCAL) "" $(SFMKeyName) $(!ACCESS) KeyProduct
|
||
|
|
||
|
Ifstr $(KeyProduct) != $(!KeyNull)
|
||
|
|
||
|
GetRegValue $(KeyProduct) "MajorVersion" VersionInfo
|
||
|
set VersionMajor = *($(VersionInfo), 4)
|
||
|
GetRegValue $(KeyProduct) "MinorVersion" VersionInfo
|
||
|
set VersionMinor = *($(VersionInfo), 4)
|
||
|
set InstalledVersion = $(VersionMajor)"."$(VersionMinor)
|
||
|
|
||
|
ifstr(i) $(ProductVersion) == $(InstalledVersion)
|
||
|
read-syms SfmAlreadyInstalled$(!STF_LANGUAGE)
|
||
|
Set Text = $(Version)$(ProductVersion)
|
||
|
Shell $(SubInf), SetupMessage $(!STF_LANGUAGE) "NONFATAL" $(Text)$(ErrorString)
|
||
|
goto end
|
||
|
EndIf
|
||
|
EndIf
|
||
|
|
||
|
|
||
|
; Detect if AppleTalk is already installed. If installed, ask the user to
|
||
|
; use the update option. Otherwise ask the user to input the
|
||
|
; location of the SFM files
|
||
|
|
||
|
OpenRegKey $(!REG_H_LOCAL) "" $(ATALKKeyName) $(!ACCESS) KeyProduct
|
||
|
|
||
|
Ifstr $(KeyProduct) != $(!KeyNull)
|
||
|
|
||
|
GetRegValue $(KeyProduct) "MajorVersion" VersionInfo
|
||
|
set VersionMajor = *($(VersionInfo), 4)
|
||
|
GetRegValue $(KeyProduct) "MinorVersion" VersionInfo
|
||
|
set VersionMinor = *($(VersionInfo), 4)
|
||
|
set InstalledVersion = $(VersionMajor)"."$(VersionMinor)
|
||
|
|
||
|
ifstr(i) $(ProductVersion) == $(InstalledVersion)
|
||
|
read-syms MiscErrorString1$(!STF_LANGUAGE)
|
||
|
Set Text = $(Version)$(ProductVersion)$(OF)$(ProductTextName)
|
||
|
Shell $(SubInf), SetupMessage $(!STF_LANGUAGE) "NONFATAL" $(Text)$(ErrorString)
|
||
|
goto end
|
||
|
EndIf
|
||
|
EndIf
|
||
|
|
||
|
ifstr(i) $(!NTN_InstallMode) == "install"
|
||
|
|
||
|
Ifstr(i) $(!DoCopy) == "YES"
|
||
|
|
||
|
Shell $(UtilInf), DoAskSource, $(!STF_CWDDIR), $(SrcDir) YES
|
||
|
|
||
|
Ifint $($ShellCode) != $(!SHELL_CODE_OK)
|
||
|
Goto ShellCodeError
|
||
|
Else-Ifstr(i) $($R0) == STATUS_FAILED
|
||
|
Shell $(UtilInf) RegistryErrorString "ASK_SOURCE_FAIL"
|
||
|
ifint $($ShellCode) != $(!SHELL_CODE_OK)
|
||
|
goto ShellCodeError
|
||
|
endif
|
||
|
set Error = $($R0)
|
||
|
Goto end
|
||
|
Else-Ifstr(i) $($R0) == STATUS_USERCANCEL
|
||
|
Goto end
|
||
|
Endif
|
||
|
|
||
|
Set SrcDir = $($R1)
|
||
|
|
||
|
Endif
|
||
|
|
||
|
Endif
|
||
|
|
||
|
CopyAdminFiles = +
|
||
|
|
||
|
install "Install-Initial"
|
||
|
|
||
|
ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
|
||
|
Shell "" RemoveAdminFiles "INSTALL"
|
||
|
goto usercancel
|
||
|
endif
|
||
|
|
||
|
StartInstall = +
|
||
|
|
||
|
Set REMOVE_FLAG = TRUE
|
||
|
Set REMOVE_SOFTWARE = {}
|
||
|
|
||
|
Ifstr(i) $(Option) == "SFMADM"
|
||
|
|
||
|
Set REMOVE_SOFTWARE = >($(REMOVE_SOFTWARE),$(Product$(Option)Name))
|
||
|
|
||
|
Shell $(UtilInf), InstallSoftwareProduct, $(Manufacturer),$(Product$(Option)Name), $(ProductInfName)
|
||
|
|
||
|
ifint $(ShellCode) != 0
|
||
|
goto ShellCodeError
|
||
|
endif
|
||
|
set RegistryErrorIndex = $($R0)
|
||
|
Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
|
||
|
CloseRegKey $($R1)
|
||
|
CloseRegKey $($R2)
|
||
|
goto fatalregistry
|
||
|
Endif
|
||
|
|
||
|
Set AdminProductKey = $($R1)
|
||
|
Set AdminNetRuleKey = $($R2)
|
||
|
|
||
|
; set product key information in the registry
|
||
|
|
||
|
set NewValueList = +
|
||
|
{{Infname,0,$(!REG_VT_SZ),$(ProductInfName)},+
|
||
|
{Title,0,$(!REG_VT_SZ), $(Product$(Option)Title)},+
|
||
|
{Description,$(NoTitle),$(!REG_VT_SZ),$(Product$(Option)Description)},+
|
||
|
{OperationsSupport,$(NoTitle),$(!REG_VT_DWORD),$(ProductOpSupport)},+
|
||
|
{MajorVersion,0,$(!REG_VT_DWORD),$(ProductMajorVersion)},+
|
||
|
{MinorVersion,0,$(!REG_VT_DWORD),$(ProductMinorVersion)},+
|
||
|
{InstallDate,0,$(!REG_VT_DWORD),*($(Now),1)}}
|
||
|
|
||
|
Shell $(UtilInf), AddValueList, $(AdminProductKey), $(NewValueList)
|
||
|
ifint $(ShellCode) != 0
|
||
|
goto ShellCodeError
|
||
|
endif
|
||
|
|
||
|
set RegistryErrorIndex = $($R0)
|
||
|
|
||
|
Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
|
||
|
CloseRegKey $(AdminProductKey)
|
||
|
CloseRegKey $(AdminNetRuleKey)
|
||
|
goto fatalregistry
|
||
|
endif
|
||
|
|
||
|
Set NewValueList = {{InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)}, +
|
||
|
{Infname,$(NoTitle),$(!REG_VT_SZ),$(ProductInfName)}}
|
||
|
|
||
|
Shell $(UtilInf), AddValueList, $(AdminNetRuleKey), $(NewValueList)
|
||
|
ifint $(ShellCode) != 0
|
||
|
goto ShellCodeError
|
||
|
endif
|
||
|
|
||
|
set RegistryErrorIndex = $($R0)
|
||
|
Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
|
||
|
CloseRegKey $(AdminProductKey)
|
||
|
CloseRegKey $(AdminNetRuleKey)
|
||
|
goto fatalregistry
|
||
|
Endif
|
||
|
|
||
|
CloseRegKey $(AdminProductKey)
|
||
|
CloseRegKey $(AdminRuleKey)
|
||
|
|
||
|
|
||
|
LoadLibrary "x" $(!STF_CWDDIR)sfmutil.dll !UTILHANDLE
|
||
|
|
||
|
Debug-Output "Load Util Library"
|
||
|
|
||
|
; WRITE Private Profile String in NTNET.INI
|
||
|
|
||
|
Set IniFile = $(NtNetIniFileName)
|
||
|
Set IniString = $(AfpMgrCplFile)
|
||
|
Set IniSection = $(SrvMgrIniSection)
|
||
|
|
||
|
Debug-Output "Ini File = "$(IniFile)
|
||
|
Debug-Output "Ini String = "$(IniString)
|
||
|
Debug-Output "Ini Section = "$(IniSection)
|
||
|
|
||
|
|
||
|
Set FLibraryErrCtl = 1
|
||
|
LibraryProcedure IniStatus $(!UTILHANDLE) WriteAfpMgrIniStrings, $(IniSection), $(IniString), $(IniFile)
|
||
|
Set FLibraryErrCtl = 0
|
||
|
ifstr(i) $(IniStatus) == "FAILED"
|
||
|
read-syms AFPString3$(!STF_LANGUAGE)
|
||
|
shell $(SubInf) SetupMessage $(!STF_LANGUAGE) "NONFATAL" $(ErrorString)
|
||
|
EndIf
|
||
|
|
||
|
; Do the same thing for File Manager
|
||
|
|
||
|
Set IniFile = $(WinFileIniFileName)
|
||
|
Set IniString = $(AfpMgrCplFile)
|
||
|
Set IniSection = $(WinFileIniSection)
|
||
|
Set FLibraryErrCtl = 1
|
||
|
LibraryProcedure IniStatus $(!UTILHANDLE) WriteAfpMgrIniStrings, $(IniSection), $(IniString), $(IniFile)
|
||
|
Set FLibraryErrCtl = 0
|
||
|
ifstr(i) $(IniStatus) == "FAILED"
|
||
|
read-syms AFPString2$(!STF_LANGUAGE)
|
||
|
shell $(SubInf) SetupMessage $(!STF_LANGUAGE) "NONFATAL" $(ErrorString)
|
||
|
EndIf
|
||
|
|
||
|
FreeLibrary $(!UTILHANDLE)
|
||
|
|
||
|
EndIf
|
||
|
|
||
|
Ifstr(i) $(Option) == "ATALK"
|
||
|
|
||
|
Set ThisOption = ATALK
|
||
|
Set REMOVE_SOFTWARE = >($(REMOVE_SOFTWARE), $(Product$(ThisOption)Name))
|
||
|
|
||
|
LoadLibrary "x" $(!STF_CWDDIR)sfmutil.dll !UTILHANDLE
|
||
|
|
||
|
Set Atalk_DependList = {""}
|
||
|
Set FLibraryErrCtl = 1
|
||
|
Shell $(UtilInf), AddSoftwareComponent,+
|
||
|
$(Manufacturer), +
|
||
|
$(Product$(ThisOption)Name),+
|
||
|
$(Product$(ThisOption)Name), +
|
||
|
$(Product$(ThisOption)DisplayName), +
|
||
|
$(ProductInfName),+
|
||
|
$(Product$(ThisOption)ImagePath),+
|
||
|
"kernelautostart", "PNP_TDI",+
|
||
|
$(Atalk_DependList), "",+
|
||
|
$(Product$(ThisOption)EventDll)
|
||
|
|
||
|
Set FLibraryErrCtl = 0
|
||
|
Set RegistryErrorIndex = $($R0)
|
||
|
Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
|
||
|
CloseRegKey $($R1)
|
||
|
CloseRegKey $($R2)
|
||
|
CloseRegKey $($R3)
|
||
|
CloseRegKey $($R4)
|
||
|
CloseRegKey $($R5)
|
||
|
goto fatalregistry
|
||
|
EndIf
|
||
|
|
||
|
; At this point:
|
||
|
; $R1 contains the product version key handle;
|
||
|
; $R2 contains the NetRules subkey handle;
|
||
|
; $R3 contains the new Services key handle; and
|
||
|
; $R4 contains the Parameters key
|
||
|
; $R5 contains the Linkage Key
|
||
|
;
|
||
|
|
||
|
Set AtkVersKey = $($R1)
|
||
|
Set AtkNetRuleKey = $($R2)
|
||
|
Set AtkSvcKey = $($R3)
|
||
|
Set AtalkParameters = $($R4)
|
||
|
Set AtkLinkageKey = $($R5)
|
||
|
|
||
|
set NewValueList = +
|
||
|
{{SoftwareType,0,$(!REG_VT_SZ),$(Product$(ThisOption)Type)},+
|
||
|
{Title,0,$(!REG_VT_SZ),$(Product$(ThisOption)Title)},+
|
||
|
{Description,0,$(!REG_VT_SZ),$(Product$(ThisOption)Description)},+
|
||
|
{OperationsSupport,$(NoTitle),$(!REG_VT_DWORD),$(ProductOpSupport)},+
|
||
|
{PathName,0,$(!REG_VT_SZ),$(!STF_WINDOWSSYSPATH)},+
|
||
|
{ServiceName,0,$(!REG_VT_SZ),$(Product$(ThisOption)Name)},+
|
||
|
{MajorVersion, 0, $(!REG_VT_DWORD),$(ProductMajorVersion)},+
|
||
|
{MinorVersion, 0, $(!REG_VT_DWORD),$(ProductMinorVersion)},+
|
||
|
{Review,0,$(!REG_VT_DWORD),1},+
|
||
|
{InstallDate,0,$(!REG_VT_DWORD),*($(Now),1)}}
|
||
|
|
||
|
Shell $(UtilInf), AddValueList, $(AtkVersKey), $(NewValueList)
|
||
|
|
||
|
set RegistryErrorIndex = $($R0)
|
||
|
|
||
|
Ifstr $(RegistryErrorIndex) != NO_ERROR
|
||
|
CloseRegKey $(AtkVersKey)
|
||
|
CloseRegKey $(AtkNetRuleKey)
|
||
|
CloseRegKey $(AtkSvcKey)
|
||
|
CloseRegKey $(AtkLinkageKey)
|
||
|
CloseRegKey $(AtalkParameters)
|
||
|
goto fatalregistry
|
||
|
EndIf
|
||
|
|
||
|
set NewValueList = +
|
||
|
{{type,0,$(!REG_VT_SZ),$(NetRule$(ThisOption)Type)}, +
|
||
|
{use,0,$(!REG_VT_SZ),$(NetRule$(ThisOption)Use)}, +
|
||
|
{bindform,0,$(!REG_VT_SZ),$(NetRule$(ThisOption)BindForm)}, +
|
||
|
{class,0, $(!REG_VT_MULTI_SZ),$(NetRule$(ThisOption)Class)}, +
|
||
|
{bindable,0, $(!REG_VT_MULTI_SZ), $(NetRule$(ThisOption)BindList)},+
|
||
|
{InfOption,0,$(!REG_VT_SZ),$(Option)}, +
|
||
|
{Infname,0,$(!REG_VT_SZ),$(ProductInfName)} }
|
||
|
|
||
|
Shell $(UtilInf), AddValueList, $(AtkNetRuleKey), $(NewValueList)
|
||
|
|
||
|
set RegistryErrorIndex = $($R0)
|
||
|
|
||
|
Ifstr $(RegistryErrorIndex) != NO_ERROR
|
||
|
CloseRegKey $(AtkVersKey)
|
||
|
CloseRegKey $(AtkNetRuleKey)
|
||
|
CloseRegKey $(AtkSvcKey)
|
||
|
CloseRegKey $(AtkLinkageKey)
|
||
|
CloseRegKey $(AtalkParameters)
|
||
|
goto fatalregistry
|
||
|
EndIf
|
||
|
|
||
|
;
|
||
|
; Create the Adapters Key
|
||
|
; CODEWORK - Localize ?
|
||
|
;
|
||
|
CreateRegKey $(AtkSvcKey), {"Adapters",0,GenericClass},+
|
||
|
"", $(!ACCESS), "" , KeyAdapters
|
||
|
|
||
|
; write global parameters
|
||
|
|
||
|
Set DesiredZone = ""
|
||
|
Set UnattendInstallMode = 0
|
||
|
|
||
|
Ifstr(i) $(!STF_UNATTENDED) == YES
|
||
|
set UnattendInstallMode = 1
|
||
|
Debug-Output "ATSETUP: UnattendInstallMode(1) = "$(UnattendInstallMode)
|
||
|
endif
|
||
|
|
||
|
Ifstr(i) $(!STF_GUI_UNATTENDED) == YES
|
||
|
set UnattendInstallMode = 1
|
||
|
Debug-Output "ATSETUP: UnattendInstallMode(2) = "$(UnattendInstallMode)
|
||
|
endif
|
||
|
|
||
|
set NewValueList = +
|
||
|
{{EnableRouter,0,$(!REG_VT_DWORD),0},+
|
||
|
{InitialInstall,0, $(!REG_VT_DWORD),1},+
|
||
|
{Unattended,0, $(!REG_VT_DWORD),$(UnattendInstallMode)},+
|
||
|
{DesiredZone,0,$(!REG_VT_SZ),$(DesiredZone)}}
|
||
|
|
||
|
Shell $(UtilInf), AddValueList, $(AtalkParameters), $(NewValueList)
|
||
|
|
||
|
set RegistryErrorIndex = $($R0)
|
||
|
|
||
|
Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
|
||
|
CloseRegKey $(KeyAdapters)
|
||
|
goto fatalregistry
|
||
|
EndIf
|
||
|
|
||
|
; Add WinSock Support to AppleTalk
|
||
|
|
||
|
Set WinAtalkDll = "%SystemRoot%\System32\"$(AtWinSockDll)
|
||
|
Set MaxSockAddrLen = 8
|
||
|
Set MinSockAddrLen = 6
|
||
|
|
||
|
|
||
|
Shell $(UtilInf) AddWinsockInfo $(Product$(ThisOption)Name), +
|
||
|
$(WinAtalkDll), +
|
||
|
$(MaxSockAddrLen),+
|
||
|
$(MinSockAddrLen)
|
||
|
|
||
|
ifstr(i) $($R0) != NO_ERROR
|
||
|
read-syms AtalkString1$(!STF_LANGUAGE)
|
||
|
Shell $(SubInf) SetupMessage $(!STF_LANGUAGE) "NONFATAL" $(ErrorString)
|
||
|
Endif
|
||
|
|
||
|
|
||
|
; Add the performance data to the AppleTalk\performance service key
|
||
|
|
||
|
Shell "" CreatePerfKey $(AtkSvcKey) $(AtalkPerfLibraryName) +
|
||
|
$(AtalkCounterFileName) $(AtalkPerfOpenFunction) +
|
||
|
$(AtalkPerfCloseFunction) $(AtalkPerfCollectFunction)
|
||
|
|
||
|
Ifstr(i) $($R0) != STATUS_SUCCESSFUL
|
||
|
Set RegistryErrorIndex = $($R1)
|
||
|
goto fatalregistry
|
||
|
EndIf
|
||
|
|
||
|
; Add the performance dll to the EventLog
|
||
|
|
||
|
Shell "" CreateEventLogKey $(AtalkEventLogName) $(AtalkPerfLibraryName)
|
||
|
Ifstr(i) $($R0) != STATUS_SUCCESSFUL
|
||
|
Set RegistryErrorIndex = $($R1)
|
||
|
goto fatalregistry
|
||
|
EndIf
|
||
|
|
||
|
; close all open keys
|
||
|
|
||
|
CloseRegKey $(AtkVersKey)
|
||
|
CloseRegKey $(AtkNetRuleKey)
|
||
|
CloseRegKey $(AtkSvcKey)
|
||
|
CloseRegKey $(AtkLinkageKey)
|
||
|
CloseRegKey $(AtalkParameters)
|
||
|
CloseRegKey $(KeyAdapters)
|
||
|
|
||
|
; Add the AppleTalk print monitor
|
||
|
|
||
|
Shell "" AddPrintMonitor $(!NTN_InstallMode)
|
||
|
|
||
|
Shell "utility.inf" AddRpcProtocol ncacn_at_dsp rpclt1.dll rpclt1.dll
|
||
|
EndIf
|
||
|
|
||
|
goto successful
|
||
|
|
||
|
|
||
|
Bindingssfm = +
|
||
|
|
||
|
Set DefaultPortRemoved = FALSE
|
||
|
|
||
|
; remove all service dependencies of AppleTalk on Adapters (leaving only
|
||
|
; the group dependency). This is needed so that if there are two net cards
|
||
|
; on the system and one fails to load (docking station scenario), then
|
||
|
; AppleTalk will still be able to start.
|
||
|
|
||
|
Shell "" RemoveAllServiceDependencies "AppleTalk"
|
||
|
OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\AppleTalk\Linkage" $(!ACCESS) LinkageKey
|
||
|
Ifstr(i) $(LinkageKey) == $(!KeyNull)
|
||
|
Set RegistryErrorIndex = UNABLE_ACCESS_CONFIGURE_SERVICE
|
||
|
Goto fatalregistry
|
||
|
Endif
|
||
|
|
||
|
OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\AppleTalk\Parameters" $(!ACCESS) BindParmKey
|
||
|
Ifstr(i) $(BindParmKey) == $(!KeyNull)
|
||
|
Set RegistryErrorIndex = UNABLE_ACCESS_CONFIGURE_SERVICE
|
||
|
Goto fatalregistry
|
||
|
Endif
|
||
|
|
||
|
Set BindList = {}
|
||
|
Set ExportList = {}
|
||
|
Set RouteList = {}
|
||
|
|
||
|
GetRegValue $(LinkageKey) "Bind" BindList
|
||
|
GetRegValue $(LinkageKey) "Export" ExportList
|
||
|
GetRegValue $(LinkageKey) "Route" RouteList
|
||
|
GetRegValue $(LinkageKey) "Exclude" ExcludeList
|
||
|
QueryListSize BindCount $(BindList)
|
||
|
IfInt $(BindCount) == 0
|
||
|
Goto endbinding
|
||
|
Endif
|
||
|
|
||
|
set NewBindList = {}
|
||
|
set NewExportList = {}
|
||
|
set NewRouteList = {}
|
||
|
|
||
|
ForListDo *($(BindList),4)
|
||
|
Split-String $($), "\", BindInfo
|
||
|
set NewBindList = >($(NewBindList), *($(BindInfo),4))
|
||
|
EndForListDo
|
||
|
|
||
|
ForListDo *($(ExportList),4)
|
||
|
set NewExportList = >($(NewExportList), $($))
|
||
|
EndForListDo
|
||
|
|
||
|
ForListDo *($(RouteList),4)
|
||
|
set NewRouteList = >($(NewRouteList), $($))
|
||
|
EndForListDo
|
||
|
|
||
|
ForListDo *($(ExcludeList),4)
|
||
|
set NewExcludeList = >($(NewExcludeList), $($))
|
||
|
EndForListDo
|
||
|
|
||
|
OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\AppleTalk\Adapters" $(!ACCESS) AdapterKey
|
||
|
Ifstr(i) $(AdapterKey) == $(!KeyNull)
|
||
|
Set RegistryErrorIndex = UNABLE_ACCESS_CONFIGURE_SERVICE
|
||
|
Goto fatalregistry
|
||
|
Endif
|
||
|
|
||
|
set AdapterList = ""
|
||
|
EnumRegKey $(AdapterKey) AdapterList
|
||
|
Set AtalkAdapterList = {}
|
||
|
ForListDo $(AdapterList)
|
||
|
Set AtalkAdapterList = >($(AtalkAdapterList), *($($),1))
|
||
|
EndForListDo
|
||
|
|
||
|
QueryListSize AdapterCount $(AtalkAdapterList)
|
||
|
|
||
|
Set fAddingFirstAdapter = FALSE
|
||
|
|
||
|
ifint $(AdapterCount) == 0
|
||
|
Set fAddingFirstAdapter = TRUE
|
||
|
EndIf
|
||
|
|
||
|
Set NewBindings = ""
|
||
|
Set TobeUsedBindList = {}
|
||
|
Set TobeUsedExportList = {}
|
||
|
Set TobeUsedRouteList = {}
|
||
|
|
||
|
ForListDo $(NewBindList)
|
||
|
IfContains(i) $($) not-in $(AtalkAdapterList)
|
||
|
Set NewBindings = TRUE
|
||
|
Set TobeUsedBindList = >($(TobeUsedBindList),"\Device\"$($))
|
||
|
Set TobeUsedExportList = >($(TobeUsedExportList),*($(NewExportList),$(#)))
|
||
|
Set TobeUsedRouteList = >($(TobeUsedRouteList),*($(NewRouteList),$(#)))
|
||
|
|
||
|
Shell "" CreateAtalkConfig $($) $(AdapterKey)
|
||
|
|
||
|
Ifstr(i) $($R0) != STATUS_SUCCESSFUL
|
||
|
CloseRegKey $(AdapterKey)
|
||
|
Set RegistryErrorIndex = $($R1)
|
||
|
goto fatalregistry
|
||
|
EndIf
|
||
|
|
||
|
Else
|
||
|
Set TobeUsedBindList = >($(TobeUsedBindList),"\Device\"$($))
|
||
|
Set TobeUsedExportList = >($(TobeUsedExportList),*($(NewExportList),$(#)))
|
||
|
Set TobeUsedRouteList = >($(TobeUsedRouteList),*($(NewRouteList),$(#)))
|
||
|
Endif
|
||
|
|
||
|
EndForListDo
|
||
|
|
||
|
set NewValueList = {{Bind,0,$(!REG_VT_MULTI_SZ),$(TobeUsedBindList)}, +
|
||
|
{Export,0,$(!REG_VT_MULTI_SZ),$(TobeUsedExportList)}, +
|
||
|
{Route,0,$(!REG_VT_MULTI_SZ),$(TobeUsedRouteList)}}
|
||
|
|
||
|
Ifstr(i) $(NewBindings) == TRUE
|
||
|
Shell $(UtilInf), AddValueList, $(LinkageKey), $(NewValueList)
|
||
|
set RegistryErrorIndex = $($R0)
|
||
|
CloseRegKey $(LinkageKey)
|
||
|
Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
|
||
|
goto fatalregistry
|
||
|
EndIf
|
||
|
EndIf
|
||
|
|
||
|
; Add the Default Port
|
||
|
|
||
|
Set DefaultPort = {}
|
||
|
Set MediaTypeList = {}
|
||
|
GetRegValue $(BindParmKey) "DefaultPort" DefaultPort
|
||
|
Ifstr(i) $(DefaultPort) != {}
|
||
|
goto removeadapters
|
||
|
EndIf
|
||
|
|
||
|
finddefaultport = +
|
||
|
|
||
|
ForListDo $(TobeUsedBindList)
|
||
|
Split-String $($) "\" PortName
|
||
|
Shell "" FindMediaType *($(PortName),4)
|
||
|
Ifstr(i) $($R0) == STATUS_SUCCESSFUL
|
||
|
Set MediaTypeList = >($(MediaTypeList), $($R1))
|
||
|
EndIf
|
||
|
EndForListDo
|
||
|
|
||
|
Ifcontains(i) "1" in $(MediaTypeList)
|
||
|
ForListDo $(MediaTypeList)
|
||
|
Ifint $($) == 1
|
||
|
Set DefaultPort = *($(TobeUsedBindList),$(#))
|
||
|
goto defportdone
|
||
|
EndIf
|
||
|
EndForListDo
|
||
|
else-ifcontains(i) "2" in $(MediaTypeList)
|
||
|
ForListDo $(MediaTypeList)
|
||
|
Ifint $($) == 2
|
||
|
Set DefaultPort = *($(TobeUsedBindList),$(#))
|
||
|
goto defportdone
|
||
|
EndIf
|
||
|
EndForListDo
|
||
|
else-ifcontains(i) "3" in $(MediaTypeList)
|
||
|
ForListDo $(MediaTypeList)
|
||
|
Ifint $($) == 3
|
||
|
Set DefaultPort = *($(TobeUsedBindList),$(#))
|
||
|
goto defportdone
|
||
|
EndIf
|
||
|
EndForListDo
|
||
|
else-ifcontains(i) "4" in $(MediaTypeList)
|
||
|
ForListDo $(MediaTypeList)
|
||
|
Ifint $($) == 4
|
||
|
Set DefaultPort = *($(TobeUsedBindList),$(#))
|
||
|
goto defportdone
|
||
|
EndIf
|
||
|
EndForListDo
|
||
|
else-ifcontains(i) "5" in $(MediaTypeList)
|
||
|
Set DefaultPort = *($(TobeUsedBindList),1)
|
||
|
else
|
||
|
read-syms NoAdaptersFound$(!STF_LANGUAGE)
|
||
|
Shell $(SubInf) SetupMessage, $(!STF_LANGUAGE), "FATAL", $(ErrorString)
|
||
|
goto endbinding
|
||
|
Endif
|
||
|
|
||
|
defportdone = +
|
||
|
|
||
|
Set NewValueList = {{DefaultPort,0,$(!REG_VT_SZ),$(DefaultPort)}}
|
||
|
Shell $(UtilInf), AddValueList, $(BindParmKey), $(NewValueList)
|
||
|
set RegistryErrorIndex = $($R0)
|
||
|
Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
|
||
|
goto fatalregistry
|
||
|
EndIf
|
||
|
goto startconfig
|
||
|
|
||
|
removeadapters = +
|
||
|
Split-String *($(DefaultPort),4) "\" PortName
|
||
|
ForListDo $(AtalkAdapterList)
|
||
|
Ifcontains(i) $($) not-in $(NewBindList)
|
||
|
DeleteRegKey $(AdapterKey) $($)
|
||
|
Ifstr(i) $($) == *($(PortName),4)
|
||
|
read-syms RemoveDefaultPort$(!STF_LANGUAGE)
|
||
|
Shell $(SubInf) SetupMessage $(!STF_LANGUAGE) "FATAL" $(ErrorString)
|
||
|
Set DefaultPortRemoved = TRUE
|
||
|
goto finddefaultport
|
||
|
Endif
|
||
|
EndIf
|
||
|
EndForListDo
|
||
|
|
||
|
; if this is the first time configuration start appletalk and launch config
|
||
|
; if the default port has been removed and other adapters are available
|
||
|
; start appletalk
|
||
|
|
||
|
startconfig = +
|
||
|
|
||
|
Set DoConfig = 0
|
||
|
|
||
|
GetRegValue $(BindParmKey) "InitialInstall" DoConfig
|
||
|
|
||
|
Set IsInitialInstall = *($(DoConfig),4)
|
||
|
|
||
|
Set DoUnattended = 0
|
||
|
GetRegValue $(BindParmKey) "Unattended" DoUnattended
|
||
|
Set SFMUnattended = *($(DoUnattended),4)
|
||
|
|
||
|
Debug-Output "ATSETUP: SFMUnattended(start config)"$(SFMUnattended)
|
||
|
Debug-Output "Config State = "$(DoConfig)
|
||
|
Debug-Output "Unattend State = "$(DoUnattended)
|
||
|
|
||
|
ifint $(IsInitialInstall) == 1
|
||
|
goto startsvc
|
||
|
EndIf
|
||
|
|
||
|
ifstr(i) $(DefaultPortRemoved) == TRUE
|
||
|
goto startsvc
|
||
|
endif
|
||
|
|
||
|
ifstr(i) $(fAddingFirstAdapter) == TRUE
|
||
|
goto startsvc
|
||
|
endif
|
||
|
|
||
|
goto endbinding
|
||
|
|
||
|
startsvc = +
|
||
|
Set FLibraryErrCtl = 1
|
||
|
read-syms StatusStartingAppleTalk$(!STF_LANGUAGE)
|
||
|
Shell $(SubInf) PushBillBoard NETSTATUSDLG $(Status)
|
||
|
StartWait
|
||
|
Set WaitStarted = 1
|
||
|
LibraryProcedure START_RESULT $(!NCPA_HANDLE), CPlSetup $(!STF_HWND), STARTSVC, AppleTalk
|
||
|
Shell $(SubInf) PopBillBoard
|
||
|
|
||
|
Set START_STATUS = *($(START_RESULT),1)
|
||
|
|
||
|
Debug-Output "OEMNXPSM.INF: Start AppleTalk; result was: "$(START_STATUS)
|
||
|
|
||
|
Ifint $(START_STATUS) != 0
|
||
|
EndWait
|
||
|
Set WaitStarted = 0
|
||
|
LibraryProcedure START_RESULT $(!NCPA_HANDLE), CPlSetup $(!STF_HWND), ERRORMSG, $(START_STATUS)
|
||
|
Set ATALK_ERROR_MESSAGE = *($(START_RESULT),2)
|
||
|
read-syms CannotStartAtalk$(!STF_LANGUAGE)
|
||
|
Set ErrorString = $(ATALK_ERROR_MESSAGE)$(ErrorSuffix)
|
||
|
Shell $(SubInf) SetupMessage $(!STF_LANGUAGE) "FATAL" $(ErrorString)
|
||
|
Else
|
||
|
|
||
|
; start the afd driver
|
||
|
|
||
|
LibraryProcedure START_RESULT $(!NCPA_HANDLE), CPlSetup $(!STF_HWND), STARTSVC, Afd
|
||
|
|
||
|
Set START_STATUS = *($(START_RESULT),1)
|
||
|
|
||
|
Debug-Output "OEMNXPSM.INF: Start Afd result was: "$(START_STATUS)
|
||
|
|
||
|
Ifint $(START_STATUS) != 0
|
||
|
|
||
|
EndWait
|
||
|
Set WaitStarted = 0
|
||
|
LibraryProcedure START_RESULT $(!NCPA_HANDLE), CPlSetup $(!STF_HWND), ERRORMSG, $(START_STATUS)
|
||
|
Set ATALK_ERROR_MESSAGE = *($(START_RESULT),2)
|
||
|
read-syms CannotStartAfd$(!STF_LANGUAGE)
|
||
|
Set ErrorString = $(ATALK_ERROR_MESSAGE)$(ErrorSuffix)
|
||
|
Shell $(SubInf) SetupMessage $(!STF_LANGUAGE) "FATAL" $(ErrorString)
|
||
|
goto endbinding
|
||
|
|
||
|
EndIf
|
||
|
|
||
|
; Now start the NDIS group.
|
||
|
|
||
|
LibraryProcedure START_RESULT $(!NCPA_HANDLE), CPlSetup $(!STF_HWND), STARTSVC, +NDIS
|
||
|
|
||
|
Set START_STATUS = *($(START_RESULT),1)
|
||
|
|
||
|
Debug-Output "OEMNXPSM.INF: Start +NDIS result was: "$(START_STATUS)
|
||
|
|
||
|
Ifint $(START_STATUS) != 0
|
||
|
|
||
|
EndWait
|
||
|
Set WaitStarted = 0
|
||
|
LibraryProcedure START_RESULT $(!NCPA_HANDLE), CPlSetup $(!STF_HWND), ERRORMSG, $(START_STATUS)
|
||
|
Set ATALK_ERROR_MESSAGE = *($(START_RESULT),2)
|
||
|
read-syms CannotStartAtalk$(!STF_LANGUAGE)
|
||
|
Set ErrorString = $(ATALK_ERROR_MESSAGE)$(ErrorSuffix)
|
||
|
Shell $(SubInf) SetupMessage $(!STF_LANGUAGE) "FATAL" $(ErrorString)
|
||
|
goto endbinding
|
||
|
|
||
|
EndIf
|
||
|
|
||
|
; Launch the AppleTalk Transport Configuration
|
||
|
|
||
|
LoadLibrary "x" $(!STF_CWDDIR)sfmatcfg.dll ATHANDLE
|
||
|
Set FLibraryErrCtl = 1
|
||
|
Set atcfgresult = ""
|
||
|
Debug-Output "ATSETUP: SFMUnattended(1)"$(SFMUnattended)
|
||
|
LibraryProcedure atcfgresult, $(ATHANDLE),EnterAtalkConfigDLL $(!STF_HWND) $(IsInitialInstall) $(SFMUnattended)
|
||
|
FreeLibrary $(ATHANDLE)
|
||
|
|
||
|
; reset registry values after initial install
|
||
|
SetRegValue $(BindParmKey) {InitialInstall,0,$(!REG_VT_DWORD),0}
|
||
|
SetRegValue $(BindParmKey) {Unattended,0,$(!REG_VT_DWORD),0}
|
||
|
EndWait
|
||
|
|
||
|
EndIf
|
||
|
|
||
|
endbinding = +
|
||
|
CloseRegKey $(BindParmKey)
|
||
|
goto end
|
||
|
|
||
|
|
||
|
ConfigureAdmin = +
|
||
|
|
||
|
Ifstr(i) $(Option) == "SFMADM"
|
||
|
read-syms CantConfigureADM$(!STF_LANGUAGE)
|
||
|
Shell $(SubInf) SetupMessage, $(!STF_LANGUAGE), "NONFATAL",$(ErrorString)
|
||
|
goto successful
|
||
|
EndIf
|
||
|
|
||
|
OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\AppleTalk\Linkage" $(!ACCESS) LinkageKey
|
||
|
|
||
|
ifstr(i) $(LinkageKey) != $(!KeyNull)
|
||
|
GetRegValue $(LinkageKey) "Bind" BindList
|
||
|
ifstr(i) $(BindList) == ""
|
||
|
read-syms AtalkString3$(!STF_LANGUAGE)
|
||
|
Shell $(SubInf) SetupMessage $(!STF_LANGUAGE) "NONFATAL" $(ErrorString)
|
||
|
goto endconfigui
|
||
|
endif
|
||
|
else
|
||
|
Set RegistryErrorIndex = $($R0)
|
||
|
goto fatalregistry
|
||
|
EndIf
|
||
|
|
||
|
LoadLibrary "x" $(!STF_CWDDIR)sfmatcfg.dll ATHANDLE
|
||
|
Set FLibraryErrCtl = 1
|
||
|
Set atcfgresult = ""
|
||
|
LibraryProcedure atcfgresult, $(ATHANDLE),EnterAtalkConfigDLL $(!STF_HWND) $(IsInitialInstall) $(SFMUnattended)
|
||
|
FreeLibrary $(ATHANDLE)
|
||
|
|
||
|
endconfigui = +
|
||
|
Set CommonStatus = STATUS_USERCANCEL
|
||
|
goto usercancel
|
||
|
|
||
|
RemoveAdmin = +
|
||
|
|
||
|
; Remove the SMAddons String in regnet.ini. This is done first, because
|
||
|
; we remove the util dll in "SfmRemoveFiles". If RemoveFiles failed,
|
||
|
; the SMAddons section will be restored to it's former shape.
|
||
|
|
||
|
Debug-Output "OEMNXPSM.INF: Entering Remove"
|
||
|
|
||
|
; don't allow AppleTalk to be removed if SFM is installed.
|
||
|
|
||
|
OpenRegKey $(!REG_H_LOCAL) "" $(SFMKeyName) $(!ACCESS) KeyProduct
|
||
|
|
||
|
Ifstr $(KeyProduct) != $(!KeyNull)
|
||
|
read-syms AtalkString7$(!STF_LANGUAGE)
|
||
|
Shell $(SubInf) SetupMessage $(!STF_LANGUAGE) "NONFATAL" $(ErrorString)
|
||
|
Set CommonStatus = STATUS_USERCANCEL
|
||
|
goto end
|
||
|
EndIf
|
||
|
|
||
|
Ifstr(i) $(!NTN_InstallMode) == deinstall
|
||
|
LoadLibrary "x" $(!STF_CWDDIR)sfmutil.dll !UTILHANDLE
|
||
|
EndIf
|
||
|
|
||
|
|
||
|
Ifstr(i) $(Option) == "SFMADM"
|
||
|
|
||
|
Set FLibraryErrCtl = 1
|
||
|
Set IniFile = $(NtNetIniFileName)
|
||
|
Set IniSection = $(SrvMgrIniSection)
|
||
|
Set Result = ""
|
||
|
Set FLibraryErrCtl = 1
|
||
|
LibraryProcedure Result, $(!UTILHANDLE), WriteAfpMgrIniStrings, $(IniSection), NULL, $(IniFile)
|
||
|
Set FLibraryErrCtl = 0
|
||
|
|
||
|
; Remove the file manager addons also
|
||
|
|
||
|
Set IniFile = $(WinFileIniFileName)
|
||
|
Set IniSection = $(WinFileIniSection)
|
||
|
Set FLibraryErrCtl = 1
|
||
|
LibraryProcedure Result, $(!UTILHANDLE), WriteAfpMgrIniStrings, $(IniSection), NULL, $(IniFile)
|
||
|
Set FLibraryErrCtl = 0
|
||
|
|
||
|
EndIf
|
||
|
|
||
|
Shell "" RemoveAdminFiles "REMOVE"
|
||
|
|
||
|
ForListDo $(REMOVE_SOFTWARE)
|
||
|
debug-output "Removing component: "$($)
|
||
|
Shell $(UtilInf), RemoveSoftwareComponent, $(Manufacturer), $($)
|
||
|
EndForListDo
|
||
|
|
||
|
Shell "" RemovePrintMonitor
|
||
|
|
||
|
Shell $(UtilInf), RemoveWinsockInfo, $(ProductATALKName)
|
||
|
|
||
|
Shell "utility.inf" RemoveRpcProtocol ncacn_at_dsp
|
||
|
|
||
|
FreeLibrary $(!UTILHANDLE)
|
||
|
; LibraryProcedure Status, $(!LIBHANDLE), DelFile $(!STF_CWDDIR)$(UtilDll)
|
||
|
goto end
|
||
|
|
||
|
UpgradeAdmin = +
|
||
|
|
||
|
OpenRegKey $(!REG_H_LOCAL) "" $(ATALKKeyName) $(!ACCESS) KeyProduct
|
||
|
|
||
|
Ifstr $(KeyProduct) != $(!KeyNull)
|
||
|
|
||
|
GetRegValue $(KeyProduct),"MajorVersion", VersionInfo
|
||
|
set Version = *($(VersionInfo), 4)
|
||
|
Split-String $(!NTN_Infname), "\", FilenameList
|
||
|
QueryListSize ListSize $(FilenameList)
|
||
|
set !UG_Filename = *($(FilenameList), $(ListSize))
|
||
|
|
||
|
; If SFM is installed on a NT Wksta (this is a hack installation
|
||
|
; that some of the Microsofties install), then remove SFM before
|
||
|
; continuing with the upgrade. This is because, SFM doesn't get
|
||
|
; upgraded on a NT Wksta product and the Appletalk upgrade makes
|
||
|
; the SFM install invalid, resulting in the client system
|
||
|
; blue screening.
|
||
|
|
||
|
ifstr(i) $(!STF_PRODUCT) == "WINNT"
|
||
|
OpenRegKey $(!REG_H_LOCAL) "" $(SFMKeyName) $(!ACCESS) KeyProduct
|
||
|
Ifstr $(KeyProduct) != ""
|
||
|
Debug-Output "OEMNXPSM.INF: SFM is installed, so remove SFM"
|
||
|
ifstr(i) $(!STF_UNATTENDED) == NO
|
||
|
read-syms RemovingSFM$(!STF_LANGUAGE)
|
||
|
Shell "subroutn.inf" SetupMessage, $(!STF_LANGUAGE), "STATUS", $(Message)
|
||
|
endif
|
||
|
set SaveNTN_InstallMode = $(!NTN_InstallMode)
|
||
|
set !NTN_InstallMode = deinstall
|
||
|
Shell "oemnsvsm.inf" InstallOption $(!STF_LANGUAGE) "SFM" $(!STF_SRCDIR) "NO" "NO" "NO"
|
||
|
; restore the environment variables
|
||
|
set !NTN_InstallMode = $(SaveNTN_InstallMode)
|
||
|
goto end
|
||
|
EndIf
|
||
|
endif
|
||
|
|
||
|
LoadLibrary "x" $(!STF_CWDDIR)sfmutil.dll !UTILHANDLE
|
||
|
|
||
|
install Install-Update
|
||
|
ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
|
||
|
goto fatal
|
||
|
endif
|
||
|
|
||
|
; Add the AppleTalk print monitor
|
||
|
|
||
|
Shell "" AddPrintMonitor $(!NTN_InstallMode)
|
||
|
|
||
|
FreeLibrary $(!UTILHANDLE)
|
||
|
|
||
|
Ifint $($ShellCode) != $(!SHELL_CODE_OK)
|
||
|
Goto ShellCodeError
|
||
|
EndIf
|
||
|
|
||
|
; Add the performance data to the AppleTalk\performance service key
|
||
|
|
||
|
OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\"$(ProductATALKName) +
|
||
|
$(!ACCESS) AtkSvcKey
|
||
|
|
||
|
Ifstr $(AtkSvcKey) != $(!KeyNull)
|
||
|
Shell "" CreatePerfKey $(AtkSvcKey) $(AtalkPerfLibraryName) +
|
||
|
$(AtalkCounterFileName) $(AtalkPerfOpenFunction) +
|
||
|
$(AtalkPerfCloseFunction) $(AtalkPerfCollectFunction)
|
||
|
|
||
|
Ifstr(i) $($R0) != STATUS_SUCCESSFUL
|
||
|
CloseRegKey $(AtkSvcKey)
|
||
|
Set RegistryErrorIndex = $($R1)
|
||
|
goto fatalregistry
|
||
|
EndIf
|
||
|
|
||
|
; Make sure AppleTalk is in the PNP_TDI group
|
||
|
|
||
|
SetRegValue $(AtkSvcKey) {Group,$(NoTitle),$(!REG_VT_SZ),"PNP_TDI"}
|
||
|
|
||
|
; Get rid of the NDIS dependency in OtherDependencies.
|
||
|
OpenRegKey $(AtkSvcKey) "" "Linkage" $(!ACCESS) AtkLinkageKey
|
||
|
Ifstr $(AtkLinkageKey) != $(!KeyNull)
|
||
|
DeleteRegValue $(AtkLinkageKey) "OtherDependencies"
|
||
|
CloseRegKey $(AtkLinkageKey)
|
||
|
Endif
|
||
|
|
||
|
CloseRegKey $(AtkSvcKey)
|
||
|
|
||
|
; Add the performance dll to the EventLog
|
||
|
|
||
|
Shell "" CreateEventLogKey $(AtalkEventLogName) +
|
||
|
$(AtalkPerfLibraryName)
|
||
|
Ifstr(i) $($R0) != STATUS_SUCCESSFUL
|
||
|
Set RegistryErrorIndex = $($R1)
|
||
|
goto fatalregistry
|
||
|
EndIf
|
||
|
|
||
|
Else
|
||
|
Debug-Output "OEMNXPSM.INF: error opening ATALK service key."
|
||
|
EndIf
|
||
|
|
||
|
SetRegValue $(KeyProduct) {MajorVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductMajorVersion)}
|
||
|
SetRegValue $(KeyProduct) {MinorVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductMinorVersion)}
|
||
|
SetRegValue $(KeyProduct) {Description,$(NoTitle),$(!REG_VT_SZ),$(Product$(Option)Description)}
|
||
|
SetRegValue $(KeyProduct) {OperationsSupport,$(NoTitle),$(!REG_VT_DWORD),$(ProductOpSupport)}
|
||
|
|
||
|
|
||
|
; Update the NetRules key for PNP
|
||
|
|
||
|
OpenRegKey $(KeyProduct) "" "NetRules" $(!ACCESS) KeyNetRules
|
||
|
Ifstr $(KeyNetRules) != $(!KeyNull)
|
||
|
SetRegValue $(KeyNetRules) {use,0,$(!REG_VT_SZ),$(NetRuleATALKUse)}
|
||
|
CloseRegKey $(KeyNetRules)
|
||
|
Endif
|
||
|
|
||
|
|
||
|
CloseRegKey $(KeyProduct)
|
||
|
|
||
|
Shell "utility.inf" AddRpcProtocol ncacn_at_dsp rpclt1.dll rpclt1.dll
|
||
|
|
||
|
;
|
||
|
; Delete cache section for NCPA
|
||
|
;
|
||
|
Set MaskAllAccess = 33554432
|
||
|
Set NewInfName = "oemnxpsm.inf"
|
||
|
Set CacheKey = "Software\Microsoft\Ncpa\InfOptions"
|
||
|
Set CacheValue = "oemnsvsm.inf"
|
||
|
OpenRegKey $(!REG_H_LOCAL) "" $(CacheKey) $(MaskAllAccess) Cache
|
||
|
Ifint $(RegLastError) == $(!REG_ERROR_SUCCESS)
|
||
|
DeleteRegTree $(Cache) $(CacheValue)
|
||
|
CloseRegKey $(Cache)
|
||
|
endif
|
||
|
|
||
|
; Update winsock mappings
|
||
|
Shell $(UtilInf) UpdateWinsockMappings $(ProductATALKName) "%SystemRoot%\System32\"$(AtWinSockDll)
|
||
|
|
||
|
ifstr(i) $($R0) != NO_ERROR
|
||
|
goto fatal
|
||
|
endif
|
||
|
endif
|
||
|
|
||
|
goto end
|
||
|
|
||
|
successful = +
|
||
|
|
||
|
Set Status = STATUS_SUCCESSFUL
|
||
|
goto end
|
||
|
|
||
|
ShellCodeError = +
|
||
|
read-syms ShellingError$(!STF_LANGUAGE)
|
||
|
Shell $(SubInf) SetupMessage $(!STF_LANGUAGE) "FATAL" $(ErrorString)
|
||
|
|
||
|
fatalregistry = +
|
||
|
EndWait
|
||
|
Shell $(UtilInf) RegistryErrorString $(RegistryErrorIndex)
|
||
|
IfInt $(ShellCode) != 0
|
||
|
goto ShellCodeError
|
||
|
Endif
|
||
|
set Error = $($R0)
|
||
|
goto fatal
|
||
|
|
||
|
fatal = +
|
||
|
Ifint $(BillboardVisible) != 0
|
||
|
Shell $(SubInf) PopBillboard
|
||
|
Set BillboardVisible = 0
|
||
|
Endif
|
||
|
read-syms MiscErrorString3$(!STF_LANGUAGE)
|
||
|
Shell $(SubInf) SetupMessage, $(!STF_LANGUAGE), "FATAL",$(ErrorString)$(Error)
|
||
|
ifint $($ShellCode) != $(!SHELL_CODE_OK)
|
||
|
goto ShellCodeError
|
||
|
endif
|
||
|
goto failed
|
||
|
|
||
|
failed = +
|
||
|
set CommonStatus = STATUS_FAILED
|
||
|
ifstr(i) $(REMOVE_FLAG) == TRUE
|
||
|
set REMOVE_FLAG = FALSE
|
||
|
goto RemoveAdmin
|
||
|
endif
|
||
|
goto end
|
||
|
|
||
|
usercancel = +
|
||
|
|
||
|
Set CommonStatus = STATUS_USERCANCEL
|
||
|
|
||
|
end = +
|
||
|
|
||
|
EndWait
|
||
|
Return $(CommonStatus)
|
||
|
|
||
|
;-------------------------------------------------------------
|
||
|
; ROUTINE : Find MediaType
|
||
|
; DESCRIPTION : Gets the media type of the card
|
||
|
; RETURNS : R0: STATUS_SUCCESSFUL | STATUS_FAILED
|
||
|
; : R1: RegistryErrorIndex, if error, else media type
|
||
|
;
|
||
|
;------------------------------------------------------------
|
||
|
|
||
|
[FindMediaType]
|
||
|
|
||
|
Set Status = STATUS_FAILED
|
||
|
Set CardName = $(!NTN_ServiceBase)"\"$($0)"\Parameters"
|
||
|
OpenRegKey $(!REG_H_LOCAL) "" $(CardName) $(!ACCESS) CardKey
|
||
|
|
||
|
Ifstr(i) $(CardKey) == $(!KeyNull)
|
||
|
Set RegistryErrorIndex = $($R0)
|
||
|
Return $(Status) $(RegistryErrorIndex)
|
||
|
EndIf
|
||
|
|
||
|
GetRegValue $(CardKey) "MediaType" MediaTypeList
|
||
|
|
||
|
Set MediaType = *($(MediaTypeList),4)
|
||
|
Set Status = STATUS_SUCCESSFUL
|
||
|
Return $(Status) $(MediaType)
|
||
|
|
||
|
;-------------------------------------------------------------
|
||
|
; ROUTINE : CreateAtalkConfig
|
||
|
; DESCRIPTION : Creates the registry entries for AppleTalk
|
||
|
; RETURNS : R0: STATUS_SUCCESSFUL | STATUS_FAILED
|
||
|
; : R1: RegistryErrorIndex
|
||
|
;
|
||
|
;------------------------------------------------------------
|
||
|
|
||
|
[CreateAtalkConfig]
|
||
|
Set AdapterName = $($0)
|
||
|
Set KeyAdapters = $($1)
|
||
|
Set RetStatus = STATUS_SUCCESSFUL
|
||
|
|
||
|
read-syms GeneralConstants
|
||
|
CreateRegKey $(KeyAdapters) {$(AdapterName), 0, GenericClass} "" $(!ACCESS) "", TempKeyAdapters
|
||
|
|
||
|
Shell "" FindMediaType $($0)
|
||
|
|
||
|
Ifstr(i) $($R0) == STATUS_SUCCESSFUL
|
||
|
Set MediaType = $($R1)
|
||
|
else
|
||
|
Set RegistryErrorIndex = $($R1)
|
||
|
Set RetStatus = $($R0)
|
||
|
goto return
|
||
|
EndIf
|
||
|
set PortName = $($0)"@"$(!STF_COMPUTERNAME)
|
||
|
set ZoneList = {""}
|
||
|
set AarpRetries = 10
|
||
|
set DefaultZone = ""
|
||
|
set NewValueList = +
|
||
|
{{"AarpRetries",0,$(!REG_VT_DWORD),$(AarpRetries)}, +
|
||
|
{"DefaultZone", 0,$(!REG_VT_SZ),$(DefaultZone)},+
|
||
|
{"NetworkRangeUpperEnd",0,$(!REG_VT_DWORD),0 },+
|
||
|
{"NetworkRangeLowerEnd",0,$(!REG_VT_DWORD),0 },+
|
||
|
{"ZoneList",0,$(!REG_VT_MULTI_SZ),$(ZoneList)},+
|
||
|
{"SeedingNetwork", 0,$(!REG_VT_DWORD),0},+
|
||
|
{"DdpCheckSums", 0,$(!REG_VT_DWORD),0},+
|
||
|
{"PortName",0,$(!REG_VT_SZ),$(PortName)}}
|
||
|
|
||
|
Shell $(UtilInf),AddValueList, $(TempKeyAdapters), $(NewValueList)
|
||
|
|
||
|
set RegistryErrorIndex = $($R0)
|
||
|
Ifstr $(RegistryErrorIndex) != NO_ERROR
|
||
|
CloseRegKey $(TmpKeyAdapters)
|
||
|
Set RetStatus = STATUS_FAILED
|
||
|
EndIf
|
||
|
|
||
|
return = +
|
||
|
|
||
|
Return $(RetStatus) $(RegistryErrorIndex)
|
||
|
|
||
|
[RemoveAdminFiles]
|
||
|
|
||
|
Set Status = STATUS_SUCCESSFUL
|
||
|
Set RemoveList = {}
|
||
|
Set DelOnRebootList = {}
|
||
|
Set Mode = $($0)
|
||
|
|
||
|
; Bogus. Option is not local, so is never set. The below code does nothing.
|
||
|
|
||
|
ifstr(i) $(Option) == "SFMADM"
|
||
|
Set RemoveList = >($(RemoveList), #(Files-RemoveList, AFPSVCAPI, 1))
|
||
|
Set RemoveList = >($(RemoveList), #(Files-RemoveList, AFPSVCMGR, 1))
|
||
|
Set RemoveList = >($(RemoveList), #(Files-RemoveList, SFMHELP, 1))
|
||
|
EndIf
|
||
|
|
||
|
ifstr(i) $(Option) == "ATALK"
|
||
|
Set RemoveList = >($(RemoveList), #(Files-RemoveList, ATCONFIG, 1))
|
||
|
Set RemoveList = >($(RemoveList), #(Files-RemoveList, ATMSG, 1))
|
||
|
Set RemoveList = >($(RemoveList), #(Files-RemoveList, ATWSOCK, 1))
|
||
|
Set RemoveList = >($(RemoveList), #(Files-RemoveList, ATDRIVER, 1))
|
||
|
Set RemoveList = >($(RemoveList), #(Files-RemoveList, ATKCTRSDLL, 1))
|
||
|
Set RemoveList = >($(RemoveList), #(Files-RemoveList, ATKCTRNMH, 1))
|
||
|
Set RemoveList = >($(RemoveList), #(Files-RemoveList, ATKCTRSINI, 1))
|
||
|
|
||
|
EndIf
|
||
|
|
||
|
ForListDo $(RemoveList)
|
||
|
|
||
|
Set DelStatus = ""
|
||
|
Debug-Output "Deleting File "$($)
|
||
|
Set FLibraryErrCtl = 1
|
||
|
Ifstr(i) $(Mode) == "REMOVE"
|
||
|
LibraryProcedure DelStatus $(!UTILHANDLE), DelFile $($)
|
||
|
ifstr(i) $(DelStatus) == "FAILED"
|
||
|
Set DelOnRebootList = >($(DelOnRebootList), $($))
|
||
|
EndIf
|
||
|
else
|
||
|
LibraryProcedure DelStatus $(!LIBHANDLE), DelFile $($)
|
||
|
EndIf
|
||
|
Set FLibraryErrCtl = 0
|
||
|
|
||
|
EndForListDo
|
||
|
|
||
|
ForListDo $(DelOnRebootList)
|
||
|
|
||
|
Ifstr(i) $(Mode) == "REMOVE"
|
||
|
Debug-Output "File to remove on reboot = "$($)
|
||
|
AddFileToDeleteList $($)
|
||
|
else
|
||
|
Set FLibraryErrCtl = 1
|
||
|
LibraryProcedure DelStatus $(!LIBHANDLE), DelFile $($)
|
||
|
Set FLibraryErrCtl = 0
|
||
|
EndIf
|
||
|
|
||
|
EndForListDo
|
||
|
|
||
|
Return $(Status)
|
||
|
|
||
|
[Install-Update]
|
||
|
set STF_VITAL = ""
|
||
|
|
||
|
AddSectionFilesToCopyList Files-MISC $(SrcDir) $(!STF_WINDOWSSYSPATH)
|
||
|
|
||
|
Ifstr(i) $(Option) == "ATALK"
|
||
|
AddSectionFilesToCopyList Files-ATALK $(SrcDir) $(!STF_WINDOWSSYSPATH)
|
||
|
AddSectionFilesToCopyList Files-ATALKDRIVER $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers
|
||
|
EndIf
|
||
|
|
||
|
Ifstr(i) $(Option) == "SFMADM"
|
||
|
AddSectionFilesToCopyList Files-ADMTOOLS $(SrcDir) $(!STF_WINDOWSSYSPATH)
|
||
|
EndIf
|
||
|
|
||
|
CopyFilesInCopyList
|
||
|
Exit
|
||
|
|
||
|
[Install-Initial]
|
||
|
|
||
|
set STF_VITAL = ""
|
||
|
|
||
|
AddSectionFilesToCopyList Files-MISC $(SrcDir) $(!STF_WINDOWSSYSPATH)
|
||
|
|
||
|
Ifstr(i) $(Option) == "ATALK"
|
||
|
AddSectionFilesToCopyList Files-ATALK $(SrcDir) $(!STF_WINDOWSSYSPATH)
|
||
|
AddSectionFilesToCopyList Files-ATALKDRIVER $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers
|
||
|
EndIf
|
||
|
|
||
|
Ifstr(i) $(Option) == "SFMADM"
|
||
|
AddSectionFilesToCopyList Files-ADMTOOLS $(SrcDir) $(!STF_WINDOWSSYSPATH)
|
||
|
EndIf
|
||
|
|
||
|
CopyFilesInCopyList
|
||
|
|
||
|
Exit
|
||
|
|
||
|
[AddPrintMonitor]
|
||
|
; Add the AppleTalk Print Monitor Stuff
|
||
|
; display error popups only on install. On upgrade just ignore
|
||
|
; the errors because PrintMon might already be installed
|
||
|
|
||
|
Set Mode = $($0)
|
||
|
Set AddMonStatus = ""
|
||
|
Set FLibraryErrCtl = 1
|
||
|
LibraryProcedure AddMonStatus $(!UTILHANDLE) SfmAddPrintMonitor $(!AtalkMonName)
|
||
|
Set FLibraryErrCtl = 0
|
||
|
ifstr(i) $(AddMonStatus) == "FAILED"
|
||
|
ifstr(i) $(Mode) == install
|
||
|
read-syms AtalkString4$(!STF_LANGUAGE)
|
||
|
Shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) +
|
||
|
"NONFATAL" $(ErrorString)
|
||
|
endif
|
||
|
return
|
||
|
EndIf
|
||
|
|
||
|
; Set up Event Loggin for the AppleTalk Monitor
|
||
|
|
||
|
OpenRegKey $(!REG_H_LOCAL) "" $(!EventLogKey) $(!ACCESS) EvntLogKey
|
||
|
|
||
|
ifstr(i) $(EvntLogKey) != $(!KeyNull)
|
||
|
|
||
|
CreateRegKey $(EvntLogKey) +
|
||
|
{$(!AtalkMonEventLogName),0,GenericClass} "" +
|
||
|
$(!ACCESS) "" AtalkMonKey
|
||
|
|
||
|
ifstr $(AtalkMonKey) != $(!KeyNull)
|
||
|
Set EventFile = "%SystemRoot%\system32\sfmmon.dll"
|
||
|
|
||
|
Set NewValueList = +
|
||
|
{{CategoryMessageFile,0,$(!REG_VT_EXPAND_SZ),$(EventFile)},+
|
||
|
{EventMessageFile,0,$(!REG_VT_EXPAND_SZ),$(EventFile)},+
|
||
|
{CategoryCount,0,$(!REG_VT_DWORD),4},+
|
||
|
{TypesSupported,0,$(!REG_VT_DWORD),7}}
|
||
|
|
||
|
Shell "utility.Inf" AddValueList $(AtalkMonKey) $(NewValueList)
|
||
|
|
||
|
CloseRegKey $(AtalkMonKey)
|
||
|
else
|
||
|
ifstr(i) $(Mode) == install
|
||
|
read-syms AtalkString6$(!STF_LANGUAGE)
|
||
|
Shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) +
|
||
|
"NONFATAL" $(ErrorString)
|
||
|
endif
|
||
|
endif
|
||
|
CloseRegKey $(EvntLogKey)
|
||
|
Else-ifstr(i) $(Mode) == install
|
||
|
read-syms AtalkString6$(!STF_LANGUAGE)
|
||
|
Shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) +
|
||
|
"NONFATAL" $(ErrorString)
|
||
|
EndIf
|
||
|
return
|
||
|
|
||
|
[RemovePrintMonitor]
|
||
|
Set DelMonStatus = ""
|
||
|
Set FLibraryErrCtl = 1
|
||
|
LibraryProcedure DelMonStatus $(!UTILHANDLE) SfmDeletePrintMonitor $(!AtalkMonName)
|
||
|
Set FLibraryErrCtl = 0
|
||
|
ifstr(i) $(DelMonStatus) == "FAILED"
|
||
|
read-syms AtalkString5$(!STF_LANGUAGE)
|
||
|
Shell $(SubInf) SetupMessage $(!STF_LANGUAGE) "NONFATAL" $(ErrorString)
|
||
|
EndIf
|
||
|
|
||
|
OpenRegKey $(!REG_H_LOCAL) "" $(!EventLogKey) $(!ACCESS) LogKey
|
||
|
|
||
|
Ifstr(i) $(LogKey) != $(!KeyNull)
|
||
|
Set AtalkMonKey = $(!AtalkMonEventLogName)
|
||
|
DeleteRegTree $(LogKey) $(AtalkMonKey)
|
||
|
CloseRegKey $(LogKey)
|
||
|
endif
|
||
|
return
|
||
|
|
||
|
;-------------------------------------------------------------
|
||
|
; ROUTINE : CreatePerfKey
|
||
|
; DESCRIPTION : Creates the perf key for the service named &
|
||
|
; : loads the counters to the registry.
|
||
|
; ARGUMENTS : $0: ServiceKey
|
||
|
; : $1: perf counters dll name
|
||
|
; : $2: perf counters file name
|
||
|
; : $3: open routine name
|
||
|
; : $4: close routine name
|
||
|
; : $5: collect routine name
|
||
|
;
|
||
|
; RETURNS : R0: STATUS_SUCCESSFUL | STATUS_FAILED
|
||
|
; : R1: RegistryErrorIndex, if error
|
||
|
;
|
||
|
;------------------------------------------------------------
|
||
|
|
||
|
[CreatePerfKey]
|
||
|
|
||
|
Set Status = STATUS_FAILED
|
||
|
Set ServiceKey = $($0)
|
||
|
Set PerfDll = $($1)
|
||
|
Set PerfCounterFileName = $($2)
|
||
|
Set PerfOpen = $($3)
|
||
|
Set PerfClose = $($4)
|
||
|
Set PerfCollect = $($5)
|
||
|
|
||
|
set KeyPerformance = $(!KeyNull)
|
||
|
OpenRegKey $(ServiceKey) "" $(!PerfKeyName) $(!ACCESS) KeyPerformance
|
||
|
ifstr $(KeyPerformance) == $(!KeyNull)
|
||
|
CreateRegKey $(ServiceKey) {$(!PerfKeyName),$(NoTitle),GenericClass} +
|
||
|
"" $(!ACCESS) "" KeyPerformance
|
||
|
ifstr $(KeyPerformance) == $(!KeyNull)
|
||
|
Debug-Output "Error creating Performance key"
|
||
|
Set RegistryErrorIndex = $($R0)
|
||
|
return $(Status) $(RegistryErrorIndex)
|
||
|
endif
|
||
|
endif
|
||
|
|
||
|
set NewValueList = +
|
||
|
{{Library ,$(NoTitle),$(!REG_VT_SZ),$(PerfDll)},+
|
||
|
{Open, $(NoTitle),$(!REG_VT_SZ),$(PerfOpen)},+
|
||
|
{Close, $(NoTitle),$(!REG_VT_SZ),$(PerfClose)},+
|
||
|
{Collect, $(NoTitle),$(!REG_VT_SZ),$(PerfCollect)}}
|
||
|
|
||
|
Shell utility.inf, AddValueList, $(KeyPerformance), $(NewValueList)
|
||
|
|
||
|
set RegistryErrorIndex = $($R0)
|
||
|
|
||
|
ifint $($ShellCode) != $(!SHELL_CODE_OK)
|
||
|
set RegistryErrorIndex = ERROR
|
||
|
endif
|
||
|
|
||
|
Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
|
||
|
CloseRegKey $(KeyPerformance)
|
||
|
Debug-Output "OEMNXPSM.INF: error adding perf values"
|
||
|
return STATUS_FAILED $(RegistryErrorIndex)
|
||
|
endif
|
||
|
|
||
|
CloseRegKey $(KeyPerformance)
|
||
|
|
||
|
Set Status = STATUS_SUCCESSFUL
|
||
|
return $(Status) $(RegistryErrorIndex)
|
||
|
|
||
|
;-------------------------------------------------------------
|
||
|
; ROUTINE : CreateEventLogKey
|
||
|
; DESCRIPTION : Creates the application event log key
|
||
|
; ARGUMENTS : $0: Application name
|
||
|
; : $1: perf counters dll name
|
||
|
;
|
||
|
; RETURNS : R0: STATUS_SUCCESSFUL | STATUS_FAILED
|
||
|
; : R1: RegistryErrorIndex, if error
|
||
|
;
|
||
|
;------------------------------------------------------------
|
||
|
|
||
|
[CreateEventLogKey]
|
||
|
|
||
|
Set Status = STATUS_FAILED
|
||
|
Set Service = $($0)
|
||
|
Set PerfDll = $($1)
|
||
|
|
||
|
Set EventLogKeyName = $(!EventLogKey)"\"$(Service)
|
||
|
|
||
|
OpenRegKey $(!REG_H_LOCAL) "" $(EventLogKeyName) $(!ACCESS) EvntLogKey
|
||
|
ifstr $(EvntLogKey) == $(!KeyNull)
|
||
|
OpenRegKey $(!REG_H_LOCAL) "" $(!EventLogKey) $(!ACCESS) EvntKey
|
||
|
ifstr(i) $(EvntKey) != $(!KeyNull)
|
||
|
CreateRegKey $(EvntKey) {$(Service),0,GenericClass} +
|
||
|
"" $(!ACCESS) "" EvntLogKey
|
||
|
ifstr $(EvntLogKey) == $(!KeyNull)
|
||
|
Debug-Output "Error creating eventlog key"
|
||
|
Set RegistryErrorIndex = $($R0)
|
||
|
CloseRegKey $(EvntKey)
|
||
|
return $(Status) $(RegistryErrorIndex)
|
||
|
endif
|
||
|
endif
|
||
|
CloseRegKey $(EvntKey)
|
||
|
endif
|
||
|
|
||
|
Set NewValueList = +
|
||
|
{{EventMessageFile,0,$(!REG_VT_EXPAND_SZ),$(PerfDll)}, +
|
||
|
{TypeSupported,0,$(!REG_VT_DWORD),7}}
|
||
|
|
||
|
Shell utility.inf, AddValueList, $(EvntLogKey), $(NewValueList)
|
||
|
|
||
|
set RegistryErrorIndex = $($R0)
|
||
|
ifint $($ShellCode) != $(!SHELL_CODE_OK)
|
||
|
set RegistryErrorIndex = ERROR
|
||
|
endif
|
||
|
|
||
|
Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
|
||
|
CloseRegKey $(EvntLogKey)
|
||
|
Debug-Output "Error adding values to eventlog key"
|
||
|
return $(Status) $(RegistryErrorIndex)
|
||
|
EndIf
|
||
|
|
||
|
CloseRegKey $(EvntLogKey)
|
||
|
set Status = STATUS_SUCCESSFUL
|
||
|
|
||
|
Debug-Output "OEMNXPSM.INF: created the eventlog key"
|
||
|
return $(Status) $(RegistryErrorIndex)
|
||
|
|
||
|
;-------------------------------------------------------------
|
||
|
; ROUTINE : RemoveAllServiceDependencies
|
||
|
; DESCRIPTION : Removes any service dependencies for
|
||
|
; the specified service
|
||
|
; ARGUMENTS : $0: Service name
|
||
|
;
|
||
|
; RETURNS : R0: STATUS_SUCCESSFUL
|
||
|
;
|
||
|
;------------------------------------------------------------
|
||
|
|
||
|
[RemoveAllServiceDependencies]
|
||
|
|
||
|
Debug-Output "RemoveAllServiceDependencies: entry"
|
||
|
|
||
|
set Status = STATUS_SUCCESSFUL
|
||
|
Set KeyNull = ""
|
||
|
set DependentService = $(!NTN_ServiceBase)\$($0)
|
||
|
set DependentName = $($0)
|
||
|
set KeyService = $(KeyNull)
|
||
|
|
||
|
OpenRegKey $(!REG_H_LOCAL) "" $(DependentService) $(!ACCESS) KeyService
|
||
|
ifstr $(KeyService) != $(KeyNull)
|
||
|
set newDependList = {}
|
||
|
GetRegValue $(KeyService) "DeleteFlag" DeleteFlagValue
|
||
|
; make sure the service is not marked for deletion
|
||
|
ifint $(RegLastError) != 0
|
||
|
GetRegValue $(KeyService) "DependOnService" ServiceList
|
||
|
ifint $(RegLastError) == 0
|
||
|
Debug-Output "RemoveAllServiceDependencies: old DependOnService List "*($(ServiceList), 4)
|
||
|
; get any existing group dependencies
|
||
|
GetRegValue $(KeyService) "DependOnGroup" GrpList
|
||
|
ifint $(RegLastError) == 0
|
||
|
ForListDo *($(GrpList),4)
|
||
|
set grp = "+"$($)
|
||
|
set newDependList = >($(newDependList), $(grp))
|
||
|
EndForListDo
|
||
|
endif
|
||
|
Debug-Output "RemoveAllServiceDependencies: new DependOnService List "$(newDependList)
|
||
|
; now set only the group dependency
|
||
|
LibraryProcedure Result, $(!LIBHANDLE), +
|
||
|
SetupChangeServiceConfig, $(DependentName) +
|
||
|
$(!SERVICE_NO_CHANGE), $(!SERVICE_NO_CHANGE), +
|
||
|
$(!SERVICE_NO_CHANGE), "", "", +
|
||
|
$(newDependList), "", "", ""
|
||
|
endif
|
||
|
endif
|
||
|
CloseRegKey $(KeyService)
|
||
|
else
|
||
|
Debug-Output "RemoveAllServiceDependencies: failed to open service key "$(DependentService)
|
||
|
endif
|
||
|
|
||
|
Debug-Output "RemoveAllServiceDependencies: exit"
|
||
|
return $(Status)
|
||
|
|
||
|
[Files-RemoveList]
|
||
|
|
||
|
AFPSVCAPI = $(!STF_WINDOWSSYSPATH)\sfmapi.dll
|
||
|
AFPSVCMGR = $(!STF_WINDOWSSYSPATH)\sfmmgr.dll
|
||
|
SFMHELP = $(!STF_WINDOWSSYSPATH)\sfmmgr.hlp
|
||
|
ATCONFIG = $(!STF_WINDOWSSYSPATH)\sfmatcfg.dll
|
||
|
ATMSG = $(!STF_WINDOWSSYSPATH)\sfmatmsg.dll
|
||
|
ATWSOCK = $(!STF_WINDOWSSYSPATH)\sfmwhsat.dll
|
||
|
ATDRIVER = $(!STF_WINDOWSSYSPATH)\drivers\sfmatalk.sys
|
||
|
ATKCTRSDLL = $(!STF_WINDOWSSYSPATH)\atlkctrs.dll
|
||
|
ATKCTRNMH = $(!STF_WINDOWSSYSPATH)\atlkctrnm.h
|
||
|
ATKCTRSINI = $(!STF_WINDOWSSYSPATH)\atlkctrs.ini
|