我想使用TopShelf創建Windows服務。一切正常,服務的一個實例。但是,當我將整個服務文件夾複製到其他位置,然後在該位置運行安裝時,它只會掛在「啓動」上。TopShelf在同一臺機器上安裝多個相同的服務
我根據config文件中的值分配servicename,description,displayaname,所以沒有命名衝突。
我想使用TopShelf創建Windows服務。一切正常,服務的一個實例。但是,當我將整個服務文件夾複製到其他位置,然後在該位置運行安裝時,它只會掛在「啓動」上。TopShelf在同一臺機器上安裝多個相同的服務
我根據config文件中的值分配servicename,description,displayaname,所以沒有命名衝突。
這是服務的instancename
,你需要區分。
service.exe [動詞] [ - 選項:值] [-switch]
安裝安裝服務
-instance一個實例名稱如果多次註冊服務
所以,你可以使用:
service.exe install -instance:FirstInstanceOfMyService
service.exe install -instance:SecondInstanceOfMyService
如果你想要的是在配置文件中設置服務實例的名稱,你可以通過編程設置實例名稱如下:
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
快來加入郵件列表,如果可以的話,包括日誌輸出。 https://groups.google.com/forum/#!forum/topshelf-discuss。這將很難在SO中找到;但是,您可以設置「實例」名稱,以允許您運行兩個相同的服務。 – Travis 2012-08-02 13:54:27
你確定servicename和displayname是唯一的嗎?試圖用獨特的服務名稱安裝兩個服務,但使用相同的顯示名稱,它沒有工作。 – Bomberlt 2014-09-04 07:03:29