Несколько сервисов в одной сборке. Как установщик знает, какую службу установить и запустить? - PullRequest
4 голосов
/ 18 мая 2011

У меня есть проект, который включает в себя 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);
        }
    }
}

1 Ответ

4 голосов
/ 18 мая 2011

Он основан на ServiceName.

На самом деле имя установщика не имеет значения, вы можете указать практически любое имя, и установщик будет рад зарегистрировать службу Windows с этим именем для вас,но когда вы попытаетесь запустить службу, произойдет сбой, если только он не обнаружит службу в вашей сборке, у которой ServiceName соответствует ServiceName, указанному в установщике.

Error 1083: The executable program that this service is configured to run in does not implement the service.
...