ServiceProcessInstaller Klasse

Definition

Installiert eine ausführbare Datei, die Klassen enthält, die erweitert werden ServiceBase. Diese Klasse wird von Installationsprogrammen wie InstallUtil.exeaufgerufen, wenn eine Dienstanwendung installiert wird.

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
Vererbung

Beispiele

Im folgenden Beispiel wird ein Projektinstallationsprogramm namens MyProjectInstaller erstellt, das von Installer. Es wird davon ausgegangen, dass es eine ausführbare Dienstdatei mit zwei Diensten "Hello-World Service 1" und "Hello-World Service 2" enthält. Innerhalb des Konstruktors für MyProjectInstaller (der vom Installationshilfsprogramm aufgerufen wird), ServiceInstaller werden Objekte für jeden Dienst erstellt und eine ServiceProcessInstaller für die ausführbare Datei erstellt. Damit das Installationshilfsprogramm MyProjectInstaller als gültiges Installationsprogramm erkennt, wird das RunInstallerAttribute Attribut auf true.

Optionale Eigenschaften werden für das Prozessinstallationsprogramm und die Dienstinstallationsprogramme festgelegt, bevor die Installationsprogramme der Installers Auflistung hinzugefügt werden. Wenn das Installationshilfsprogramm auf MyProjectInstaller zugreift, werden die Objekte, die Installers der Auflistung über einen Aufruf InstallerCollection.Add hinzugefügt wurden, wiederum installiert. Während des Vorgangs verwaltet das Installationsprogramm Zustandsinformationen, die angeben, welche Objekte installiert wurden, sodass jedes Objekt im Falle eines Installationsfehlers zurückgesichert werden kann.

Normalerweise würden Sie Ihre Projektinstallationsklasse nicht explizit instanziieren. Sie würden es erstellen und hinzufügen RunInstallerAttribute, aber das Installationshilfsprogramm ruft tatsächlich die Klasse auf und instanziiert daher die Klasse.

#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

Hinweise

Dies ServiceProcessInstaller funktioniert für alle Dienste in einer ausführbaren Datei. Es wird vom Installationshilfsprogramm verwendet, um Registrierungswerte zu schreiben, die mit Diensten verknüpft sind, die Sie installieren möchten.

Um einen Dienst zu installieren, erstellen Sie eine Projektinstallationsklasse, die von Installerder Klasse erbt, und legen Sie die RunInstallerAttribute Klasse auf true. Instanziieren Sie in Ihrem Projekt eine ServiceProcessInstaller Instanz pro Dienstanwendung und eine ServiceInstaller Instanz für jeden Dienst in der Anwendung. Fügen Sie schließlich der Projektinstallationsklasse die ServiceProcessInstaller Instanz und die ServiceInstaller Instanzen hinzu.

Wenn InstallUtil.exe ausgeführt wird, sucht das Hilfsprogramm nach Klassen in der Dienstassembly mit dem RunInstallerAttribute Satz auf true. Fügen Sie der Dienstassembly Klassen hinzu, indem Sie sie der Auflistung hinzufügen, die Installers Ihrem Projektinstallationsprogramm zugeordnet ist. Wenn RunInstallerAttribute ja false, ignoriert das Installationsprogramm das Projektinstallationsprogramm.

Für eine Instanz von ServiceProcessInstallerEigenschaften können Sie angeben, dass eine Dienstanwendung unter einem anderen Konto als dem angemeldeten Benutzer ausgeführt wird. Sie können ein bestimmtes Username paar angeben Password , unter dem der Dienst ausgeführt werden soll, oder Sie können Account angeben, dass der Dienst unter dem Systemkonto des Computers, einem lokalen oder Netzwerkdienstkonto oder einem Benutzerkonto ausgeführt wird.

Note

Das Systemkonto des Computers ist nicht mit dem Administratorkonto identisch.

Normalerweise rufen Sie die Methoden nicht in Ihrem Code auf ServiceInstaller ; sie werden in der Regel nur vom Installationshilfsprogramm aufgerufen. Das Installationshilfsprogramm ruft die ServiceProcessInstaller.Install und ServiceInstaller.Install methoden während des Installationsvorgangs automatisch auf. Bei Bedarf werden Fehler durch Aufrufen Rollback (oder ServiceInstaller.Rollback) für alle zuvor installierten Komponenten zurückgesetzt.

Die Installationsroutine einer Anwendung verwaltet automatisch Informationen zu den bereits installierten Komponenten mithilfe des Projektinstallationsprogramms Installer.Context. Diese Statusinformationen werden kontinuierlich aktualisiert, wenn die ServiceProcessInstaller Instanz und jede ServiceInstaller Instanz vom Hilfsprogramm installiert wird. Normalerweise ist es nicht erforderlich, dass Ihr Code diese Zustandsinformationen explizit ändert.

Das Instanziieren einer ServiceProcessInstaller Instanziierung bewirkt, dass der Basisklassenkonstruktor aufgerufen ComponentInstallerwird.

Konstruktoren

Name Beschreibung
ServiceProcessInstaller()

Erstellt eine neue Instanz der ServiceProcessInstaller Klasse.

Eigenschaften

Name Beschreibung
Account

Ruft den Kontotyp ab, unter dem diese Dienstanwendung ausgeführt werden soll, oder legt diesen fest.

CanRaiseEvents

Ruft einen Wert ab, der angibt, ob die Komponente ein Ereignis auslösen kann.

(Geerbt von Component)
Container

Ruft das, das IContainer die Component.

(Geerbt von Component)
Context

Ruft Informationen zur aktuellen Installation ab oder legt diese fest.

(Geerbt von Installer)
DesignMode

Ruft einen Wert ab, der angibt, ob sich der Component Entwurfsmodus derzeit befindet.

(Geerbt von Component)
Events

Ruft die Liste der Ereignishandler ab, die an diese Componentangefügt sind.

(Geerbt von Component)
HelpText

Ruft Hilfetext für Dienstinstallationsoptionen angezeigt.

Installers

Ruft die Auflistung der Installationsprogramme ab, die dieses Installationsprogramm enthält.

(Geerbt von Installer)
Parent

Ruft das Installationsprogramm ab, das die Auflistung enthält, zu der dieses Installationsprogramm gehört, oder legt diesen fest.

(Geerbt von Installer)
Password

Ruft das Kennwort ab, das dem Benutzerkonto zugeordnet ist, unter dem die Dienstanwendung ausgeführt wird, oder legt dieses fest.

Site

Ruft den ISite von Component ab oder legt ihn fest.

(Geerbt von Component)
Username

Ruft das Benutzerkonto ab, unter dem die Dienstanwendung ausgeführt wird, oder legt dieses fest.

Methoden

Name Beschreibung
Commit(IDictionary)

Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird die Installationstransaktion abgeschlossen.

(Geerbt von Installer)
CopyFromComponent(IComponent)

Implementiert die Basisklassenmethode CopyFromComponent(IComponent) ohne ServiceProcessInstaller klassenspezifisches Verhalten.

CreateObjRef(Type)

Erstellt ein Objekt, das alle relevanten Informationen enthält, die zum Generieren eines Proxys erforderlich sind, der für die Kommunikation mit einem Remoteobjekt verwendet wird.

(Geerbt von MarshalByRefObject)
Dispose()

Veröffentlicht alle ressourcen, die von der Component.

(Geerbt von Component)
Dispose(Boolean)

Gibt die nicht verwalteten Ressourcen frei, die von den Component verwalteten Ressourcen verwendet werden, und gibt optional die verwalteten Ressourcen frei.

(Geerbt von Component)
Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetHashCode()

Dient als Standardhashfunktion.

(Geerbt von Object)
GetLifetimeService()

Ruft das aktuelle Lebensdauerdienstobjekt ab, das die Lebensdauerrichtlinie für diese Instanz steuert.

(Geerbt von MarshalByRefObject)
GetService(Type)

Gibt ein Objekt zurück, das einen Dienst darstellt, der von der Component oder dem zugehörigen ContainerDienst bereitgestellt wird.

(Geerbt von Component)
GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
InitializeLifetimeService()

Ruft ein Lebensdauerdienstobjekt ab, um die Lebensdauerrichtlinie für diese Instanz zu steuern.

(Geerbt von MarshalByRefObject)
Install(IDictionary)

Schreibt Dienstanwendungsinformationen in die Registrierung. Diese Methode soll von Installationstools verwendet werden, die die entsprechenden Methoden automatisch aufrufen.

IsEquivalentInstaller(ComponentInstaller)

Bestimmt, ob das angegebene Installationsprogramm dasselbe Objekt wie dieses Installationsprogramm installiert.

(Geerbt von ComponentInstaller)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
MemberwiseClone(Boolean)

Erstellt eine flache Kopie des aktuellen MarshalByRefObject Objekts.

(Geerbt von MarshalByRefObject)
OnAfterInstall(IDictionary)

Löst das AfterInstall-Ereignis aus.

(Geerbt von Installer)
OnAfterRollback(IDictionary)

Löst das AfterRollback-Ereignis aus.

(Geerbt von Installer)
OnAfterUninstall(IDictionary)

Löst das AfterUninstall-Ereignis aus.

(Geerbt von Installer)
OnBeforeInstall(IDictionary)

Löst das BeforeInstall-Ereignis aus.

(Geerbt von Installer)
OnBeforeRollback(IDictionary)

Löst das BeforeRollback-Ereignis aus.

(Geerbt von Installer)
OnBeforeUninstall(IDictionary)

Löst das BeforeUninstall-Ereignis aus.

(Geerbt von Installer)
OnCommitted(IDictionary)

Löst das Committed-Ereignis aus.

(Geerbt von Installer)
OnCommitting(IDictionary)

Löst das Committing-Ereignis aus.

(Geerbt von Installer)
Rollback(IDictionary)

Rollback von Dienstanwendungsinformationen, die durch das Installationsverfahren in die Registrierung geschrieben wurden. Diese Methode soll von Installationstools verwendet werden, die die entsprechenden Methoden automatisch verarbeiten.

ToString()

Gibt einen String mit dem Namen des Component, falls vorhanden, zurück. Diese Methode sollte nicht außer Kraft gesetzt werden.

(Geerbt von Component)
Uninstall(IDictionary)

Wenn eine abgeleitete Klasse außer Kraft gesetzt wird, wird eine Installation entfernt.

(Geerbt von Installer)

Ereignisse

Name Beschreibung
AfterInstall

Tritt ein, nachdem die Install(IDictionary) Methoden aller Installationsprogramme in der Installers Eigenschaft ausgeführt wurden.

(Geerbt von Installer)
AfterRollback

Tritt ein, nachdem die Installationen aller Installationsprogramme in der Installers Eigenschaft zurückgesetzt wurden.

(Geerbt von Installer)
AfterUninstall

Tritt ein, nachdem alle Installationsprogramme in der Installers Eigenschaft ihre Deinstallationsvorgänge ausgeführt haben.

(Geerbt von Installer)
BeforeInstall

Tritt auf, bevor die Install(IDictionary) Methode der einzelnen Installationsprogramme in der Installer-Auflistung ausgeführt wurde.

(Geerbt von Installer)
BeforeRollback

Tritt auf, bevor die Installationsprogramme in der Installers Eigenschaft zurückgesetzt werden.

(Geerbt von Installer)
BeforeUninstall

Tritt auf, bevor die Installationsprogramme in der Installers Eigenschaft ihre Deinstallationsvorgänge ausführen.

(Geerbt von Installer)
Committed

Tritt auf, nachdem alle Installationsprogramme in der Installers Eigenschaft ihre Installationen zugesichert haben.

(Geerbt von Installer)
Committing

Tritt auf, bevor die Installationsprogramme in der Installers Eigenschaft ihre Installationen übernehmen.

(Geerbt von Installer)
Disposed

Tritt auf, wenn die Komponente durch einen Aufruf der Dispose() Methode verworfen wird.

(Geerbt von Component)

Gilt für:

Weitere Informationen