2010-01-15 16 views
37

¿Cómo instalo un servicio de Windows mediante programación sin utilizar installutil.exe?Instalación de servicios de Windows mediante programación

+0

y no utilizar cualquier otro instaladores de 3 ª parte? –

+0

sí ... me gustaría poder utilizar una función como installservice() y cuando hago doble clic en windowsservice.exe, comprueba si está instalado, si no está instalado, se instala solo. – Josh

+1

esa es una buena función :) :) – Danail

Respuesta

54

Puede instalar el servicio mediante la adición de este código (en el archivo de programa, Program.cs) para instalarse cuando se ejecuta desde la línea de comandos usando los parámetros especificados:

/// <summary> 
     /// The main entry point for the application. 
     /// </summary> 
     static void Main(string[] args) 
     { 
      if (System.Environment.UserInteractive) 
      { 

       if (args.Length > 0) 
       { 
        switch (args[0]) 
        { 
         case "-install": 
          { 
           ManagedInstallerClass.InstallHelper(new string[] { Assembly.GetExecutingAssembly().Location }); 
           break; 
          } 
         case "-uninstall": 
          { 
           ManagedInstallerClass.InstallHelper(new string[] { "/u", Assembly.GetExecutingAssembly().Location }); 
           break; 
          } 
        } 
       } 
      } 
      else 
      { 
       ServiceBase[] ServicesToRun; 
       ServicesToRun = new ServiceBase[] { new MyService() }; 
       ServiceBase.Run(ServicesToRun); 
      } 
     } 
+0

Ese enlace está caído. –

+6

Aunque esta es una manera clara y adecuada de hacerlo en lugar de utilizar advapi32.dll de "bajo nivel", la documentación del marco dice "Esta API admite la infraestructura de .NET Framework y no está destinada a ser utilizada directamente desde su código". Pero aún prefiero "ManagedInstallerClass" y los riesgos de futuras incompatibilidades en las nuevas versiones .net. (http://msdn.microsoft.com/pt-br/library/system.configuration.install.managedinstallerclass) – Luciano

3

Instalo y desinstalo mi servicio de Windows a través de la línea de comandos, por ejemplo, MyWindowsService.exe -install y MyWindowsService.exe -uninstall, para evitar usar installutil.exe. He escrito un conjunto de instrucciones sobre cómo hacer esto here.

+0

El OP preguntó cómo hacer esto programáticamente, no a través de la línea de comando. – Mike

+0

Mi solución es una solución programática a la que se accede a través de la línea de comando de la misma manera que la respuesta aceptada. –

9

utilizo el método de la siguiente CodeProject artículo, y funciona genial.

Windows Services Can Install Themselves

+2

Excelente enlace; sin embargo, hace referencia a un enlace escrito por Mahmoud Nasr que está roto. Usé esto y funciona para mí. https://msdn.microsoft.com/en-us/library/zt39148a(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1 –

+1

Mientras que este enlace puede responder la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace de referencia. Las respuestas de solo enlace pueden dejar de ser válidas si la página vinculada cambia. - [De la opinión] (/ reseña/mensajes de baja calidad/18705889) – amod

Cuestiones relacionadas