ServiceProcessInstaller Třída

Definice

Nainstaluje spustitelný soubor obsahující třídy, které rozšiřují ServiceBase. Tato třída je volána instalačními nástroji, například InstallUtil.exe, při instalaci aplikace služby.

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
Dědičnost

Příklady

Následující příklad vytvoří instalační program projektu s názvem MyProjectInstaller, který dědí z Installer. Předpokládá se, že existuje spustitelný soubor služby, který obsahuje dvě služby: "Hello-World Service 1" a "Hello-World Service 2". V konstruktoru pro MyProjectInstaller (který by byl volána instalačním nástrojem) ServiceInstaller jsou vytvořeny objekty pro každou službu a ServiceProcessInstaller je vytvořen pro spustitelný soubor. Aby instalační nástroj rozpoznal MyProjectInstaller jako platný instalační program, RunInstallerAttribute je atribut nastaven na truehodnotu .

Volitelné vlastnosti jsou nastaveny v instalačním programu procesu a instalačních programů služby před jejich přidání do Installers kolekce. Když instalační nástroj přistupuje k MyProjectInstaller, objekty přidané do Installers kolekce prostřednictvím volání se InstallerCollection.Add nainstalují. Během procesu instalační program udržuje informace o stavu, které označují, které objekty byly nainstalovány, takže každý objekt může být v případě selhání instalace zálohován.

Za normálních okolností byste explicitně nevytvořeli instanci třídy instalačního programu projektu. Vytvoříte ho a přidáte RunInstallerAttribute, ale instalační nástroj ve skutečnosti volá a vytvoří instanci třídy .

#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

Poznámky

Funguje ServiceProcessInstaller společně se všemi službami ve spustitelném souboru. Je používán instalačním nástrojem k zápisu hodnot registru přidružených ke službám, které chcete nainstalovat.

Pokud chcete nainstalovat službu, vytvořte třídu instalačního programu projektu, která dědí z Installer, a nastavte RunInstallerAttribute třídu pro třídu na true. V rámci projektu vytvořte instanci jedné ServiceProcessInstaller instance pro každou aplikaci služby a jednu ServiceInstaller instanci pro každou službu v aplikaci. Nakonec přidejte ServiceProcessInstaller instanci a ServiceInstaller instance do třídy instalačního programu projektu.

Při spuštění InstallUtil.exe nástroj vyhledá třídy v sestavení služby s nastavenou RunInstallerAttribute na true. Přidejte třídy do sestavení služby tak, že je přidáte do Installers kolekce přidružené k instalačnímu programu projektu. Pokud RunInstallerAttribute je false, instalační nástroj ignoruje instalační program projektu.

U instance ServiceProcessInstallermůžete upravit vlastnosti, mezi které patří určení, že aplikace služby běží pod jiným účtem, než je přihlášený uživatel. Můžete zadat konkrétní Username a Password pár, ve kterém má služba běžet, nebo můžete použít Account k určení, že se služba spouští pod účtem Systému počítače, místním nebo síťovým účtem služby nebo uživatelským účtem.

Poznámka

Účet System počítače není stejný jako účet správce.

Za normálních okolností nevoláte metody na ServiceInstaller v rámci kódu; jsou obecně volána pouze instalačním nástrojem. Instalační nástroj během procesu instalace automaticky volá ServiceProcessInstaller.Install metody a ServiceInstaller.Install . V případě potřeby zatěžuje selhání voláním Rollback (nebo ServiceInstaller.Rollback) u všech dříve nainstalovaných komponent.

Instalační rutina aplikace udržuje informace o již nainstalovaných komponentách automaticky pomocí instalačního Installer.Contextprogramu projektu . Tyto informace o stavu se průběžně aktualizují ServiceProcessInstaller jako instance a každá ServiceInstaller instance je nainstalována nástrojem . Obvykle není nutné, aby kód tyto informace o stavu upravl explicitně.

Vytvoření instance ServiceProcessInstaller způsobí zavolání ComponentInstallerkonstruktoru základní třídy .

Konstruktory

ServiceProcessInstaller()

Vytvoří novou instanci třídy ServiceProcessInstaller.

Vlastnosti

Account

Získá nebo nastaví typ účtu, pod kterým se má tato aplikace služby spustit.

CanRaiseEvents

Získá hodnotu označující, zda komponenta může vyvolat událost.

(Zděděno od Component)
Container

Získá objekt IContainer , který obsahuje Component.

(Zděděno od Component)
Context

Získá nebo nastaví informace o aktuální instalaci.

(Zděděno od Installer)
DesignMode

Získá hodnotu, která označuje, zda je aktuálně v režimu návrhu Component .

(Zděděno od Component)
Events

Získá seznam obslužných rutin událostí, které jsou připojeny k tomuto Component.

(Zděděno od Component)
HelpText

Zobrazí se text nápovědy pro možnosti instalace služby.

Installers

Získá kolekci instalačních programů, které tento instalační program obsahuje.

(Zděděno od Installer)
Parent

Získá nebo nastaví instalační program obsahující kolekci, do které patří tento instalační program.

(Zděděno od Installer)
Password

Získá nebo nastaví heslo přidružené k uživatelskému účtu, pod kterým běží aplikace služby.

Site

Získá nebo nastaví ISite z Component.

(Zděděno od Component)
Username

Získá nebo nastaví uživatelský účet, pod kterým bude aplikace služby spuštěna.

Metody

Commit(IDictionary)

Při přepsání v odvozené třídě dokončí transakci instalace.

(Zděděno od Installer)
CopyFromComponent(IComponent)

Implementuje metodu základní třídy CopyFromComponent(IComponent) bez ServiceProcessInstaller chování specifického pro třídu.

CreateObjRef(Type)

Vytvoří objekt, který obsahuje všechny relevantní informace potřebné k vygenerování proxy sloužící ke komunikaci se vzdáleným objektem.

(Zděděno od MarshalByRefObject)
Dispose()

Uvolní všechny prostředky používané nástrojem Component.

(Zděděno od Component)
Dispose(Boolean)

Uvolní nespravované prostředky používané nástrojem Component a volitelně uvolní spravované prostředky.

(Zděděno od Component)
Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetLifetimeService()
Zastaralé.

Načte aktuální životnost objektu služby, který řídí zásady životnosti pro tuto instanci.

(Zděděno od MarshalByRefObject)
GetService(Type)

Vrátí objekt, který představuje službu poskytovanou objektem Component nebo .Container

(Zděděno od Component)
GetType()

Type Získá z aktuální instance.

(Zděděno od Object)
InitializeLifetimeService()
Zastaralé.

Získá životnost objektu služby, který řídí zásady životnosti pro tuto instanci.

(Zděděno od MarshalByRefObject)
Install(IDictionary)

Zapíše informace o aplikaci služby do registru. Tato metoda je určena k použití instalačními nástroji, které automaticky volají příslušné metody.

IsEquivalentInstaller(ComponentInstaller)

Určuje, zda zadaný instalační program nainstaluje stejný objekt jako tento instalační program.

(Zděděno od ComponentInstaller)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
MemberwiseClone(Boolean)

Vytvoří mělkou kopii aktuálního MarshalByRefObject objektu.

(Zděděno od MarshalByRefObject)
OnAfterInstall(IDictionary)

AfterInstall Vyvolá událost.

(Zděděno od Installer)
OnAfterRollback(IDictionary)

AfterRollback Vyvolá událost.

(Zděděno od Installer)
OnAfterUninstall(IDictionary)

AfterUninstall Vyvolá událost.

(Zděděno od Installer)
OnBeforeInstall(IDictionary)

BeforeInstall Vyvolá událost.

(Zděděno od Installer)
OnBeforeRollback(IDictionary)

BeforeRollback Vyvolá událost.

(Zděděno od Installer)
OnBeforeUninstall(IDictionary)

BeforeUninstall Vyvolá událost.

(Zděděno od Installer)
OnCommitted(IDictionary)

Committed Vyvolá událost.

(Zděděno od Installer)
OnCommitting(IDictionary)

Committing Vyvolá událost.

(Zděděno od Installer)
Rollback(IDictionary)

Vrátí zpět informace o aplikaci služby zapsané do registru instalačním postupem. Tato metoda je určena k použití instalačními nástroji, které automaticky zpracovávají příslušné metody.

ToString()

String Vrátí hodnotu obsahující název , Componentpokud existuje. Tato metoda by neměla být přepsána.

(Zděděno od Component)
Uninstall(IDictionary)

Při přepsání v odvozené třídě nástroj odebere instalaci.

(Zděděno od Installer)

Událost

AfterInstall

Vyvolá se Install(IDictionary) po spuštění metod všech instalačních programů ve Installers vlastnosti .

(Zděděno od Installer)
AfterRollback

Vyvolá se po vrácení instalací všech instalačních programů ve Installers vlastnosti zpět.

(Zděděno od Installer)
AfterUninstall

Vyvolá se poté, co všechny instalační programy ve Installers vlastnosti provedou operace odinstalace.

(Zděděno od Installer)
BeforeInstall

Nastane před spuštěním Install(IDictionary) metody každého instalačního programu v kolekci instalačního programu.

(Zděděno od Installer)
BeforeRollback

Nastane před vrácením instalačních programů ve Installers vlastnosti zpět.

(Zděděno od Installer)
BeforeUninstall

Nastane předtím, než instalační programy ve Installers vlastnosti provedou své operace odinstalace.

(Zděděno od Installer)
Committed

Vyvolá se poté, co všechny instalační programy ve Installers vlastnosti potvrdily své instalace.

(Zděděno od Installer)
Committing

Nastane předtím, než instalační programy ve Installers vlastnosti potvrdí své instalace.

(Zděděno od Installer)
Disposed

Vyvolá se, když je komponenta uvolněna voláním Dispose() metody .

(Zděděno od Component)

Platí pro

Viz také