Счетчики производительности не устанавливаются вместе со службой с использованием 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.