我认为你面临的问题是多个服务实例不能共享同一个名称。我的工作方式是使用不同的名称安装实例。你可以有你的服务安装程序类吸收参数:
[RunInstaller(true)]
public partial class ProjectInstaller : Installer
{
public ProjectInstaller()
{
InitializeComponent();
}
public override void Install(IDictionary stateSaver)
{
ResolveServiceName();
base.Install(stateSaver);
}
private void ResolveServiceName()
{
serviceInstaller1.ServiceName = Context.Parameters["ServiceName"];
serviceInstaller1.DisplayName = Context.Parameters["ServiceName"];
}
public override void Uninstall(IDictionary savedState)
{
ResolveServiceName();
base.Uninstall(savedState);
}
}
当您安装的服务,您提供的ServiceName
参数:
installutil.exe /ServiceName=foo YourService.exe