4
我有一個項目,其中包括2個窗口服務。我創建一個ProjectInstaller來安裝這些項目,這很好。但我有一個問題;根據下面定義的代碼,項目安裝程序如何知道爲serviceInstaller1安裝哪個服務以及爲serviceInstaller2安裝哪個服務?一個裝配中的多個服務。安裝程序如何知道要安裝並啓動哪個服務?
它只是基於ServiceName嗎?
[RunInstaller(true)]
public partial class ProjectInstaller : System.Configuration.Install.Installer
{
private ServiceProcessInstaller process;
private ServiceInstaller serviceInstaller1;
private ServiceInstaller serviceInstaller2;
public ProjectInstaller()
{
InitializeComponent();
try
{
process = new ServiceProcessInstaller();
process.Account = ServiceAccount.LocalSystem;
serviceInstaller1 = new ServiceInstaller();
serviceInstaller1.ServiceName = "xxx";
serviceInstaller1.Description = "Does Something";
serviceInstaller1.StartType = ServiceStartMode.Automatic;
serviceInstaller2 = new ServiceInstaller();
serviceInstaller2.ServiceName = "yyy";
serviceInstaller2.Description = "Does something else";
serviceInstaller2.StartType = ServiceStartMode.Automatic;
Installers.Add(process);
Installers.Add(serviceInstaller1);
Installers.Add(serviceInstaller2);
}
catch (Exception ex)
{
throw new Exception("Failed", ex);
}
}
}
還有一個問題,當僅使用一個服務進行部署時,我假設名稱並不重要,因爲它只是安裝它找到的第一個服務。它是否正確? – 2011-05-18 08:53:39
@Mick Walker - 如果您在安裝程序中有一項服務,並且您爲'ServiceBase.Run()'方法提供了一項或多項服務,則無論服務名稱如何,集合中的第一項服務都將被使用。 – 2011-05-18 15:59:20
如果我需要使用不同憑據從一個程序集創建兩個服務,該怎麼辦? – Kobor42 2013-10-18 14:15:00