2009-01-27 31 views

Respuesta

25

Crear una ServiceInstaller y establecer la descripción

private System.ServiceProcess.ServiceInstaller serviceInstaller = 
    new System.ServiceProcess.ServiceInstaller(); 
this.serviceInstaller.Description = "Handles Service Stuff"; 
+6

sólo para añadir a esto, también se puede establecer serviceInstaller.DisplayName = "Mejor Display Name"; – CapBBeard

+0

exxelent. Estaba pensando que algunos códigos serían necesarios ah-la esta solución ... http://www.codeproject.com/KB/dotnet/dotnetscmdescription.aspx ¿Quizás esto solo sea necesario para VS2003? –

1

También se podría, crear un ServiceInstaller y en la ventana de propiedades del instalador del Service verá una descripción de la propiedad se puede establecer. Si no quieres codificarlo.

+1

Estoy bastante seguro de haber intentado configurar cada propiedad de descripción en el instalador de servicios y servicios y ninguno de ellos parecía funcionar. Tal vez me perdí esta. –

12

Para aclarar sobre la manera de lograr esto sin usar código:

  • Añadir un instalador de servicio a su proyecto como se describe aquí: http://msdn.microsoft.com/en-us/library/ddhy0byf%28v=vs.80%29.aspx

  • Abrir el instalador (por ejemplo ProjectInstaller.cs) en Diseño ver.

  • Haz clic en el componente del instalador del servicio (por ejemplo, serviceInstaller1) o haz clic con el botón derecho en él y selecciona Propiedades.

  • En el panel Propiedades, establezca la Descripción y/o DisplayName (aquí también es donde establece StartType, etc.) Es probable que todo lo que desea cambiar sea la descripción, aunque si desea dar un DisplayName ligeramente más legible para los humanos (la primera columna en el administrador de servicios) también puede hacerlo.

  • Si lo desea, abra el archivo del diseñador generado automáticamente (por ejemplo, ProjectInstaller.Designer.cs) para verificar que las propiedades se hayan configurado correctamente.

  • Cree la solución e instálela usando installutil.exe o por otros medios.

3

Después de crear el proyecto de instalación de servicio en VS2010, es necesario agregar un reemplazo para el método Instalar en la clase creada por VS para crear la entrada del registro para su descripción del servicio.

using System; 
using System.Collections; 
using System.ComponentModel; 
using System.Configuration.Install; 
using System.ServiceProcess; 
using Microsoft.Win32; 

namespace SomeService 
{ 
    [RunInstaller(true)] 
    public partial class ProjectInstaller : System.Configuration.Install.Installer 
    { 
     public ProjectInstaller() 
     { 
      InitializeComponent(); 
     } 
     /// <summary> 
     /// Overriden to get more control over service installation. 
     /// </summary> 
     /// <param name="stateServer"></param>  
     public override void Install(IDictionary stateServer) 
     { 
      RegistryKey system; 

      //HKEY_LOCAL_MACHINE\Services\CurrentControlSet 
      RegistryKey currentControlSet; 

      //...\Services 
      RegistryKey services; 

      //...\<Service Name> 
      RegistryKey service; 

      // ...\Parameters - this is where you can put service-specific configuration 
      // Microsoft.Win32.RegistryKey config; 

      try 
      { 
       //Let the project installer do its job 
       base.Install(stateServer); 

       //Open the HKEY_LOCAL_MACHINE\SYSTEM key 
       system = Registry.LocalMachine.OpenSubKey("System"); 
       //Open CurrentControlSet 
       currentControlSet = system.OpenSubKey("CurrentControlSet"); 
       //Go to the services key 
       services = currentControlSet.OpenSubKey("Services"); 

       //Open the key for your service, and allow writing 
       service = services.OpenSubKey("MyService", true); 
       //Add your service's description as a REG_SZ value named "Description" 
       service.SetValue("Description", "A service that does so and so"); 
       //(Optional) Add some custom information your service will use... 
       // config = service.CreateSubKey("Parameters"); 
      } 
      catch (Exception e) 
      { 

       throw new Exception(e.Message + "\n" + e.StackTrace); 
      } 
     } 
    } 
} 

http://msdn.microsoft.com/en-us/library/microsoft.win32.registrykey.aspx

http://www.codeproject.com/KB/dotnet/dotnetscmdescription.aspx

+0

Yup ... 'ServiceInstaller.Description' no hizo nada, pero agregarlo manualmente así funciona bien. – Nyerguds

+0

Huh. No importa. La descripción funcionó; mi entrada de la misma fue insertada en un nivel completamente diferente. – Nyerguds

0

También puede establecer el nombre del servicio y la descripción de la IDE, haciendo clic derecho sobre el icono "ServiceInstaller" en la vista de diseño de la clase ProjectInstaller.

Setting service Description from IDE

Cuestiones relacionadas