あなたが直面している問題は、サービスの複数のインスタンスが同じ名前を共有できないことだと思います。これを回避する方法は、インスタンスを別の名前でインストールすることです。サービス インストーラー クラスにパラメーターを吸収させることができます。
[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