Счетчики производительности не устанавливаются вместе со службой с использованием ServiceInstall

У меня есть служба NT, у которой есть некоторые счетчики перфорации. Когда я развертываю сервис с помощью installutil, счетчики перфорации и сервис устанавливаются нормально. Когда я развертываю, используя мой MSI, который использует ServiceInstall, служба обнаруживается, но счетчики производительности не устанавливаются.

Я всегда просто предполагал, что ServiceInstall запускает installutil под одеялом. Есть ли какая-то критическая разница, которая помешала бы мне установить счетчики перф?

Сегмент Wix

<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());
    }
}

1 ответ

Нет, ваше предположение неверно. ServiceInstall не вызывает InstallUtil под капотом для установки счетчиков производительности. Использование InstallUtil обычно считается плохой практикой.

Вместо этого взгляните на элементы PerformanceCategory и PerformanceCounter. Конечно, это потребует некоторого кодирования для преобразования того, что вы сейчас делаете с C#, в декларативную форму XML.

Другие вопросы по тегам