2012-08-02 7 views
8

Estoy intentando crear un servicio de Windows usando TopShelf. Todo funciona bien con una instancia del servicio. Sin embargo, cuando copio toda la carpeta de servicios en una ubicación diferente y luego ejecuto la instalación en la ubicación, simplemente cuelga en "inicio".TopShelf instalar múltiples del mismo servicio en la misma máquina

Asigno el nombre del servicio, la descripción, la visualización en función del valor de los archivos de configuración para que no haya conflictos de nomenclatura.

+0

Acceda a la lista de correo con esto e incluya el resultado del registro si puede. https://groups.google.com/forum/#!forum/topshelf-discuss. Esto será difícil de entender en SO; sin embargo, puede establecer un nombre de "instancia" que le permita ejecutar dos de los mismos servicios. – Travis

+0

¿Está seguro de que el nombre de servicio y el nombre de visualización son únicos? Intenté instalar dos servicios con servicios únicos pero usando el mismo nombre de visualización y tampoco funcionó. – Bomberlt

Respuesta

22

Es el servicio instancename que debe diferenciar.

Desde el documentation:

service.exe [verbo] [-opción: valor] [-switch]

instalación instala el servicio

-instance Una instancia nombre si registra el servicio varias veces

lo que podría utilizar:

service.exe install -instance:FirstInstanceOfMyService 

service.exe install -instance:SecondInstanceOfMyService 
5

Si lo que quiere es establecer el nombre de la instancia de servicio en el archivo de configuración, se puede establecer el nombre de la instancia mediante programación como esto:

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

Así, durante la instalación solo ejecuta

MyService.exe install 
Cuestiones relacionadas