Udostępnij za pośrednictwem


ServiceProcessInstaller Klasa

Definicja

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

Poniższy przykład tworzy instalatora projektu o nazwie MyProjectInstaller, który dziedziczy z elementu Installer. 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 ServiceProcessInstaller obiekt 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 kolekcji Installers . Gdy narzędzie instalacyjne uzyskuje dostęp do narzędzia MyProjectInstaller, obiekty dodane do Installers kolekcji za pośrednictwem wywołania InstallerCollection.Add zostaną zainstalowane z kolei. Podczas procesu instalator przechowuje informacje o stanie wskazujące, 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. Należy go utworzyć i dodać , RunInstallerAttributeale narzędzie instalacyjne faktycznie wywołuje, a 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 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, 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 ustawioną wartością 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 ServiceProcessInstallerprogramu właściwości 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 parę i Password , 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, koncie usługi lokalnej lub sieciowej albo koncie użytkownika.

Uwaga

Konto systemowe komputera nie jest takie samo jak konto administratora.

Zwykle metody nie są wywoływane ServiceInstaller w kodzie. 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) na wszystkich wcześniej zainstalowanych składnikach.

Procedura instalacji aplikacji automatycznie przechowuje informacje o już zainstalowanych składnikach 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

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 instalator zawierający kolekcję, do których 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 wartość ISite .Component

(Odziedziczone po Component)
Username

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

Metody

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 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()
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, który reprezentuje usługę dostarczaną przez Component obiekt lub przez element Container.

(Odziedziczone po Component)
GetType()

Type Pobiera wartość 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 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 automatycznie przetwarzają odpowiednie metody.

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 uruchomieniu Install(IDictionary) 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 dezinstalacji przez 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 we Installers właściwości.

(Odziedziczone po Installer)
Committed

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

(Odziedziczone po Installer)
Committing

Występuje przed zatwierdzeniem instalacji przez instalatorów we 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ż