2012-08-02 126 views
8

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

我根据config文件中的值分配servicename,description,displayaname,所以没有命名冲突。

+0

快来加入邮件列表,如果可以的话,包括日志输出。 https://groups.google.com/forum/#!forum/topshelf-discuss。这将很难在SO中找到;但是,您可以设置“实例”名称,以允许您运行两个相同的服务。 – Travis 2012-08-02 13:54:27

+0

你确定servicename和displayname是唯一的吗?试图用独特的服务名称安装两个服务,但使用相同的显示名称,它没有工作。 – Bomberlt 2014-09-04 07:03:29

回答

22

这是服务的instancename,你需要区分。

documentation

service.exe [动词] [ - 选项:值] [-switch]

安装安装服务

-instance一个实例名称如果多次注册服务

所以,你可以使用:

service.exe install -instance:FirstInstanceOfMyService 

service.exe install -instance:SecondInstanceOfMyService 
5

如果你想要的是在配置文件中设置服务实例的名称,你可以通过编程设置实例名称如下:

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 
相关问题