ServiceProcessInstaller Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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 true
festgelegt.
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 true
fest. 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) |