ServiceProcessInstaller Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Instaluje plik wykonywalny zawierający klasy, które rozszerzają klasę ServiceBase. Ta klasa jest wywoływana przez narzędzia instalacyjne, takie jak InstallUtil.exe, podczas instalowania aplikacji usługi.
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
- Dziedziczenie
Przykłady
W poniższym przykładzie tworzony jest instalator projektu o nazwie MyProjectInstaller, który dziedziczy z Installerelementu . Zakłada się, że istnieje plik wykonywalny usługi zawierający dwie usługi "Hello-World Service 1" i "Hello-World Service 2". W konstruktorze programu MyProjectInstaller (wywoływanym przez narzędzie instalacyjne) ServiceInstaller obiekty są tworzone dla każdej usługi, a obiekt ServiceProcessInstaller jest tworzony dla pliku wykonywalnego. Aby narzędzie instalacyjne rozpoznawało program MyProjectInstaller jako prawidłowy instalator, RunInstallerAttribute atrybut jest ustawiony na truewartość .
Opcjonalne właściwości są ustawiane w instalatorze procesu, a instalatory usług przed dodaniu instalatorów do Installers kolekcji. Gdy narzędzie instalacyjne uzyskuje dostęp do programu MyProjectInstaller, obiekty dodane do Installers kolekcji za pomocą wywołania InstallerCollection.Add zostaną zainstalowane z kolei. Podczas procesu instalator przechowuje informacje o stanie wskazujące, które obiekty zostały zainstalowane, więc każdy obiekt może zostać wycofany z kolei w przypadku awarii instalacji.
Zwykle nie należy jawnie utworzyć wystąpienia klasy instalatora projektu. Należy go utworzyć i dodać element RunInstallerAttribute, ale narzędzie instalacyjne faktycznie wywołuje i w związku z tym tworzy wystąpienie klasy .
#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
Uwagi
Funkcja ServiceProcessInstaller działa powszechnie dla wszystkich usług w pliku wykonywalnym. Jest on używany przez narzędzie instalacyjne do zapisywania wartości rejestru skojarzonych z usługami, które chcesz zainstalować.
Aby zainstalować usługę, utwórz klasę instalatora projektu, która dziedziczy z Installerklasy , i ustaw RunInstallerAttribute dla klasy wartość true. W projekcie utwórz wystąpienie jednego ServiceProcessInstaller wystąpienia dla aplikacji usługi i jedno ServiceInstaller wystąpienie dla każdej usługi w aplikacji. Na koniec dodaj ServiceProcessInstaller wystąpienie i ServiceInstaller wystąpienia do klasy instalatora projektu.
Po uruchomieniu InstallUtil.exe narzędzie wyszukuje klasy w zestawie usługi z ustawionym ustawieniem RunInstallerAttributetrue. Dodaj klasy do zestawu usługi, dodając je do kolekcji skojarzonej Installers z instalatorem projektu. Jeśli RunInstallerAttribute to false, narzędzie instalacyjne ignoruje instalatora projektu.
W przypadku wystąpienia ServiceProcessInstallerwłaściwości programu można modyfikować, określając, że aplikacja usługi jest uruchamiana na koncie innym niż zalogowany użytkownik. Można określić określoną Username i Password parę, w ramach której ma być uruchomiona usługa, lub użyć Account polecenia , aby określić, że usługa jest uruchamiana na koncie systemowym komputera, lokalnym lub sieciowym lub koncie użytkownika.
Note
Konto systemowe komputera nie jest takie samo jak konto administratora.
Zwykle metody w kodzie nie są wywoływane ServiceInstaller ; są one zwykle wywoływane tylko przez narzędzie instalacyjne. Narzędzie instalacyjne automatycznie wywołuje ServiceProcessInstaller.Install metody i ServiceInstaller.Install podczas procesu instalacji. W razie potrzeby usuwa błędy, wywołując metodę Rollback (lub ServiceInstaller.Rollback) we wszystkich wcześniej zainstalowanych składnikach.
Rutynowa instalacja aplikacji automatycznie przechowuje informacje o składnikach, które zostały już zainstalowane, przy użyciu instalatora Installer.Contextprojektu . Te informacje o stanie są stale aktualizowane jako ServiceProcessInstaller wystąpienie, a każde ServiceInstaller wystąpienie jest instalowane przez narzędzie. Zwykle kod nie musi jawnie modyfikować tych informacji o stanie.
Utworzenie wystąpienia powoduje wywołanie ServiceProcessInstaller konstruktora klasy bazowej , ComponentInstaller.
Konstruktory
| Nazwa | Opis |
|---|---|
| ServiceProcessInstaller() |
Tworzy nowe wystąpienie ServiceProcessInstaller klasy. |
Właściwości
| Nazwa | Opis |
|---|---|
| Account |
Pobiera lub ustawia typ konta, w ramach którego ma być uruchamiana ta aplikacja usługi. |
| CanRaiseEvents |
Pobiera wartość wskazującą, czy składnik może zgłosić zdarzenie. (Odziedziczone po Component) |
| Container |
Pobiera IContainer, który zawiera Component. (Odziedziczone po Component) |
| Context |
Pobiera lub ustawia informacje o bieżącej instalacji. (Odziedziczone po Installer) |
| DesignMode |
Pobiera wartość wskazującą, czy Component jest obecnie w trybie projektowania. (Odziedziczone po Component) |
| Events |
Pobiera listę programów obsługi zdarzeń dołączonych do tej Component. (Odziedziczone po Component) |
| HelpText |
Pobiera tekst pomocy wyświetlany dla opcji instalacji usługi. |
| Installers |
Pobiera kolekcję instalatorów, które zawiera ten instalator. (Odziedziczone po Installer) |
| Parent |
Pobiera lub ustawia instalator zawierający kolekcję, do którego należy ten instalator. (Odziedziczone po Installer) |
| Password |
Pobiera lub ustawia hasło skojarzone z kontem użytkownika, w ramach którego działa aplikacja usługi. |
| Site |
Pobiera lub ustawia ISite dla Component. (Odziedziczone po Component) |
| Username |
Pobiera lub ustawia konto użytkownika, w ramach którego zostanie uruchomiona aplikacja usługi. |
Metody
| Nazwa | Opis |
|---|---|
| Commit(IDictionary) |
Po zastąpieniu w klasie pochodnej kończy transakcję instalacji. (Odziedziczone po Installer) |
| CopyFromComponent(IComponent) |
Implementuje metodę klasy CopyFromComponent(IComponent) bazowej bez ServiceProcessInstaller zachowania specyficznego dla klasy. |
| CreateObjRef(Type) |
Tworzy obiekt zawierający wszystkie istotne informacje wymagane do wygenerowania serwera proxy używanego do komunikowania się z obiektem zdalnym. (Odziedziczone po MarshalByRefObject) |
| Dispose() |
Zwalnia wszystkie zasoby używane przez program Component. (Odziedziczone po Component) |
| Dispose(Boolean) |
Zwalnia niezarządzane zasoby używane przez Component program i opcjonalnie zwalnia zarządzane zasoby. (Odziedziczone po Component) |
| Equals(Object) |
Określa, czy określony obiekt jest równy bieżącemu obiektowi. (Odziedziczone po Object) |
| GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
| GetLifetimeService() |
Przestarzałe.
Pobiera bieżący obiekt usługi okresu istnienia, który kontroluje zasady okresu istnienia dla tego wystąpienia. (Odziedziczone po MarshalByRefObject) |
| GetService(Type) |
Zwraca obiekt reprezentujący usługę dostarczaną przez Component lub Container. (Odziedziczone po Component) |
| GetType() |
Pobiera Type bieżącego wystąpienia. (Odziedziczone po Object) |
| InitializeLifetimeService() |
Przestarzałe.
Uzyskuje obiekt usługi okresu istnienia w celu kontrolowania zasad okresu istnienia dla tego wystąpienia. (Odziedziczone po MarshalByRefObject) |
| Install(IDictionary) |
Zapisuje informacje o aplikacji usługi w rejestrze. Ta metoda ma być używana przez narzędzia instalacyjne, które automatycznie nazywają odpowiednie metody. |
| IsEquivalentInstaller(ComponentInstaller) |
Określa, czy określony instalator instaluje ten sam obiekt co ten instalator. (Odziedziczone po ComponentInstaller) |
| MemberwiseClone() |
Tworzy płytkią kopię bieżącego Object. (Odziedziczone po Object) |
| MemberwiseClone(Boolean) |
Tworzy płytkią kopię bieżącego MarshalByRefObject obiektu. (Odziedziczone po MarshalByRefObject) |
| OnAfterInstall(IDictionary) |
AfterInstall Wywołuje zdarzenie. (Odziedziczone po Installer) |
| OnAfterRollback(IDictionary) |
AfterRollback Wywołuje zdarzenie. (Odziedziczone po Installer) |
| OnAfterUninstall(IDictionary) |
AfterUninstall Wywołuje zdarzenie. (Odziedziczone po Installer) |
| OnBeforeInstall(IDictionary) |
BeforeInstall Wywołuje zdarzenie. (Odziedziczone po Installer) |
| OnBeforeRollback(IDictionary) |
BeforeRollback Wywołuje zdarzenie. (Odziedziczone po Installer) |
| OnBeforeUninstall(IDictionary) |
BeforeUninstall Wywołuje zdarzenie. (Odziedziczone po Installer) |
| OnCommitted(IDictionary) |
Committed Wywołuje zdarzenie. (Odziedziczone po Installer) |
| OnCommitting(IDictionary) |
Committing Wywołuje zdarzenie. (Odziedziczone po Installer) |
| Rollback(IDictionary) |
Przywraca informacje o aplikacji usługi zapisywane w rejestrze przez procedurę instalacji. Ta metoda ma być używana przez narzędzia instalacyjne, które automatycznie przetwarzają odpowiednie metody. |
| ToString() |
Zwraca wartość zawierającą String nazwę Component, jeśli istnieje. Ta metoda nie powinna być zastępowana. (Odziedziczone po Component) |
| Uninstall(IDictionary) |
Po przesłonięciu w klasie pochodnej program usuwa instalację. (Odziedziczone po Installer) |
Zdarzenia
| Nazwa | Opis |
|---|---|
| AfterInstall |
Występuje po Install(IDictionary) uruchomieniu metod wszystkich instalatorów we Installers właściwości . (Odziedziczone po Installer) |
| AfterRollback |
Występuje po wycofaniu instalacji wszystkich instalatorów we Installers właściwości . (Odziedziczone po Installer) |
| AfterUninstall |
Występuje po wykonaniu Installers operacji odinstalowywania wszystkich instalatorów we właściwości. (Odziedziczone po Installer) |
| BeforeInstall |
Występuje przed uruchomieniem Install(IDictionary) metody każdego instalatora w kolekcji instalatora. (Odziedziczone po Installer) |
| BeforeRollback |
Występuje przed wycofaniem instalatorów we Installers właściwości . (Odziedziczone po Installer) |
| BeforeUninstall |
Występuje przed wykonaniem operacji odinstalowywania przez instalatorów w Installers właściwości . (Odziedziczone po Installer) |
| Committed |
Występuje po zatwierdzeniu instalacji przez wszystkie instalatory we Installers właściwości. (Odziedziczone po Installer) |
| Committing |
Występuje przed instalatorami we Installers właściwości zatwierdzenia instalacji. (Odziedziczone po Installer) |
| Disposed |
Występuje, gdy składnik jest usuwany przez wywołanie metody Dispose(). (Odziedziczone po Component) |