Cómo crear un proyecto de instalación para una aplicación de servicio de Windows en Visual C#

Seleccione idioma Seleccione idioma
Id. de artículo: 816169 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

En este artículo se describe cómo crear un proyecto de instalación para una aplicación de servicio de Windows (antes denominado "servicio NT"). Para ello, primero debe crear una solución que contiene un proyecto sencillo de servicio de Windows que escribe una entrada en el registro de la aplicación. Después agregar un proyecto de instalación a la solución para instalar el servicio de la ventana. Por último, se inicia el servicio. Puede iniciar el servicio con el elemento de servicios en la carpeta Herramientas administrativas del menú Inicio.

Requisitos

La lista siguiente describe el hardware, software, infraestructura de red y service packs recomendados que debe de tener:
  • Microsoft Windows 2000, Windows XP, Windows Server 2003 o un sistema operativo de Microsoft más adelante con el.NET Framework instalado
  • Microsoft Visual Studio .NET Enterprise, Microsoft Visual Studio .NET Enterprise Architect, Microsoft Visual Studio 2005 o Microsoft Visual Studio 2008.
En este artículo se supone que está familiarizado con los servicios de Windows. Si no está familiarizado con los servicios de Windows, consulte la primera referencia en la REFERENCIAS sección de este artículo.

En este artículo también se supone que la cuenta de usuario que utiliza para instalar y ejecutar este servicio tiene los permisos necesarios para instalar y para iniciar los servicios y también tiene los permisos necesarios para tener acceso al registro de eventos.

Crear un proyecto de instalación para un servicio de Windows

En esta sección se describe cómo crear un proyecto de servicio de Windows y cómo utilizar un proyecto de instalación compilado para instalar el servicio de Windows.

Cree un proyecto de servicio de Windows

  1. Inicie Microsoft Visual Studio.
  2. En el menú archivo , elijanuevoy, a continuación, haga clic en proyecto.
  3. Haga clic en Proyectos de Visual C# en Tipos de proyectoy, a continuación, haga clic en Servicio de Windows en plantillas.

    Nota En Visual Studio 2005 o Visual Studio 2008, expanda Visual C#<b00> </b00> en Tipos de proyecto, haga clic en ventanasy, a continuación, haga clic en Servicio de Windows en plantillas.
  4. Tipo LogWriterService en el cuadro de texto nombre y, a continuación, escriba C:\ en el cuadro de texto ubicación . Haga clic en Aceptar.
  5. En el Explorador de soluciones, derecha Service1.csy haga clic en y, a continuación, haga clic en ViewCode.
  6. En el controlador de eventos OnStart , reemplace thecomments con el código siguiente:
    EventLog.WriteEntry("My simple service started.");
  7. En el Explorador de soluciones, haga doble clic enService1.cs.
  8. En la ventana del Editor de código, haga clic enLa vista Diseñoy, a continuación, haga clic enPropiedades
  9. En el panel Propiedades, haga clic en el vínculoAgregar instalador .
  10. En el panel PropiedadesServiceInstaller1, cambie la propiedad ServiceNameen Service1.
  11. En la ventana del Editor de código en la vista Diseño, haga clic en ServiceProcessInstaller1.
  12. En el panel Propiedades, cambie la propiedad decuenta a LocalSystem (El LocalService y NetworkService los valores sólo están disponibles en Microsoft Windows XP).

Utilizar un proyecto de instalación compilado para instalar el servicio de Windows

Después de completar los pasos descritos en la sección anterior para configurar el proyecto de servicio de Windows, siga estos pasos para agregar un proyecto de implementación que se empaqueta la aplicación de servicio para que la aplicación de servicio puede instalarse:
  1. Agregue un nuevo proyecto en el proyecto LogWriterService. Para ello, siga estos pasos:
    1. En el Explorador de soluciones, haga clic en solución 'LogWriterService' (1 proyecto), elija Agregary, a continuación, haga clic en Nuevo proyecto.
    2. Haga clic en el programa de instalación y proyectos de implementación en Tipos de proyectoy, a continuación, haga clic en Proyecto de instalación en plantillas.
    3. En el cuadro de texto nombre , escriba ServiceSetup.
    4. Tipo C:\ en el texto de ubicación y a continuación, haga clic en Aceptar.
  2. Diga el proyecto de implementación al paquete. Para ello, siga estos pasos:
    1. En el Explorador de soluciones, haga clic en ServiceSetup, elija Agregary, a continuación, haga clic en Resultados del proyecto
    2. En el cuadro de diálogo Agregar grupo de resultados del proyecto , en el cuadro proyecto , haga clic en LogWriterService
    3. Haga clic en Resultado principaly, a continuación, haga clic en Aceptar.
  3. Para una instalación correcta, agregue sólo resultado principal. Para agregar las acciones personalizadas, siga estos pasos:
    1. En el Explorador de soluciones, haga clic en ServiceSetup, Vista y, a continuación, haga clic en Acciones personalizadas
    2. Haga clic en Acciones personalizadasy, a continuación, haga clic en Agregar acción personalizada.
    3. Haga clic en la Carpeta de la aplicacióny, a continuación, haga clic en Aceptar.
    4. Haga clic en resultado principal desde LogWriterService (activo)y, a continuación, haga clic en Aceptar.

      Observe que el resultado principal aparece en Install, Commit, Rollback y Uninstall.
  4. De manera predeterminada, los proyectos de instalación no se incluyen en la configuración de generación. Para generar la solución, utilice uno de los métodos siguientes:
    • Método 1
      1. Haga clic en LogWriterServicey, a continuación, haga clic en Generar.
      2. Haga clic en ServiceSetupy, a continuación, haga clic en Generar.
    • Método 2
      1. En el menú Generar , haga clic en Administrador de configuración para generar la solución completa.
      2. Haga clic para activar la casilla de verificación Generar para ServiceSetup.
      3. Presione F7 para generar la solución completa. Cuando se genera la solución, tiene un paquete de instalación completo que está disponible para el servicio.
  5. Para instalar el servicio recién creado, haga clic enServiceSetupy, a continuación, haga clic en instalar.
  6. En el cuadro de diálogo ServiceSetup , haga clic ensiguiente tres veces. Observe que aparece una barra de progreso mientras se instala el servicio.
  7. Cuando se instala el servicio, haga clic enCerrar.

Lista de código completa

Service1.cs

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;

namespace LogWriterService
{
	public class Service1 : System.ServiceProcess.ServiceBase
	{
		/// <summary> 
		/// Required designer variable.
		/// </summary>
		private System.ComponentModel.Container components = null;

		public Service1()
		{
			// The Windows.Forms Component Designer must have this call.
			InitializeComponent();

			// TODO: Add any initialization after the InitComponent call
		}

		// The main entry point for the process
		static void Main()
		{
			System.ServiceProcess.ServiceBase[] ServicesToRun;
	
			// More than one user service may run in the same process. To add
			// another service to this process, change the following line to
			// create a second service object. For example,
			//
			//   ServicesToRun = New System.ServiceProcess.ServiceBase[] {new Service1(), new MySecondUserService()};
			//
			ServicesToRun = new System.ServiceProcess.ServiceBase[] { new Service1() };

			System.ServiceProcess.ServiceBase.Run(ServicesToRun);
		}

		/// <summary> 
		/// Required method for Designer support - do not modify 
		/// the contents of this method with the code editor.
		/// </summary>
		private void InitializeComponent()
		{
			components = new System.ComponentModel.Container();
			this.ServiceName = "Service1";
		}

		/// <summary>
		/// Clean up any resources that are being used.
		/// </summary>
		protected override void Dispose( bool disposing )
		{
			if( disposing )
			{
				if (components != null) 
				{
					components.Dispose();
				}
			}
			base.Dispose( disposing );
		}

		/// <summary>
		/// Set things in motion so your service can do its work.
		/// </summary>
		protected override void OnStart(string[] args)
		{
			EventLog.WriteEntry("My simple service started.");
		}
 
		/// <summary>
		/// Stop this service.
		/// </summary>
		protected override void OnStop()
		{
			// TODO: Add code here to perform any tear-down necessary to stop your service.
		}
	}
}

Comprobar que funciona

  1. En el Panel de Control, haga doble clic en Herramientas administrativasy, a continuación, haga doble clic en Servicios
  2. Haga clic en Service1y, a continuación, haga clic enInicio
  3. Utilice uno de los métodos siguientes para comprobar un islogged de evento en el registro de sucesos:
    • Método 1
      1. En el Panel de Control, haga doble clic en Herramientas administrativasy, a continuación, haga doble clic en Visor de sucesos.
      2. Haga clic en Registro de aplicación en el panel izquierdo y, a continuación, busque el registro de eventos para el servicio en el panel derecho.
    • Método 2
      1. En el Explorador de servidores, expanda servidores, expandaNombreDeEquipo, ampliar los registros de sucesos, expanda la aplicacióny, a continuación, expanda Service1. Recuerde que Service1 es el nombre de la clase, no el propio servicio. Por lo tanto, Service1 se utiliza como el nombre de la aplicación. (Es más allá del alcance de este artículo se explica cómo personalizar los nombres).
      2. Mueva el cursor sobre las entradas del registro. La segunda entrada de la parte superior debe leer "Mi servicio sencillo inicia".

Solución de problemas

La documentación del SDK de Framework afirma lo siguiente:
El archivo ejecutable compilado que crea un proyecto de aplicación de servicio debe instalarse en el servidor antes de que el proyecto pueda funcionar de forma significativa. No se puede depurar o ejecutar una aplicación de servicios presionando F5 o F11; no se puede ejecutar inmediatamente un servicio o un paso en su código. En su lugar, debe instalar y a iniciar el servicio y, a continuación, adjuntar a un depurador al proceso del servicio.
Para obtener más información, visite el siguiente sitio Web de Microsoft Developer Network (MSDN):
Depurar aplicaciones de servicios de Windowshttp://msdn2.Microsoft.com/en-us/library/aa984342 (VS.71).aspx

Referencias

Para crear un servicio útil de Windows que muestra cómo instalar, cómo probar y cómo depurar el servicio, visite el siguiente sitio Web de MSDN:
Introducción a las aplicaciones de servicio de Windowshttp://msdn2.Microsoft.com/en-us/library/Aa983650 (VS.71).aspx
Para obtener más información, consulte el siguiente artículo de la edición de diciembre de 2001 de MSDN Magazine:
Servicios de Windows: Nuevas clases Base de .NET que es escribir un servicio de Windows fácil
http://msdn.Microsoft.com/msdnmag/issues/01/12/NetServ/default.aspx

Propiedades

Id. de artículo: 816169 - Última revisión: jueves, 06 de febrero de 2014 - Versión: 6.0
La información de este artículo se refiere a:
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# 2005 Express Edition
  • Microsoft Visual C# 2008 Express Edition
Palabras clave: 
kbeventlog kbsetup kbserviceprocess kbservice kbhowtomaster kbmt KB816169 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 816169

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com