0

我有一个 NT 服务,它有一些性能计数器。当我使用 installutil 部署服务时,性能计数器和服务安装正常。当我使用使用 ServiceInstall 的 msi 进行部署时,会显示该服务,但未安装性能计数器。

我总是假设 ServiceInstall 在幕后运行 installutil。是否有一些关键的区别会阻止我安装性能计数器?

蜡段

<ServiceInstall Id='ServiceInstall' ErrorControl='ignore' Type='ownProcess' DisplayName='Service' Description='service' Name='Service' Start='auto' Account='[SERVICEACCOUNT]' Password='[SERVICEACCOUNTPASSWORD]' /> 
<ServiceControl Id='Service' Remove='uninstall' Name='Service' Start='install' Stop='both' Wait='yes' />

性能计数器安装

[RunInstallerAttribute(true)]
[RegistryPermissionAttribute(SecurityAction.LinkDemand, Unrestricted = true)]
[EnvironmentPermissionAttribute(SecurityAction.InheritanceDemand, Unrestricted = true)]
public sealed class CountersInstaller : Installer
{
    public CountersInstaller()
    {
        Installers.AddRange(Counters.Instance.PerformanceCounterInstallers());
    }
}
4

1 回答 1

0

不,你的假设不正确。ServiceInstall 不会在后台调用 InstallUtil 来安装性能计数器。使用 InstallUtil 通常被视为一种不好的做法。

相反,请查看PerformanceCategoryPerformanceCounter元素。当然,这需要一些编码来将您现在使用 C# 执行的操作转换为声明性 XML 形式。

于 2011-02-24T19:57:34.567 回答