ServiceProcessInstaller Klasa

Definicja

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)

Dotyczy

Zobacz też