Freigeben über


ServiceProcessInstaller Klasse

Definition

Installiert eine ausführbare Datei, die Klassen enthält, die ServiceBase erweitern. Diese Klasse wird von Installationsprogrammen, z. B. von InstallUtil.exe, beim Installieren einer Dienstanwendung aufgerufen.

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 Installererbt. Es wird davon ausgegangen, dass es eine ausführbare Dienstdatei gibt, die zwei Dienste enthält: "Hello-World Service 1" und "Hello-World Service 2". Innerhalb des Konstruktors für MyProjectInstaller (der vom Installationshilfsprogramm aufgerufen wird) ServiceInstaller werden Objekte für jeden Dienst erstellt, und ein ServiceProcessInstaller für die ausführbare Datei wird erstellt. Damit das Installationshilfsprogramm MyProjectInstaller als gültiges Installationsprogramm erkennt, ist das RunInstallerAttribute Attribut auf truefestgelegt.

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 der Installers Auflistung über einen Aufruf von hinzugefügt werden, InstallerCollection.Add nach und nach installiert. Während des Prozesses verwaltet das Installationsprogramm Zustandsinformationen, die angeben, welche Objekte installiert wurden, sodass jedes Objekt im Falle eines Installationsfehlers nacheinander gesichert werden kann.

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

#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

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

Um einen Dienst zu installieren, erstellen Sie eine Projektinstallationsprogrammklasse, die von Installererbt, und legen Sie für RunInstallerAttribute die -Klasse auf truefest. Instanziieren Sie innerhalb Ihres Projekts eine ServiceProcessInstaller instance pro Dienstanwendung und eine ServiceInstaller instance für jeden Dienst in der Anwendung. Fügen Sie schließlich die ServiceProcessInstaller instance und die ServiceInstaller Instanzen ihrer Projektinstallationsprogrammklasse hinzu.

Wenn InstallUtil.exe ausgeführt wird, sucht das Hilfsprogramm nach Klassen in der Dienstassembly, wobei auf RunInstallerAttribute festgelegt ist true. Fügen Sie der Dienstassembly Klassen hinzu, indem Sie sie der Auflistung hinzufügen, die Installers Ihrem Projektinstallationsprogramm zugeordnet ist. Wenn RunInstallerAttribute dies der Wert ist false, ignoriert das Installationshilfsprogramm das Projektinstallationsprogramm.

Für eine instance von ServiceProcessInstallerkönnen Sie eigenschaften ändern, indem Sie angeben, dass eine Dienstanwendung unter einem anderen Konto als dem angemeldeten Benutzer ausgeführt wird. Sie können ein bestimmtes Username Und-Paar Password angeben, unter dem der Dienst ausgeführt werden soll, oder Sie können Account verwenden, um anzugeben, dass der Dienst unter dem Systemkonto des Computers, einem lokalen Oder Netzwerkdienstkonto oder einem Benutzerkonto ausgeführt wird.

Hinweis

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 Methoden und ServiceInstaller.Install während des Installationsvorgangs automatisch auf. Fehler werden bei Bedarf durch Aufruf Rollback (oder ServiceInstaller.Rollback) für alle zuvor installierten Komponenten gesichert.

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

Durch das Instanziieren eines ServiceProcessInstaller wird der Basisklassenkonstruktor aufgerufen ComponentInstaller.

Konstruktoren

ServiceProcessInstaller()

Erstellt eine neue Instanz der ServiceProcessInstaller-Klasse.

Eigenschaften

Account

Ruft den Typ des Kontos ab, unter dem die Dienstanwendung ausgeführt wird, oder legt diesen fest.

CanRaiseEvents

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

(Geerbt von Component)
Container

Ruft die IContainer ab, die in der Component enthalten ist.

(Geerbt von Component)
Context

Ruft Informationen über die derzeitige Installation ab oder legt diese fest.

(Geerbt von Installer)
DesignMode

Ruft einen Wert ab, der angibt, ob sich Component gegenwärtig im Entwurfsmodus befindet.

(Geerbt von Component)
Events

Ruft die Liste der Ereignishandler ab, die dieser Component angefügt sind.

(Geerbt von Component)
HelpText

Ruft den Hilfetext ab, der zu den Installationsoptionen für Dienste angezeigt wird.

Installers

Ruft die Auflistung von Installationsprogrammen ab, die dieses Installationsprogramm enthält.

(Geerbt von Installer)
Parent

Ruft das Installationsprogramm ab, das die Auflistung mit diesem Installationsprogramm enthält, oder legt dieses fest.

(Geerbt von Installer)
Password

Ruft das zugeordnete Kennwort des Benutzerkontos ab, 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

Commit(IDictionary)

Schließt beim Überschreiben in einer abgeleiteten Klasse die Installationstransaktion ab.

(Geerbt von Installer)
CopyFromComponent(IComponent)

Implementiert die CopyFromComponent(IComponent)-Methode der Basisklasse ohne das für die ServiceProcessInstaller-Klasse spezifische Verhalten.

CreateObjRef(Type)

Erstellt ein Objekt mit allen relevanten Informationen, die zum Generieren eines Proxys für die Kommunikation mit einem Remoteobjekt erforderlich sind.

(Geerbt von MarshalByRefObject)
Dispose()

Gibt alle vom Component verwendeten Ressourcen frei.

(Geerbt von Component)
Dispose(Boolean)

Gibt die von Component verwendeten nicht verwalteten Ressourcen und optional die verwalteten Ressourcen frei.

(Geerbt von Component)
Equals(Object)

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

(Geerbt von Object)
GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetLifetimeService()
Veraltet.

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

(Geerbt von MarshalByRefObject)
GetService(Type)

Gibt ein Objekt zurück, das einen von der Component oder von deren Container bereitgestellten Dienst darstellt.

(Geerbt von Component)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
InitializeLifetimeService()
Veraltet.

Ruft ein Lebensdauerdienstobjekt zur Steuerung der Lebensdauerrichtlinie für diese Instanz ab.

(Geerbt von MarshalByRefObject)
Install(IDictionary)

Schreibt Dienstanwendungsinformationen in die Registrierung. Diese Methode ist für die Verwendung durch Installationstools bestimmt, die die entsprechenden Methoden automatisch aufrufen.

IsEquivalentInstaller(ComponentInstaller)

Bestimmt, ob das angegebene Installationsprogramm dieselben Objekte installiert wie dieses Installationsprogramm.

(Geerbt von ComponentInstaller)
MemberwiseClone()

Erstellt eine flache Kopie des 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)

Führt ein Rollback der Informationen über Dienstanwendungen durch, die bei der Installation in die Registrierung geschrieben wurden. Diese Methode ist nur für die Verwendung durch Installationstools vorgesehen, die die entsprechenden Methoden automatisch verarbeiten.

ToString()

Gibt einen String zurück, der den Namen der Component enthält (sofern vorhanden). Diese Methode darf nicht überschrieben werden.

(Geerbt von Component)
Uninstall(IDictionary)

Entfernt beim Überschreiben in einer abgeleiteten Klasse eine Installation.

(Geerbt von Installer)

Ereignisse

AfterInstall

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

(Geerbt von Installer)
AfterRollback

Tritt ein, nachdem ein Rollback aller Installationen der Installationsprogramme in der Installers-Eigenschaft ausgeführt wurde.

(Geerbt von Installer)
AfterUninstall

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

(Geerbt von Installer)
BeforeInstall

Tritt ein, bevor die Install(IDictionary)-Methode aller in der Auflistung der Installationsprogramme enthaltenen Installationsprogramme ausgeführt worden ist.

(Geerbt von Installer)
BeforeRollback

Tritt ein, bevor ein Rollback der Installationsprogramme in der Installers-Eigenschaft ausgeführt wird.

(Geerbt von Installer)
BeforeUninstall

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

(Geerbt von Installer)
Committed

Tritt ein, nachdem alle Installationsprogramme in der Installers-Eigenschaft ein Commit für ihre Installationen ausgeführt haben.

(Geerbt von Installer)
Committing

Tritt ein, bevor die Installationsprogramme in der Installers-Eigenschaft ein Commit für ihre Installationen ausführen.

(Geerbt von Installer)
Disposed

Tritt auf, wenn die Komponente von einem Aufruf der Dispose()-Methode verworfen wird.

(Geerbt von Component)

Gilt für:

Weitere Informationen