ServiceProcessInstaller Classe

Definizione

Installa un eseguibile contenente classi che estendono ServiceBase. Questa classe viene chiamata dalle utilità di installazione, ad esempio InstallUtil.exe, durante l'installazione di un'applicazione di servizio.

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
Ereditarietà

Esempio

Nell'esempio seguente viene creato un programma di installazione del progetto denominato MyProjectInstaller, che eredita da Installer. Si presuppone che sia presente un eseguibile del servizio che contiene due servizi, "Hello-World Service 1" e "Hello-World Service 2". All'interno del costruttore per MyProjectInstaller (che verrebbe chiamato dall'utilità di installazione), ServiceInstaller gli oggetti vengono creati per ogni servizio e viene creato un ServiceProcessInstaller per l'eseguibile. Affinché l'utilità di installazione riconosca MyProjectInstaller come programma di installazione valido, l'attributo RunInstallerAttribute è impostato su true.

Le proprietà facoltative vengono impostate nel programma di installazione del processo e i programmi di installazione del servizio prima che i programmi di installazione vengano aggiunti alla Installers raccolta. Quando l'utilità di installazione accede a MyProjectInstaller, gli oggetti aggiunti alla Installers raccolta tramite una chiamata a InstallerCollection.Add verranno installati a sua volta. Durante il processo, il programma di installazione mantiene le informazioni sullo stato che indicano quali oggetti sono stati installati, in modo che ogni oggetto possa essere sottoposto a backup a sua volta in caso di errore di installazione.

In genere, non è possibile creare un'istanza della classe del programma di installazione del progetto in modo esplicito. È necessario crearlo e aggiungere RunInstallerAttribute, ma l'utilità di installazione chiama effettivamente e quindi crea un'istanza della classe .

#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

Commenti

Funziona ServiceProcessInstaller comunemente a tutti i servizi in un eseguibile. Viene usato dall'utilità di installazione per scrivere i valori del Registro di sistema associati ai servizi da installare.

Per installare un servizio, creare una classe del programma di installazione del progetto che eredita da Installere impostare nella RunInstallerAttribute classe su true. All'interno del progetto creare un'istanza ServiceProcessInstaller per ogni applicazione di servizio e un'istanza ServiceInstaller per ogni servizio nell'applicazione. Infine, aggiungere l'istanza ServiceProcessInstaller e le ServiceInstaller istanze alla classe del programma di installazione del progetto.

Quando InstallUtil.exe viene eseguito, l'utilità cerca le classi nell'assembly del servizio con l'oggetto RunInstallerAttribute impostato su true. Aggiungere classi all'assembly del servizio aggiungendole alla Installers raccolta associata al programma di installazione del progetto. Se RunInstallerAttribute è false, l'utilità di installazione ignora il programma di installazione del progetto.

Per un'istanza di ServiceProcessInstaller, le proprietà è possibile modificare includono specificare che un'applicazione di servizio viene eseguita con un account diverso dall'utente connesso. È possibile specificare una determinata Username coppia e Password in cui deve essere eseguito il servizio oppure per Account specificare che il servizio viene eseguito con l'account di sistema del computer, un account del servizio locale o di rete o un account utente.

Note

L'account di sistema del computer non corrisponde all'account amministratore.

In genere, non si chiamano i metodi ServiceInstaller all'interno del codice, ma in genere vengono chiamati solo dall'utilità di installazione. L'utilità di installazione chiama automaticamente i ServiceProcessInstaller.Install metodi e ServiceInstaller.Install durante il processo di installazione. Esegue il backout degli errori, se necessario, chiamando Rollback (o ServiceInstaller.Rollback) in tutti i componenti installati in precedenza.

La routine di installazione di un'applicazione gestisce automaticamente le informazioni sui componenti già installati, usando il programma di installazione del Installer.Contextprogetto . Queste informazioni sullo stato vengono aggiornate continuamente come ServiceProcessInstaller istanza e ogni ServiceInstaller istanza viene installata dall'utilità . In genere non è necessario che il codice modifichi queste informazioni sullo stato in modo esplicito.

La creazione di un'istanza di fa ServiceProcessInstaller sì che venga chiamato il costruttore della classe base , ComponentInstaller.

Costruttori

Nome Descrizione
ServiceProcessInstaller()

Crea una nuova istanza della ServiceProcessInstaller classe .

Proprietà

Nome Descrizione
Account

Ottiene o imposta il tipo di account in cui eseguire l'applicazione di servizio.

CanRaiseEvents

Ottiene un valore che indica se il componente può generare un evento.

(Ereditato da Component)
Container

Ottiene l'oggetto IContainer contenente l'oggetto Component.

(Ereditato da Component)
Context

Ottiene o imposta informazioni sull'installazione corrente.

(Ereditato da Installer)
DesignMode

Ottiene un valore che indica se è Component attualmente in modalità progettazione.

(Ereditato da Component)
Events

Ottiene l'elenco dei gestori eventi associati a questo Componentoggetto .

(Ereditato da Component)
HelpText

Ottiene il testo della Guida visualizzato per le opzioni di installazione del servizio.

Installers

Ottiene la raccolta di programmi di installazione contenuti nel programma di installazione.

(Ereditato da Installer)
Parent

Ottiene o imposta il programma di installazione contenente la raccolta a cui appartiene il programma di installazione.

(Ereditato da Installer)
Password

Ottiene o imposta la password associata all'account utente in cui viene eseguita l'applicazione di servizio.

Site

Ottiene o imposta il ISite del Component.

(Ereditato da Component)
Username

Ottiene o imposta l'account utente in cui verrà eseguita l'applicazione di servizio.

Metodi

Nome Descrizione
Commit(IDictionary)

Quando sottoposto a override in una classe derivata, completa la transazione di installazione.

(Ereditato da Installer)
CopyFromComponent(IComponent)

Implementa il metodo della classe CopyFromComponent(IComponent) base senza alcun ServiceProcessInstaller comportamento specifico della classe.

CreateObjRef(Type)

Crea un oggetto che contiene tutte le informazioni pertinenti necessarie per generare un proxy utilizzato per comunicare con un oggetto remoto.

(Ereditato da MarshalByRefObject)
Dispose()

Rilascia tutte le risorse usate da Component.

(Ereditato da Component)
Dispose(Boolean)

Rilascia le risorse non gestite usate da Component e, facoltativamente, rilascia le risorse gestite.

(Ereditato da Component)
Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetLifetimeService()

Recupera l'oggetto servizio di durata corrente che controlla i criteri di durata per questa istanza.

(Ereditato da MarshalByRefObject)
GetService(Type)

Restituisce un oggetto che rappresenta un servizio fornito da Component o da Container.

(Ereditato da Component)
GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
InitializeLifetimeService()

Ottiene un oggetto servizio di durata per controllare i criteri di durata per questa istanza.

(Ereditato da MarshalByRefObject)
Install(IDictionary)

Scrive le informazioni dell'applicazione di servizio nel Registro di sistema. Questo metodo è progettato per essere usato dagli strumenti di installazione, che chiamano automaticamente i metodi appropriati.

IsEquivalentInstaller(ComponentInstaller)

Determina se il programma di installazione specificato installa lo stesso oggetto del programma di installazione.

(Ereditato da ComponentInstaller)
MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
MemberwiseClone(Boolean)

Crea una copia superficiale dell'oggetto corrente MarshalByRefObject .

(Ereditato da MarshalByRefObject)
OnAfterInstall(IDictionary)

Genera l'evento AfterInstall.

(Ereditato da Installer)
OnAfterRollback(IDictionary)

Genera l'evento AfterRollback.

(Ereditato da Installer)
OnAfterUninstall(IDictionary)

Genera l'evento AfterUninstall.

(Ereditato da Installer)
OnBeforeInstall(IDictionary)

Genera l'evento BeforeInstall.

(Ereditato da Installer)
OnBeforeRollback(IDictionary)

Genera l'evento BeforeRollback.

(Ereditato da Installer)
OnBeforeUninstall(IDictionary)

Genera l'evento BeforeUninstall.

(Ereditato da Installer)
OnCommitted(IDictionary)

Genera l'evento Committed.

(Ereditato da Installer)
OnCommitting(IDictionary)

Genera l'evento Committing.

(Ereditato da Installer)
Rollback(IDictionary)

Esegue il rollback delle informazioni dell'applicazione di servizio scritte nel Registro di sistema dalla procedura di installazione. Questo metodo è progettato per essere usato dagli strumenti di installazione, che elaborano automaticamente i metodi appropriati.

ToString()

Restituisce un oggetto String contenente il nome dell'oggetto Component, se presente. Questo metodo non deve essere sottoposto a override.

(Ereditato da Component)
Uninstall(IDictionary)

Quando sottoposto a override in una classe derivata, rimuove un'installazione.

(Ereditato da Installer)

Eventi

Nome Descrizione
AfterInstall

Si verifica dopo l'esecuzione Install(IDictionary) dei metodi di tutti i programmi di installazione nella Installers proprietà .

(Ereditato da Installer)
AfterRollback

Si verifica dopo il rollback delle installazioni di tutti i programmi di installazione nella Installers proprietà .

(Ereditato da Installer)
AfterUninstall

Si verifica dopo che tutti i programmi di installazione nella Installers proprietà eseguono le operazioni di disinstallazione.

(Ereditato da Installer)
BeforeInstall

Si verifica prima dell'esecuzione Install(IDictionary) del metodo di ogni programma di installazione nella raccolta del programma di installazione.

(Ereditato da Installer)
BeforeRollback

Si verifica prima del rollback dei programmi di installazione nella Installers proprietà .

(Ereditato da Installer)
BeforeUninstall

Si verifica prima che i programmi di installazione nella Installers proprietà eseguano le operazioni di disinstallazione.

(Ereditato da Installer)
Committed

Si verifica dopo che tutti i programmi di installazione nella proprietà hanno eseguito il Installers commit delle installazioni.

(Ereditato da Installer)
Committing

Si verifica prima che i programmi di installazione nella proprietà eseseguono il commit delle Installers installazioni.

(Ereditato da Installer)
Disposed

Si verifica quando il componente viene eliminato da una chiamata al Dispose() metodo .

(Ereditato da Component)

Si applica a

Vedi anche