15

我正在尝试使用 TopShelf 创建 Windows 服务。使用该服务的一个实例一切正常。但是,当我将整个服务文件夹复制到不同的位置,然后在该位置运行安装时,它只会挂在“启动”上。

我根据配置文件中的值分配服务名称、描述、显示名称,因此没有命名冲突。

4

2 回答 2

30

instancename您需要区分的是服务。

文档中:

service.exe [动词] [-option:value] [-switch]

install安装服务

-instance 多次注册服务时的实例名称

所以你可以使用:

service.exe install -instance:FirstInstanceOfMyService

service.exe install -instance:SecondInstanceOfMyService
于 2012-10-16T08:37:54.553 回答
9

如果您想要在配置文件中设置服务实例名称,您可以像这样以编程方式设置实例名称:

var instanceName = ConfigurationManager.AppSettings["Instance"];
HostFactory.Run(hostConfigurator =>
{    
    ...   
    hostConfigurator.SetDisplayName("My service");
    hostConfigurator.SetDescription("My service that does something");
    hostConfigurator.SetServiceName("MyService");
    hostConfigurator.SetInstanceName(instanceName);
}

所以,在安装过程中你只运行

  MyService.exe install
于 2016-01-14T16:18:54.330 回答