El servicio de Windows no aparece en la lista de servicios después de la instalación

Creé un servicio de Windows en c #, usando Visual Studio 2008, seguí bastante esto: http://www.codeproject.com/KB/dotnet/simplewindowsservice.aspx

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

¿Qué me estoy perdiendo?

La parte más importante del artículo que vinculó está aquí

Para agregar una acción personalizada al proyecto de instalación

1. En el Explorador de soluciones, haga clic con el botón derecho en el proyecto de configuración, señale Ver, luego elija Acciones personalizadas. Aparece el editor de acciones personalizadas.

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 la salida primaria de MyNewService (Activo) y haga clic en Aceptar. La salida principal se agrega a los cuatro nodos de las acciones personalizadas Instalar, Comprometer, Revertir y Desinstalar.

4. Construya el proyecto de instalación.

Si se saltea estos pasos, su proyecto de configuración creará y copiará sus archivos en el directorio correcto; sin embargo, no registrarán su binario como un servicio sin estos pasos.


También debería tener en cuenta que esto funciona para las versiones anteriores de Visual Studio que tenían / ​​tenían la plantilla de proyecto de Instalación / Despliegue integrada. Las versiones más nuevas de Visual Studio tienen diferentes proyectos de configuración / implementación (algunos requieren software de terceros).

Recomiendo buscar en WiX Toolset y comprobar aquí para WiX Installation of Windows Services.

Me enredé en esta cara, así que lo estoy poniendo aquí por si acaso alguien más se topa con eso.

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

Tuve este 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 bien, si lo hace en código, asegúrese de configurar:

 serviceInstaller.Parent = this; 

y

 serviceProcessInstaller.Parent = this; 

Al instalar servicios, recomendaría altamente usar NSSM , que funcionó bien para 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 usar esta herramienta:

  1. Descargar desde aquí

  2. Y sigue las instrucciones aquí

Luego, consulte la lista de servicios, debería estar allí, arriba y en ejecución.

Sigue estas instrucciones, me funcionaron. Para la configuración específicamente, esa parte está cerca de la parte inferior del artículo.

MSDN: Tutorial: crear un servicio de Windows

En Visual Studio 2013 me encontré con el mismo problema al usar 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 de Setup Project cierre su Studio, ejecute esta instalación y comience su Studio, esto funcionará.

Dunn.

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é al seguir las instrucciones en la respuesta aceptada más arriba) 3. Ganar propiedad de la propiedad “Eliminar versión anterior” lista desplegable establecida en verdadero

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

Lo siguiente es del tutorial para Configuraciones de Acciones Personalizadas (asuntos de casos):

  • Instalar, establezca la propiedad Condición en lo siguiente: “NO (instalado o PREVIOUSVERSIONSINSTALLED)”
  • Desinstale, establezca la propiedad Condición en: “NO ACTUALIZANDO EL CÓDIGO DE PRODUCTO”
  • Confirmar: establezca el campo “Datos de acción personalizados” en: / OldProductCode = “[PREVIOUSVERSIONSINSTALLED]”

Por último, en el proyecto WinService, asegúrese de establecer el menú desplegable “Eliminar versiones anteriores” en verdadero.

aclamaciones

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