ServiceProcessInstaller Clase

Definición

Instala un archivo ejecutable que contiene clases que extienden ServiceBase. Las utilidades de instalación llaman a esta clase, como InstallUtil.exe, 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 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 en true.

Las propiedades opcionales se establecen en el instalador de proceso y los instaladores de servicio antes de agregar 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 se instalarán a InstallerCollection.Add 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 revertir 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 a 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 la clase trueen . En el proyecto, cree una instancia de 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 trueen . 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 que no sea el usuario que ha iniciado sesión. Puede especificar un par determinado Username y Password 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.

Note

La cuenta del sistema del equipo no es la misma que la cuenta de administrador.

Normalmente, no se llama a los métodos en ServiceInstaller el código; por lo general, la utilidad de instalación los llama únicamente. 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 de y la utilidad instala cada ServiceInstaller instancia. Normalmente no es necesario que el código modifique esta información de estado explícitamente.

La creación de instancias de un ServiceProcessInstaller hace que se llame al constructor de clase base, ComponentInstaller, .

Constructores

Nombre Description
ServiceProcessInstaller()

Crea una nueva instancia de la ServiceProcessInstaller clase .

Propiedades

Nombre Description
Account

Obtiene o establece el tipo de cuenta con la que se va a ejecutar esta aplicación de servicio.

CanRaiseEvents

Obtiene un valor que indica si el componente puede generar un evento.

(Heredado de Component)
Container

Obtiene el IContainer objeto que contiene el Componentobjeto .

(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 el objeto está actualmente en modo de diseño.

(Heredado de Component)
Events

Obtiene la lista de controladores de eventos que están asociados a este Componentobjeto .

(Heredado de Component)
HelpText

Obtiene el 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 con la que se ejecutará la aplicación de servicio.

Métodos

Nombre Description
Commit(IDictionary)

Cuando se invalida en una clase derivada, completa la transacción de instalación.

(Heredado de Installer)
CopyFromComponent(IComponent)

Implementa el método de clase CopyFromComponent(IComponent) base sin ServiceProcessInstaller ningún comportamiento específico de clase.

CreateObjRef(Type)

Crea un objeto que contiene toda la información pertinente necesaria para generar un proxy usado para comunicarse con un objeto remoto.

(Heredado de MarshalByRefObject)
Dispose()

Libera todos los recursos usados por .Component

(Heredado de Component)
Dispose(Boolean)

Libera los recursos no administrados utilizados por Component y, opcionalmente, libera los recursos administrados.

(Heredado de Component)
Equals(Object)

Determina si el objeto especificado es igual al objeto actual.

(Heredado de Object)
GetHashCode()

Actúa como la función hash predeterminada.

(Heredado de Object)
GetLifetimeService()

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 un servicio proporcionado por Component o por su Container.

(Heredado de Component)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
InitializeLifetimeService()

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 aplicación de servicio en el Registro. Este método está diseñado para ser utilizado por 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 Objectactual.

(Heredado de Object)
MemberwiseClone(Boolean)

Crea una copia superficial del objeto actual MarshalByRefObject .

(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)

Revierte la información de la aplicación de servicio escrita en el Registro mediante el procedimiento de instalación. Este método está diseñado para ser utilizado por las herramientas de instalación, que procesan automáticamente los métodos adecuados.

ToString()

Devuelve un String objeto que contiene el nombre de Component, si existe. Este método no se debe invalidar.

(Heredado de Component)
Uninstall(IDictionary)

Cuando se invalida en una clase derivada, quita una instalación.

(Heredado de Installer)

Eventos

Nombre Description
AfterInstall

Se produce después de ejecutar los Install(IDictionary) métodos de todos los instaladores de la Installers propiedad .

(Heredado de Installer)
AfterRollback

Se produce después de revertir las instalaciones de todos los instaladores de la Installers propiedad.

(Heredado de Installer)
AfterUninstall

Se produce después de que todos los instaladores de la Installers propiedad realicen sus operaciones de desinstalación.

(Heredado de Installer)
BeforeInstall

Se produce antes de que se haya ejecutado el Install(IDictionary) método de cada instalador de la colección del instalador.

(Heredado de Installer)
BeforeRollback

Se produce antes de que los instaladores de la Installers propiedad se revierten.

(Heredado de Installer)
BeforeUninstall

Se produce antes de que los instaladores de la Installers propiedad realicen sus operaciones de desinstalación.

(Heredado de Installer)
Committed

Se produce después de que todos los instaladores de la Installers propiedad hayan confirmado sus instalaciones.

(Heredado de Installer)
Committing

Se produce antes de que los instaladores de la Installers propiedad confirmen sus instalaciones.

(Heredado de Installer)
Disposed

Se produce cuando el componente se elimina mediante una llamada al Dispose() método .

(Heredado de Component)

Se aplica a

Consulte también