ServiceProcessInstaller Klasa

Definicja

Instaluje plik wykonywalny zawierający klasy rozszerzające ServiceBaseklasę . 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

Poniższy przykład tworzy instalatora projektu o nazwie MyProjectInstaller, który dziedziczy z Installerklasy . 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 (który jest wywoływany przez narzędzie instalacyjne), ServiceInstaller obiekty są tworzone dla każdej usługi, a ServiceProcessInstaller obiekt jest tworzony dla pliku wykonywalnego. Aby narzędzie instalacyjne rozpoznawało program MyProjectInstaller jako prawidłowy instalator, RunInstallerAttribute atrybut jest ustawiony na true.

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 pośrednictwem wywołania InstallerCollection.Add , zostaną zainstalowane z kolei. Podczas procesu instalator zachowuje informacje o stanie wskazującym, które obiekty zostały zainstalowane, dzięki czemu każdy obiekt może zostać wycofany z kolei w przypadku awarii instalacji.

Zwykle nie należy jawnie utworzyć wystąpienia klasy instalatora projektu. Można go utworzyć i dodać element RunInstallerAttribute, ale narzędzie instalacji rzeczywiście wywołuje, a zatem 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 często 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 dziedziczą z Installerklasy i ustaw dla RunInstallerAttribute klasy truewartość . 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 RunInstallerAttribute true. Dodaj klasy do zestawu usługi, dodając je do kolekcji skojarzonej Installers z instalatorem projektu. Jeśli RunInstallerAttribute jest to false, narzędzie instalacyjne ignoruje instalatora projektu.

W przypadku wystąpienia ServiceProcessInstallerwłaściwości programu można zmodyfikować, określając, że aplikacja usługi jest uruchamiana na koncie innym niż zalogowany użytkownik. Możesz określić określoną Username i Password parę, w ramach której usługa ma być uruchomiona, lub można użyć Account do określenia, czy usługa jest uruchamiana na koncie systemowym komputera, koncie usługi lokalnej lub sieciowej albo na koncie użytkownika.

Uwaga

Konto systemowe komputera nie jest takie samo jak konto administratora.

Zwykle metody nie są wywoływane ServiceInstaller w kodzie. Zazwyczaj są one 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 Rollback polecenie (lub ServiceInstaller.Rollback) we wszystkich wcześniej zainstalowanych składnikach.

Procedura instalacji aplikacji przechowuje informacje automatycznie o składnikach już zainstalowanych 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 jest potrzebny do jawnego zmodyfikowania tych informacji o stanie.

Utworzenie wystąpienia powoduje wywołanie ServiceProcessInstaller konstruktora klasy bazowej , ComponentInstaller.

Konstruktory

ServiceProcessInstaller()

Tworzy nowe wystąpienie klasy ServiceProcessInstaller.

Właściwości

Account

Pobiera lub ustawia typ konta, w ramach którego ma zostać uruchomiona ta aplikacja usługi.

CanRaiseEvents

Pobiera wartość wskazującą, czy składnik może zgłosić zdarzenie.

(Odziedziczone po Component)
Container

Pobiera element IContainer zawierający element Component.

(Odziedziczone po Component)
Context

Pobiera lub ustawia informacje o bieżącej instalacji.

(Odziedziczone po Installer)
DesignMode

Pobiera wartość wskazującą, czy Component element jest obecnie w trybie projektowania.

(Odziedziczone po Component)
Events

Pobiera listę programów obsługi zdarzeń dołączonych do tego Componentelementu .

(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 instalatora zawierającego 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 element .Component

(Odziedziczone po Component)
Username

Pobiera lub ustawia konto użytkownika, w ramach którego zostanie uruchomiona aplikacja usługi.

Metody

Commit(IDictionary)

Po przesłonięcia 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 wszelkie zasoby używane przez element Component.

(Odziedziczone po Component)
Dispose(Boolean)

Zwalnia zasoby niezarządzane używane przez element Component i opcjonalnie zwalnia zasoby zarządzane.

(Odziedziczone po Component)
Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetLifetimeService()
Nieaktualne.

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 obiekt lub przez obiekt Container.

(Odziedziczone po Component)
GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
InitializeLifetimeService()
Nieaktualne.

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 Objectelementu .

(Odziedziczone po Object)
MemberwiseClone(Boolean)

Tworzy płytkią kopię bieżącego MarshalByRefObject obiektu.

(Odziedziczone po MarshalByRefObject)
OnAfterInstall(IDictionary)

AfterInstall Zgłasza zdarzenie.

(Odziedziczone po Installer)
OnAfterRollback(IDictionary)

AfterRollback Zgłasza zdarzenie.

(Odziedziczone po Installer)
OnAfterUninstall(IDictionary)

AfterUninstall Zgłasza zdarzenie.

(Odziedziczone po Installer)
OnBeforeInstall(IDictionary)

BeforeInstall Zgłasza zdarzenie.

(Odziedziczone po Installer)
OnBeforeRollback(IDictionary)

BeforeRollback Zgłasza zdarzenie.

(Odziedziczone po Installer)
OnBeforeUninstall(IDictionary)

BeforeUninstall Zgłasza zdarzenie.

(Odziedziczone po Installer)
OnCommitted(IDictionary)

Committed Zgłasza zdarzenie.

(Odziedziczone po Installer)
OnCommitting(IDictionary)

Committing Zgłasza zdarzenie.

(Odziedziczone po Installer)
Rollback(IDictionary)

Wycofywanie informacji o aplikacji usługi zapisanych w rejestrze przez procedurę instalacji. Ta metoda ma być używana przez narzędzia instalacyjne, które przetwarzają odpowiednie metody automatycznie.

ToString()

Zwraca wartość String zawierającą nazwę Componentobiektu , 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

AfterInstall

Występuje po Install(IDictionary) uruchomieniu Installers metod wszystkich instalatorów we właściwości.

(Odziedziczone po Installer)
AfterRollback

Występuje po wycofaniu Installers instalacji wszystkich instalatorów we 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 dezinstalacji przez instalatorów w Installers właściwości.

(Odziedziczone po Installer)
Committed

Występuje po zatwierdzeniu instalacji przez wszystkich instalatorów w Installers właściwości.

(Odziedziczone po Installer)
Committing

Występuje przed zatwierdzeniem instalacji przez instalatorów w Installers właściwości.

(Odziedziczone po Installer)
Disposed

Występuje, gdy składnik jest usuwany przez wywołanie Dispose() metody .

(Odziedziczone po Component)

Dotyczy

Zobacz też