2011-02-24 46 views
0

我有一個NT服務,有一些性能計數器。當我使用installutil部署服務時,perf計數器和服務安裝正常。當我使用我的msi進行部署時,使用ServiceInstall,該服務顯示出來,但不會安裝perf計數器。Perf計數器不使用服務安裝使用ServiceInstall

我總是假設ServiceInstall在封面下運行installutil。是否有一些關鍵差異會阻止我安裝perf計數器?

維克斯段

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

回答

0

不,你的假設是不正確的。 ServiceInstall不會在安裝性能計數器的情況下調用InstallUtil。使用InstallUtil通常被認爲是不好的做法。

取而代之,請看PerformanceCategoryPerformanceCounter元素。當然,這需要一些編碼來將您現在使用C#進行的操作轉換爲聲明式XML表單。

+0

我很好奇。如果我的服務已經在使用.Net框架的一個版本,爲什麼調用InstallUtil會這麼糟糕?它不會添加任何尚未存在的附加依賴關係,在這種情況下,它會簡化部署。 – user467384 2011-02-24 21:33:38

+0

查看與WiX Toolset一起安裝的dtf.chm文件。包含一篇名爲「InstallUtil Notes」的文章。它給出了一些基本的想法。另外,您可能有興趣查看此討論:http://stackoverflow.com/questions/3241377/wix-service-installer-and-custom-install-events – 2011-02-25 06:39:54