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