2012-08-02 21 views
8

Próbuję utworzyć usługę Windows przy użyciu TopShelf. Wszystko działa dobrze z jednym wystąpieniem usługi. Jednak po skopiowaniu całego folderu usług do innej lokalizacji, a następnie uruchomieniu instalacji w lokalizacji, po prostu zawiesza się na "startup".TopShelf zainstalować wiele tej samej usługi na tej samej maszynie

Przypisuję nazwę usługi, opis, displayaname na podstawie wartości w plikach konfiguracyjnych, więc nie ma konfliktu nazw.

+0

Przyjdź i dołącz do listy mailingowej z tym, i to wyjście dziennika, jeśli możesz. https://groups.google.com/forum/#!forum/topshelf-discuss. Będzie to trudne do zrozumienia w SO; Można jednak ustawić nazwę "instancji", która powinna umożliwiać uruchamianie dwóch takich samych usług. – Travis

+0

Czy jesteś pewien, że nazwa usługi i nazwa wyświetlana są unikalne? Próbowałem zainstalować dwie usługi z unikalnymi nazwami usług, ale używając tej samej nazwy displayname i to nie zadziałało. – Bomberlt

Odpowiedz

22

To usługa instancename, którą trzeba rozróżnić.

Z documentation:

service.exe [czasownik] [-opcja: wartość] [-switch]

zainstalować Instaluje usługę

-instance instancji nazwa w przypadku wielokrotnej rejestracji usługi

Więc można użyć:

service.exe install -instance:FirstInstanceOfMyService 

service.exe install -instance:SecondInstanceOfMyService 
5

Jeśli to, co chcesz, aby ustawić nazwę instancji usługi w pliku konfiguracyjnym można ustawić nazwę instancji programowo tak:

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); 
} 

Tak, podczas instalacja tylko biegać

MyService.exe install 
Powiązane problemy