Несколько сервисов в одной сборке. Как установщик знает, какую службу установить и запустить?

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

Решение

Он основан на ServiceName,

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

Error 1083: The executable program that this service is configured to run in does not implement the service.
Другие вопросы по тегам