4

我有一个项目,其中包括 2 个 Windows 服务。我创建了一个 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);
        }
    }
}
4

1 回答 1

4

它基于ServiceName.

安装程序并不真正关心名称,您可以提供几乎任何名称,安装程序将很乐意为您注册使用此名称的 Windows 服务,但是当您尝试启动服务时,它将失败,除非它在您的与安装程序中指定的ServiceName匹配的程序集ServiceName

Error 1083: The executable program that this service is configured to run in does not implement the service.
于 2011-05-17T23:57:53.330 回答