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