Несколько сервисов в одной сборке. Как установщик знает, какую службу установить и запустить?
У меня есть проект, который включает в себя 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.