ServiceProcessInstaller Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Instala un ejecutable que contiene clases que extienden ServiceBase. Las utilidades de instalación, como InstallUtil.exe, llaman a esta clase al instalar una aplicación de servicio.
public ref class ServiceProcessInstaller : System::Configuration::Install::ComponentInstaller
public class ServiceProcessInstaller : System.Configuration.Install.ComponentInstaller
type ServiceProcessInstaller = class
inherit ComponentInstaller
Public Class ServiceProcessInstaller
Inherits ComponentInstaller
- Herencia
Ejemplos
En el ejemplo siguiente se crea un instalador de proyecto denominado MyProjectInstaller, que hereda de Installer. Se supone que hay un archivo ejecutable de servicio que contiene dos servicios: "Hello-World Service 1" y "Hello-World Service 2". Dentro del constructor de MyProjectInstaller (al que llamaría la utilidad de instalación), ServiceInstaller se crean objetos para cada servicio y se crea un ServiceProcessInstaller para el ejecutable. Para que la utilidad de instalación reconozca MyProjectInstaller como un instalador válido, el RunInstallerAttribute atributo se establece true
en .
Las propiedades opcionales se establecen en el instalador de proceso y los instaladores de servicio antes de que se agreguen los instaladores a la Installers colección. Cuando la utilidad de instalación tiene acceso a MyProjectInstaller, los objetos agregados a la Installers colección a través de una llamada a InstallerCollection.Add se instalarán a su vez. Durante el proceso, el instalador mantiene información de estado que indica qué objetos se han instalado, por lo que cada objeto se puede recuperar a su vez en caso de un error de instalación.
Normalmente, no crearía instancias de la clase del instalador del proyecto explícitamente. Lo crearía y agregaría , RunInstallerAttributepero la utilidad de instalación llama realmente y, por tanto, crea instancias de la clase .
#using <System.dll>
#using <System.ServiceProcess.dll>
#using <System.Configuration.Install.dll>
using namespace System;
using namespace System::Collections;
using namespace System::Configuration::Install;
using namespace System::ServiceProcess;
using namespace System::ComponentModel;
[RunInstaller(true)]
public ref class MyProjectInstaller : public Installer
{
private:
ServiceInstaller^ serviceInstaller1;
ServiceInstaller^ serviceInstaller2;
ServiceProcessInstaller^ processInstaller;
public:
MyProjectInstaller()
{
// Instantiate installers for process and services.
processInstaller = gcnew ServiceProcessInstaller;
serviceInstaller1 = gcnew ServiceInstaller;
serviceInstaller2 = gcnew ServiceInstaller;
// The services run under the system account.
processInstaller->Account = ServiceAccount::LocalSystem;
// The services are started manually.
serviceInstaller1->StartType = ServiceStartMode::Manual;
serviceInstaller2->StartType = ServiceStartMode::Manual;
// ServiceName must equal those on ServiceBase derived classes.
serviceInstaller1->ServiceName = "Hello-World Service 1";
serviceInstaller2->ServiceName = "Hello-World Service 2";
// Add installers to collection. Order is not important.
Installers->Add( serviceInstaller1 );
Installers->Add( serviceInstaller2 );
Installers->Add( processInstaller );
}
static void Main()
{
Console::WriteLine("Usage: InstallUtil.exe [<service>.exe]");
}
};
int main()
{
MyProjectInstaller::Main();
}
using System;
using System.Collections;
using System.Configuration.Install;
using System.ServiceProcess;
using System.ComponentModel;
[RunInstaller(true)]
public class MyProjectInstaller : Installer
{
private ServiceInstaller serviceInstaller1;
private ServiceInstaller serviceInstaller2;
private ServiceProcessInstaller processInstaller;
public MyProjectInstaller()
{
// Instantiate installers for process and services.
processInstaller = new ServiceProcessInstaller();
serviceInstaller1 = new ServiceInstaller();
serviceInstaller2 = new ServiceInstaller();
// The services run under the system account.
processInstaller.Account = ServiceAccount.LocalSystem;
// The services are started manually.
serviceInstaller1.StartType = ServiceStartMode.Manual;
serviceInstaller2.StartType = ServiceStartMode.Manual;
// ServiceName must equal those on ServiceBase derived classes.
serviceInstaller1.ServiceName = "Hello-World Service 1";
serviceInstaller2.ServiceName = "Hello-World Service 2";
// Add installers to collection. Order is not important.
Installers.Add(serviceInstaller1);
Installers.Add(serviceInstaller2);
Installers.Add(processInstaller);
}
public static void Main()
{
Console.WriteLine("Usage: InstallUtil.exe [<service>.exe]");
}
}
Imports System.Collections
Imports System.Configuration.Install
Imports System.ServiceProcess
Imports System.ComponentModel
<RunInstallerAttribute(True)> _
Public Class MyProjectInstaller
Inherits Installer
Private serviceInstaller1 As ServiceInstaller
Private serviceInstaller2 As ServiceInstaller
Private processInstaller As ServiceProcessInstaller
Public Sub New()
' Instantiate installers for process and services.
processInstaller = New ServiceProcessInstaller()
serviceInstaller1 = New ServiceInstaller()
serviceInstaller2 = New ServiceInstaller()
' The services will run under the system account.
processInstaller.Account = ServiceAccount.LocalSystem
' The services will be started manually.
serviceInstaller1.StartType = ServiceStartMode.Manual
serviceInstaller2.StartType = ServiceStartMode.Manual
' ServiceName must equal those on ServiceBase derived classes.
serviceInstaller1.ServiceName = "Hello-World Service 1"
serviceInstaller2.ServiceName = "Hello-World Service 2"
' Add installers to collection. Order is not important.
Installers.Add(serviceInstaller1)
Installers.Add(serviceInstaller2)
Installers.Add(processInstaller)
End Sub
Public Shared Sub Main()
Console.WriteLine("Usage: InstallUtil.exe [<service>.exe]")
End Sub
End Class
Comentarios
ServiceProcessInstaller funciona de forma común a todos los servicios de un archivo ejecutable. La utilidad de instalación la usa para escribir valores del Registro asociados a los servicios que desea instalar.
Para instalar un servicio, cree una clase de instalador de proyecto que herede de Installery establezca en RunInstallerAttribute en .true
Dentro del proyecto, cree una ServiceProcessInstaller instancia por aplicación de servicio y una ServiceInstaller instancia para cada servicio de la aplicación. Por último, agregue la ServiceProcessInstaller instancia y las instancias a la ServiceInstaller clase del instalador del proyecto.
Cuando se ejecuta InstallUtil.exe, la utilidad busca clases en el ensamblado de servicio con el RunInstallerAttribute establecido true
en . Agregue clases al ensamblado de servicio agregándolos a la Installers colección asociada al instalador del proyecto. Si RunInstallerAttribute es false
, la utilidad de instalación omite el instalador del proyecto.
Para una instancia de ServiceProcessInstaller, las propiedades que puede modificar incluyen especificar que una aplicación de servicio se ejecute en una cuenta distinta del usuario que ha iniciado sesión. Puede especificar un par y Password determinado Username en el que se debe ejecutar el servicio, o bien puede usar Account para especificar que el servicio se ejecute en la cuenta del sistema del equipo, una cuenta de servicio local o de red o una cuenta de usuario.
Nota
La cuenta del sistema del equipo no es la misma que la cuenta de administrador.
Normalmente, no se llama a los métodos ServiceInstaller en el código; por lo general, la utilidad de instalación solo los llama. La utilidad de instalación llama automáticamente a los ServiceProcessInstaller.Install métodos y ServiceInstaller.Install durante el proceso de instalación. Devuelve errores, si es necesario, llamando a Rollback (o ServiceInstaller.Rollback) en todos los componentes instalados anteriormente.
La rutina de instalación de una aplicación mantiene información automáticamente sobre los componentes ya instalados mediante el instalador del Installer.Contextproyecto. Esta información de estado se actualiza continuamente a medida que la ServiceProcessInstaller instancia y la utilidad instala cada ServiceInstaller instancia. Por lo general, no es necesario que el código modifique esta información de estado explícitamente.
La creación de instancias de hace ServiceProcessInstaller que se llame al constructor de clase base, ComponentInstaller, .
Constructores
ServiceProcessInstaller() |
Crea una nueva instancia de la clase ServiceProcessInstaller. |
Propiedades
Account |
Obtiene o establece el tipo de cuenta en la que se ejecutará esta aplicación de servicio. |
CanRaiseEvents |
Obtiene un valor que indica si el componente puede generar un evento. (Heredado de Component) |
Container |
Obtiene la interfaz IContainer que contiene la clase Component. (Heredado de Component) |
Context |
Obtiene o establece información sobre la instalación actual. (Heredado de Installer) |
DesignMode |
Obtiene un valor que indica si Component está actualmente en modo de diseño. (Heredado de Component) |
Events |
Obtiene la lista de controladores de eventos asociados a Component. (Heredado de Component) |
HelpText |
Obtiene un texto de ayuda que se muestra para las opciones de instalación del servicio. |
Installers |
Obtiene la colección de instaladores que contiene este instalador. (Heredado de Installer) |
Parent |
Obtiene o establece el instalador que contiene la colección a la que pertenece este instalador. (Heredado de Installer) |
Password |
Obtiene o establece la contraseña asociada a la cuenta de usuario en la que se ejecuta la aplicación de servicio. |
Site |
Obtiene o establece ISite de Component. (Heredado de Component) |
Username |
Obtiene o establece la cuenta de usuario en la que se ejecutará la aplicación de servicio. |
Métodos
Commit(IDictionary) |
Cuando se reemplaza en una clase derivada, finaliza la transacción de instalación. (Heredado de Installer) |
CopyFromComponent(IComponent) |
Implementa el método CopyFromComponent(IComponent) de la clase base sin un comportamiento específico de la clase ServiceProcessInstaller. |
CreateObjRef(Type) |
Crea un objeto que contiene toda la información relevante necesaria para generar un proxy utilizado para comunicarse con un objeto remoto. (Heredado de MarshalByRefObject) |
Dispose() |
Libera todos los recursos que usa Component. (Heredado de Component) |
Dispose(Boolean) |
Libera los recursos no administrados que usa Component y, de forma opcional, libera los recursos administrados. (Heredado de Component) |
Equals(Object) |
Determina si el objeto especificado es igual que el objeto actual. (Heredado de Object) |
GetHashCode() |
Sirve como la función hash predeterminada. (Heredado de Object) |
GetLifetimeService() |
Obsoletos.
Recupera el objeto de servicio de duración actual que controla la directiva de duración de esta instancia. (Heredado de MarshalByRefObject) |
GetService(Type) |
Devuelve un objeto que representa el servicio suministrado por Component o por Container. (Heredado de Component) |
GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
InitializeLifetimeService() |
Obsoletos.
Obtiene un objeto de servicio de duración para controlar la directiva de duración de esta instancia. (Heredado de MarshalByRefObject) |
Install(IDictionary) |
Escribe información de la aplicación de servicio en el Registro. Este método está pensado para que lo utilicen las herramientas de instalación, que llaman automáticamente a los métodos adecuados. |
IsEquivalentInstaller(ComponentInstaller) |
Determina si el instalador especificado instala el mismo objeto que este instalador. (Heredado de ComponentInstaller) |
MemberwiseClone() |
Crea una copia superficial del Object actual. (Heredado de Object) |
MemberwiseClone(Boolean) |
Crea una copia superficial del objeto MarshalByRefObject actual. (Heredado de MarshalByRefObject) |
OnAfterInstall(IDictionary) |
Genera el evento AfterInstall. (Heredado de Installer) |
OnAfterRollback(IDictionary) |
Genera el evento AfterRollback. (Heredado de Installer) |
OnAfterUninstall(IDictionary) |
Genera el evento AfterUninstall. (Heredado de Installer) |
OnBeforeInstall(IDictionary) |
Genera el evento BeforeInstall. (Heredado de Installer) |
OnBeforeRollback(IDictionary) |
Genera el evento BeforeRollback. (Heredado de Installer) |
OnBeforeUninstall(IDictionary) |
Genera el evento BeforeUninstall. (Heredado de Installer) |
OnCommitted(IDictionary) |
Genera el evento Committed. (Heredado de Installer) |
OnCommitting(IDictionary) |
Genera el evento Committing. (Heredado de Installer) |
Rollback(IDictionary) |
Deshace la información de la aplicación de servicio que el procedimiento de instalación escribió en el Registro. Este método está pensado para que lo utilicen las herramientas de instalación que procesan automáticamente los métodos apropiados. |
ToString() |
Devuelve una String que contiene el nombre del Component, si existe. Este método no se debe invalidar. (Heredado de Component) |
Uninstall(IDictionary) |
Cuando se reemplaza en una clase derivada, quita una instalación. (Heredado de Installer) |
Eventos
AfterInstall |
Se produce después de ejecutarse los métodos Install(IDictionary) de todos los instaladores de la propiedad Installers. (Heredado de Installer) |
AfterRollback |
Se produce después de deshacerse la instalación de todos los instaladores de la propiedad Installers. (Heredado de Installer) |
AfterUninstall |
Se produce después de que todos los instaladores de la propiedad Installers realicen sus operaciones de desinstalación. (Heredado de Installer) |
BeforeInstall |
Se produce antes de ejecutarse el método Install(IDictionary) de cada instalador en la colección de instaladores. (Heredado de Installer) |
BeforeRollback |
Se produce antes de deshacerse los instaladores de la propiedad Installers. (Heredado de Installer) |
BeforeUninstall |
Se produce antes de que los instaladores de la propiedad Installers realicen sus operaciones de desinstalación. (Heredado de Installer) |
Committed |
Se produce después de que todos los instaladores de la propiedad Installers confirmen sus instalaciones. (Heredado de Installer) |
Committing |
Se produce antes de que los instaladores de la propiedad Installers confirmen sus instalaciones. (Heredado de Installer) |
Disposed |
Tiene lugar cuando una llamada elimina el componente mediante una llamada al método Dispose(). (Heredado de Component) |