0

いくつかのパフォーマンスカウンターがあるNTサービスがあります。installutilを使用してサービスをデプロイすると、perfカウンターとサービスが正常にインストールされます。ServiceInstallを使用するmsiを使用してデプロイすると、サービスは表示されますが、パフォーマンスカウンターがインストールされません。

私はいつも、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());
    }
}
4

1 に答える 1

0

いいえ、あなたの仮定は正しくありません。ServiceInstall は、パフォーマンス カウンターをインストールするために内部で InstallUtil を呼び出しません。通常、InstallUtil の使用は悪い習慣として扱われます。

代わりに、PerformanceCategory要素とPerformanceCounter要素を見てください。もちろん、これには、現在 C# で行っていることを宣言型 XML 形式に変換するためのコーディングが必要になります。

于 2011-02-24T19:57:34.567 に答える