ServiceInstaller Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Nainstaluje třídu, která se rozšiřuje ServiceBase o implementaci služby. Tato třída je volána instalačním nástrojem při instalaci aplikace služby.
public ref class ServiceInstaller : System::Configuration::Install::ComponentInstaller
public class ServiceInstaller : System.Configuration.Install.ComponentInstaller
type ServiceInstaller = class
inherit ComponentInstaller
Public Class ServiceInstaller
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 aHello-World Service 2. V rámci konstruktoru MyProjectInstaller (který by byl volána instalačním nástrojem), ServiceInstaller objekty se vytvoří pro každou z těchto služeb a vytvoří se ServiceProcessInstaller pro spustitelný soubor. Aby instalační nástroj rozpoznal MyProjectInstaller jako platný instalační program, RunInstallerAttribute je atribut nastaven na true.
Volitelné vlastnosti jsou nastaveny v instalačním programu procesu a instalační programy služby před tím, než se instalační programy přidají do Installers kolekce. Při přístupu MyProjectInstallerinstalačního nástroje se objekty přidané do Installers kolekce prostřednictvím volání InstallerCollection.Add nainstalují zase. Během tohoto procesu instalační program udržuje informace o stavu, které indikují, které objekty byly nainstalovány, takže každý z nich je možné zálohovat, pokud dojde k selhání instalace.
Za normálních okolností byste explicitně nevytvoří instanci třídy instalačního programu projektu. Vytvoříte ho RunInstallerAttribute a přidáte atribut do syntaxe, ale jedná se o instalační nástroj, který skutečně volá, a proto 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 ServiceInstaller konkrétně pro službu, ke které je přidružená. Instalační nástroj ho používá k zápisu hodnot registru přidružených ke službě do podklíče v rámci klíče registru HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services. Služba je v rámci tohoto podklíče identifikována názvem služby. Podklíč obsahuje také název spustitelného souboru nebo .dll, do kterého služba patří.
Chcete-li nainstalovat službu, vytvořte třídu instalačního programu projektu, která dědí z Installer třídy, a nastavte RunInstallerAttribute atribut třídy na true. V rámci projektu vytvořte jednu ServiceProcessInstaller instanci na aplikaci služby a jednu ServiceInstaller instanci pro každou službu v aplikaci. V konstruktoru třídy instalačního programu projektu nastavte vlastnosti instalace pro službu pomocí ServiceProcessInstaller instancí a ServiceInstaller přidejte instance do Installers kolekce.
Poznámka:
Doporučuje se použít konstruktor pro přidání instancí instalačního programu; Pokud však potřebujete přidat do Installers kolekce v Install metodě, nezapomeňte provést stejné dodatky k kolekci v Uninstall metodě.
Pro všechny třídy odvozené z Installer třídy musí být stav Installers kolekce stejný v Install metodách a Uninstall metodách. Pokud však do kolekce přidáte instance instalačního Installers programu v konstruktoru třídy vlastního instalačního programu, můžete se vyhnout údržbě kolekce napříč Install metodami a Uninstall metodami. Při zavolání instalačního nástroje vyhledá RunInstallerAttribute atribut. Pokud je trueatribut , nástroj nainstaluje všechny služby přidané do Installers kolekce, které byly přidruženy k instalačnímu programu projektu. Pokud RunInstallerAttribute je false nebo neexistuje, instalační nástroj ignoruje instalační program projektu.
Přidružená ServiceProcessInstaller k instalační třídě projektu nainstaluje informace společné pro všechny ServiceInstaller instance v projektu. Pokud má tato služba cokoli, co ji odděluje od ostatních služeb v projektu instalace, tato metoda nainstaluje informace specifické pro službu.
Poznámka:
Je nezbytné, aby ServiceName byl identický s ServiceBase.ServiceName třídou, kterou jste odvozli .ServiceBase Za normálních ServiceBase.ServiceName okolností je hodnota vlastnosti pro službu nastavena ve funkci Main() spustitelného souboru aplikace služby. Správce řízení služeb používá ServiceInstaller.ServiceName vlastnost k vyhledání služby v rámci tohoto spustitelného souboru.
Můžete upravit další vlastnosti ServiceInstaller buď před nebo po jeho přidání do Installers kolekce instalačního programu projektu. Služba může být například nastavená tak, aby službu StartType spustila automaticky při restartování nebo vyžaduje, aby ji uživatel spustil ručně.
Za normálních okolností nebudete volat metody ServiceInstaller v kódu; obvykle jsou volána pouze instalačním nástrojem. Instalační nástroj během procesu instalace automaticky volá ServiceProcessInstaller.Install metody a ServiceInstaller.Install metody. V případě potřeby vrátí chyby voláním Rollback (nebo ServiceInstaller.Rollback) u všech dříve nainstalovaných komponent.
Instalační nástroj volá Uninstall objekt odebrat.
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í jako ServiceProcessInstaller instance a každá ServiceInstaller instance je nainstalovaná nástrojem. Obvykle není nutné, aby kód explicitně upravil informace o stavu.
Při provedení instalace se automaticky vytvoří EventLogInstaller pro instalaci zdroje protokolu událostí přidruženého k odvozené ServiceBase třídě. Vlastnost Log pro tento zdroj je nastavena ServiceInstaller konstruktorem na protokol aplikace počítače. Když nastavíte ServiceName hodnotu ServiceInstaller (která by měla být shodná ServiceBase.ServiceName se službou), Source nastaví se automaticky na stejnou hodnotu. V případě selhání instalace se instalace zdroje vrátí zpět společně s dříve nainstalovanými službami.
Metoda Uninstall se pokusí zastavit službu, pokud je spuštěna. Bez ohledu na to, zda je tato akce úspěšná nebo ne, Uninstall vrátí zpět změny provedené .Install Pokud byl vytvořen nový zdroj pro protokolování událostí, zdroj se odstraní.
Konstruktory
| Name | Description |
|---|---|
| ServiceInstaller() |
Inicializuje novou instanci ServiceInstaller třídy. |
Vlastnosti
| Name | Description |
|---|---|
| CanRaiseEvents |
Získá hodnotu určující, zda komponenta může vyvolat událost. (Zděděno od Component) |
| Container |
Získá ten IContainer , který obsahuje Component. (Zděděno od Component) |
| Context |
Získá nebo nastaví informace o aktuální instalaci. (Zděděno od Installer) |
| DelayedAutoStart |
Získá nebo nastaví hodnotu, která označuje, zda má být služba zpožděna od spuštění do ostatních automaticky spuštěných služeb. |
| Description |
Získá nebo nastaví popis služby. |
| DesignMode |
Získá hodnotu, která označuje, zda Component je aktuálně v režimu návrhu. (Zděděno od Component) |
| DisplayName |
Označuje popisný název, který identifikuje službu uživateli. |
| Events |
Získá seznam obslužných rutin událostí, které jsou připojeny k tomuto Component. (Zděděno od Component) |
| HelpText |
Získá text nápovědy pro všechny instalační programy v kolekci instalačního programu. (Zděděno od Installer) |
| 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é tento instalační program patří. (Zděděno od Installer) |
| ServiceName |
Označuje název používaný systémem k identifikaci této služby. Tato vlastnost musí být shodná se ServiceName službou, kterou chcete nainstalovat. |
| ServicesDependedOn |
Označuje služby, které musí být spuštěny, aby se tato služba spustila. |
| Site |
Získá nebo nastaví ISite .Component (Zděděno od Component) |
| StartType |
Určuje, jak a kdy je tato služba spuštěna. |
Metody
| Name | Description |
|---|---|
| Commit(IDictionary) |
Při přepsání v odvozené třídě dokončí instalaci transakce. (Zděděno od Installer) |
| CopyFromComponent(IComponent) |
Zkopíruje vlastnosti z instance tohoto instalačního ServiceBase programu. |
| CreateObjRef(Type) |
Vytvoří objekt, který obsahuje všechny relevantní informace potřebné k vygenerování proxy serveru sloužícího 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é Component a volitelně uvolní spravované prostředky. (Zděděno od Component) |
| Equals(Object) |
Určuje, zda je zadaný objekt roven aktuálnímu objektu. (Zděděno od Object) |
| GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
| GetLifetimeService() |
Zastaralé.
Načte objekt služby aktuální životnosti, 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 jeho Container. (Zděděno od Component) |
| GetType() |
Získá Type aktuální instance. (Zděděno od Object) |
| InitializeLifetimeService() |
Zastaralé.
Získá objekt služby životnosti pro řízení zásad životnosti pro tuto instanci. (Zděděno od MarshalByRefObject) |
| Install(IDictionary) |
Nainstaluje službu zápisem informací o aplikaci služby do registru. Tato metoda je určena k použití instalačními nástroji, které automaticky zpracovávají příslušné metody. |
| IsEquivalentInstaller(ComponentInstaller) |
Určuje, jestli by dva instalační programy nainstalovaly stejnou službu. |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (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 podle postupu instalace. 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 Component, pokud existuje. Tato metoda by neměla být přepsána. (Zděděno od Component) |
| Uninstall(IDictionary) |
Odinstaluje službu odebráním informací z registru. |
Událost
| Name | Description |
|---|---|
| AfterInstall |
Nastane po Install(IDictionary) spuštění metod všech instalačních programů ve Installers vlastnosti. (Zděděno od Installer) |
| AfterRollback |
Nastane po instalaci všech instalačních programů ve Installers vlastnosti se vrátí zpět. (Zděděno od Installer) |
| AfterUninstall |
Nastane po všech instalačních programech ve Installers vlastnosti provádět své 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. (Zděděno od Installer) |
| BeforeUninstall |
Nastane dříve, než instalační programy ve Installers vlastnosti provádějí své operace odinstalace. (Zděděno od Installer) |
| Committed |
Nastane po potvrzení všech instalačních programů ve Installers vlastnosti jejich instalace. (Zděděno od Installer) |
| Committing |
Nastane před instalačními programy ve Installers vlastnosti potvrdí jejich instalace. (Zděděno od Installer) |
| Disposed |
Nastane, když komponenta je uvolněna voláním Dispose() metody. (Zděděno od Component) |