2012-08-02 128 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 
相關問題