我有一个Windows服务可执行文件,我知道它是用.NET编写的,我需要使用其他服务名称进行安装以避免冲突。无论如何,安装不提供指定服务名称。如果我只能访问二进制文件,那么用installutil安装该文件时是否有覆盖服务名的东西?
Answers:
您必须使用InstallUtil吗?以下是使用sc进行所需操作的命令:
sc create MyService binPath= "MyService.exe" DisplayName= "MyService"
sc description MyService "My description"
InstallUtil不允许您配置服务名称是不正确的。我一直这样
InstallUtil.exe /servicename="<service name>" "<path to service exe>"
System.ComponentModel.Win32Exception: The specified service already exists
。我试图安装2个相同服务的实例,并以不同的方式命名它们。使用以下答案中给出的sc创建方法
添加方法以获取CustomService名称
private void RetrieveServiceName()
{
var serviceName = Context.Parameters["servicename"];
if (!string.IsNullOrEmpty(serviceName))
{
this.SomeService.ServiceName = serviceName;
this.SomeService.DisplayName = serviceName;
}
}
呼吁安装和卸载
public override void Install(System.Collections.IDictionary stateSaver)
{
RetrieveServiceName();
base.Install(stateSaver);
}
public override void Uninstall(System.Collections.IDictionary savedState)
{
RetrieveServiceName();
base.Uninstall(savedState);
}
installutil /servicename=”My Service [SysTest]” d:\pathToMyService\Service.exe