2009-10-13 8 views
45

He creado un servicio de Windows en C#, utilizando Visual Studio 2008 yo más o menos seguido este: http://www.codeproject.com/KB/dotnet/simplewindowsservice.aspxservicio de Windows que no aparece en la lista de servicios después de instalar

he creado un proyecto de instalación, como se indica en el artículo, y lo ejecutó ... instala mi servicio a c: \ archivos de programa \ producto, etc. ... sin embargo, no aparece en la lista de servicios ...

¿Qué me falta?

+0

Difícil de adivinar sin más información. Si hizo todo lo descrito en el artículo e instaló el servicio, debería estar disponible. – Foxfire

+0

¿Intentó actualizar la consola de servicios? La lista en la consola no se actualiza automáticamente. Si ya tenía la consola abierta cuando instaló su servicio, intente actualizarla (o reiniciarla). –

Respuesta

90

La parte más importante del artículo se ha vinculado, es aquí

Para añadir una acción personalizada para el proyecto de instalación

1.In el Explorador de soluciones, haga clic derecho en el proyecto de instalación, señale Ver, luego seleccione Acciones personalizadas. Aparece el editor de acciones personalizado .

2.En el editor de acciones personalizadas, haga clic con el botón derecho en el nodo Acciones personalizadas y elija Agregar acción personalizada. Aparece el cuadro de diálogo Seleccionar elemento en proyecto .

3. Haga doble clic en la carpeta de la aplicación en el cuadro de lista para abrirla, seleccione salida primaria desde MyNewService (Activo) y haga clic en Aceptar. La salida primaria se agrega a los cuatro nodos de las acciones personalizadas Install, Commit, Rollback y Desinstalar.

4.Construya el proyecto de instalación.

Si se salta estos pasos, su proyecto de instalación construirá y copiar los archivos en el directorio correcto; sin embargo, no registrarán su binario como un servicio sin estos pasos.


También debo señalar que esto funciona para versiones anteriores de Visual Studio que tenía/tiene la plantilla de proyecto integrado en el programa de instalación/despliegue. Las nuevas versiones de Visual Studio tienen diferentes proyectos de instalación/despliegue (algunos software de terceros que requiere.)

que recomiendo mirar en WiX Toolset y comprobar aquí para WiX Installation of Windows Services.

+0

¿Hay alguna forma de iniciar el servicio como parte de la instalación también? Sé que puede configurar StartType a Automático, pero eso solo inicia el servicio después de un reinicio. –

+0

Muchas gracias @Nate. Mientras repasaba sus instrucciones, recordé que esto era lo que tenía que hacer la última vez. –

+0

Spot on! Gracias, me ayudó – Srini

4

me poseía en la cara por éste, así que lo estoy poniendo aquí solo en caso de que alguien más se encuentre con él.

Si siguió las instrucciones en las guías pero todavía tiene problemas para instalar, asegúrese de que su clase de instalador sea pública. Interno no funcionará

+0

Oh hombre, gracias. ¡Creo que esto es una locura! Me puse engreído y pensé "meh, es solo un instalador, ¿por qué molestarse en hacer pública la envoltura de la clase?" y lo eliminó sin siquiera pensar - boom, surgió el problema. – Alexandru

5

Tuve el mismo problema y luego me di cuenta de que nunca configuré el padre para el ServiceInstaller.

Haga doble clic en el instalador de su proyecto. El diseñador debe mostrar un instalador de servicio e instalador de proceso. Al hacer clic en cualquiera de ellos y ver las propiedades, debe tener en cuenta el atributo principal que se debe establecer en el nombre de la clase del instalador del proyecto.

O, si lo hace en el código, asegúrese de que establece:

serviceInstaller.Parent = this; 

y

serviceProcessInstaller.Parent = this; 
+0

¡Gracias! este me ayudó mucho – amaters

3

Al instalar los servicios, recomendaría encarecidamente utilizar NSSM, que funcionaba bien para mí por todas mis necesidades de WinService. Puede instalar cualquier ejecutable (incluso si es .bat, .cmd) como un servicio, y garantiza que su servicio esté siempre en funcionamiento.

Para utilizar esta herramienta:

  1. Descarga desde here

  2. y siga las instrucciones here

continuación, compruebe la lista de servicios, que debería estar ahí, arriba, y corriendo.

0

En Visual Studio 2013 me encontré con el mismo problema al utilizar la plantilla InstallShield para la aplicación de servicio. Pero funciona como un encanto cuando se utiliza la plantilla de Proyecto de instalación https://visualstudiogallery.msdn.microsoft.com/9abe329c-9bba-44a1-be59-0fbf6151054d

así que descargue la plantilla del proyecto de instalación, cierre su Studio, ejecute esta instalación y comience su Studio, esto funcionará.

Dunn.

0

Aquí hay un buen tutorial de tgeek001 de CodeProject.com que me ayudó. Incluye varias cosas que no vi en las publicaciones anteriores: 1. Código del controlador de eventos para detener el servicio antes de desinstalarlo 2. Condiciones y propiedades específicas en el código de acciones personalizadas para establecer a fin de evitar fallas (estas arreglaron el error 1001 que experimentó mientras sigue las instrucciones en la respuesta aceptada anteriormente) propiedad 3. Servicio de victorias "Quitar la versión anterior" desplegable establece en true

http://www.codeproject.com/Tips/575177/Window-Service-Deployment-using-VS

lo siguiente es de la clase particular para Configuración de acciones personalizadas (caso):

  • instalar, configurar la propiedad Condición a lo siguiente: "NO (Instalado o PREVIOUSVERSIONSINSTALLED)"
  • desinstalar, establezca la propiedad Condición a: "NO UPGRADINGPRODUCTCODE"
  • Commit: Establecer campo "Datos de acción personalizado" a:/OldProductCode = "[PREVIOUSVERSIONSINSTALLED]"

por último, en el proyecto WinService, asegúrese de ajustar el menú desplegable "Quitar versiones anteriores" true.

aplausos

0

descubrí que su clase instalador mucho estar en el mismo proyecto que el Servicio. El instalador no puede existir en un proyecto de biblioteca al que hace referencia el Servicio.

Cuestiones relacionadas