ServiceProcessInstaller Classe

Definizione

Installa un eseguibile contenente le classi che estendono ServiceBase. Questa classe viene chiamata dalle utilità di installazione, quale 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 oggetto 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 nei 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 , RunInstallerAttributema 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 che si desidera 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 viene eseguita InstallUtil.exe, l'utilità cerca le classi nell'assembly del servizio con l'oggetto RunInstallerAttribute impostato su true. Aggiungere classi all'assembly del servizio aggiungendole alla raccolta associata al Installers 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à possono essere modificate specificando che un'applicazione di servizio viene eseguita con un account diverso dall'utente connesso. È possibile specificare una particolare 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.

Nota

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

In genere, non si chiamano i metodi ServiceInstaller all'interno del codice, 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 backup 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 quando l'istanza ServiceProcessInstaller 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 ServiceProcessInstaller di fa sì che il costruttore della classe di base, ComponentInstaller, venga chiamato.

Costruttori

ServiceProcessInstaller()

Crea una nuova istanza della classe ServiceProcessInstaller.

Proprietà

Account

Ottiene o imposta il tipo di account utente con cui eseguire l'applicazione del servizio.

CanRaiseEvents

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

(Ereditato da Component)
Container

Ottiene l'oggetto IContainer che contiene Component.

(Ereditato da Component)
Context

Ottiene o imposta le informazioni sull'installazione corrente.

(Ereditato da Installer)
DesignMode

Ottiene un valore che indica se il Component si trova in modalità progettazione.

(Ereditato da Component)
Events

Ottiene l'elenco dei gestori eventi allegati a questo Component.

(Ereditato da Component)
HelpText

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

Installers

Ottiene la raccolta dei programmi di installazione contenuti nel programma.

(Ereditato da Installer)
Parent

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

(Ereditato da Installer)
Password

Ottiene o imposta la password associata all'account utente con cui sarà eseguita l'applicazione del servizio.

Site

Ottiene o imposta l'oggetto ISite di Component.

(Ereditato da Component)
Username

Ottiene o imposta l'account utente con cui verrà eseguita l'applicazione del servizio.

Metodi

Commit(IDictionary)

Quando ne viene eseguito l'override in una classe derivata, completa la transazione di installazione.

(Ereditato da Installer)
CopyFromComponent(IComponent)

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

CreateObjRef(Type)

Consente di creare un oggetto che contiene tutte le informazioni rilevanti necessarie per la generazione del proxy utilizzato per effettuare la comunicazione 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, 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()
Obsoleti.

Consente di recuperare l'oggetto servizio di durata corrente per controllare i criteri di durata per l'istanza.

(Ereditato da MarshalByRefObject)
GetService(Type)

Consente di restituire un oggetto che rappresenta un servizio fornito da Component o dal relativo Container.

(Ereditato da Component)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
InitializeLifetimeService()
Obsoleti.

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

(Ereditato da MarshalByRefObject)
Install(IDictionary)

Scrive le informazioni sull'applicazione di servizio nel Registro di sistema. È necessario che questo metodo venga utilizzato dagli strumenti di installazione che richiamano automaticamente i metodi corretti.

IsEquivalentInstaller(ComponentInstaller)

Determina se il programma di installazione specificato consente di installare lo stesso oggetto del programma di installazione corrente.

(Ereditato da ComponentInstaller)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
MemberwiseClone(Boolean)

Crea una copia dei riferimenti dell'oggetto MarshalByRefObject corrente.

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

Annulla le informazioni dell'applicazione di servizio scritte nel Registro di sistema dalla procedura di installazione. È necessario che il metodo venga utilizzato dagli strumenti di installazione che elaborano automaticamente i metodi corretti.

ToString()

Restituisce un oggetto String che contiene il nome dell'eventuale oggetto Component. Questo metodo non deve essere sottoposto a override.

(Ereditato da Component)
Uninstall(IDictionary)

Quando ne viene eseguito l'override in una classe derivata, rimuove un'installazione.

(Ereditato da Installer)

Eventi

AfterInstall

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

(Ereditato da Installer)
AfterRollback

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

(Ereditato da Installer)
AfterUninstall

Si verifica dopo l'esecuzione delle operazioni di disinstallazione di tutti i programmi di installazione contenuti nella proprietà Installers.

(Ereditato da Installer)
BeforeInstall

Si verifica dopo l'esecuzione del metodo Install(IDictionary) di ogni programma di installazione contenuto nella raccolta Installer.

(Ereditato da Installer)
BeforeRollback

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

(Ereditato da Installer)
BeforeUninstall

Si verifica prima dell'esecuzione delle operazioni di disinstallazione dei programmi di installazione contenuti nella proprietà Installers.

(Ereditato da Installer)
Committed

Si verifica dopo l'esecuzione del commit delle installazioni di tutti i programmi di installazione contenuti nella proprietà Installers.

(Ereditato da Installer)
Committing

Si verifica prima dell'esecuzione del commit delle installazioni dei programmi di installazione contenuti nella proprietà Installers.

(Ereditato da Installer)
Disposed

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

(Ereditato da Component)

Si applica a

Vedi anche