ServiceInstaller Osztály
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Telepít egy olyan osztályt, amely egy szolgáltatás implementálására terjed ki ServiceBase . Ezt az osztályt a telepítési segédprogram hívja meg egy szolgáltatásalkalmazás telepítésekor.
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
- Öröklődés
Példák
Az alábbi példa létrehoz egy projekttelepítőt, az úgynevezett MyProjectInstaller, amely a következőtől Installeröröklődik: Feltételezzük, hogy van egy végrehajtható szolgáltatás, amely két szolgáltatást tartalmaz: "Hello-World Service 1" és "Hello-World Service 2". A konstruktoron MyProjectInstaller belül (amelyet a telepítési segédprogram hívna meg) ServiceInstaller az egyes szolgáltatásokhoz objektumokat hoz létre, és létrehoz egy-egy ServiceProcessInstaller fájlt a végrehajtható számára. Ahhoz, hogy a telepítő segédprogram érvényes telepítőként felismerhető MyProjectInstaller legyen, az RunInstallerAttribute attribútum a következőre truevan állítva: .
Az opcionális tulajdonságok a folyamattelepítőn és a szolgáltatástelepítőn vannak beállítva, mielőtt a telepítők hozzá lettek adva a Installers gyűjteményhez. Amikor a telepítési segédprogram hozzáfér MyProjectInstaller, a gyűjteményhez Installers egy hívással InstallerCollection.Add hozzáadott objektumok is telepítve lesznek. A folyamat során a telepítő állapotinformációkat tart fenn, amelyek jelzik, hogy mely objektumok lettek telepítve, így mindegyikről biztonsági másolatot készíthet, ha telepítési hiba történik.
Általában nem hozna létre kifejezetten egy példányt a projekttelepítő osztályból. Létrehozná, és hozzáadná az RunInstallerAttribute attribútumot a szintaxishoz, de valójában ez a telepítési segédprogram hívja meg, és ezért példányosítja az osztályt.
#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
Megjegyzések
A ServiceInstaller szolgáltatás, amelyhez társítva van, az adott szolgáltatásra jellemző. A telepítési segédprogram a szolgáltatáshoz társított beállításjegyzék-értékek írására használja a HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services beállításkulcs egyik alkulcsára. A szolgáltatást a ServiceName azonosítja ezen az alkulcson belül. Az alkulcs tartalmazza annak a végrehajtható vagy .dll a nevét is, amelyhez a szolgáltatás tartozik.
Szolgáltatás telepítéséhez hozzon létre egy, az Installer osztálytól öröklő projekttelepítő osztályt, és állítsa az RunInstallerAttribute osztály attribútumát a következőre true: . A projekten belül hozzon létre egy példányt ServiceProcessInstaller szolgáltatásalkalmazásonként, és egy példányt ServiceInstaller az alkalmazás minden egyes szolgáltatásához. A projekt telepítőosztályának konstruktorán belül állítsa be a szolgáltatás telepítési tulajdonságait a példányok és ServiceProcessInstaller a ServiceInstaller példányok használatával, és adja hozzá a példányokat a Installers gyűjteményhez.
Note
Javasoljuk, hogy a konstruktort használja a telepítőpéldányok hozzáadásához; Ha azonban hozzá kell adnia a Installers gyűjteményhez a Install metódusban, mindenképpen végezze el ugyanazokat a hozzáadásokat a gyűjteményhez a Uninstall metódusban.
Az osztályból Installer származó összes osztály esetében a Installers gyűjtemény állapotának azonosnak kell lennie a metódusokban és Install a Uninstall metódusokban. Ha azonban telepítőpéldányokat ad hozzá a gyűjteményhez az Install egyéni telepítőosztály-konstruktorban, elkerülheti a gyűjtemény karbantartását a Uninstall különböző módszerek és Installers módszerek között. A telepítési segédprogram meghívásakor az attribútumot keresiRunInstallerAttribute. Ha az attribútum az true, a segédprogram telepíti a projekttelepítőhöz társított gyűjteményhez Installers hozzáadott összes szolgáltatást. Ha RunInstallerAttribute létezik false vagy nem létezik, a telepítési segédprogram figyelmen kívül hagyja a projekttelepítőt.
A ServiceProcessInstaller projekttelepítési osztályhoz társított példányok a projekt összes ServiceInstaller példányára vonatkozóan gyakran előforduló információkat telepítik. Ha a szolgáltatás rendelkezik bármivel, amely elválasztja azt a telepítési projekt többi szolgáltatásától, a szolgáltatásspecifikus információkat ezzel a módszerrel települ.
Note
Fontos, hogy az ServiceName azonos legyen a ServiceBase.ServiceName származtatott osztályával ServiceBase. A szolgáltatás tulajdonságának ServiceBase.ServiceName értéke általában a szolgáltatásalkalmazás végrehajtható fájljának Main() függvényén belül van beállítva. A Service Control Manager a ServiceInstaller.ServiceName tulajdonság használatával keresi meg a szolgáltatást ebben a végrehajtható fájlban.
A projekttelepítő gyűjteményéhez való hozzáadás előtt vagy után módosíthatja az ServiceInstaller egyéb tulajdonságokat Installers is. Előfordulhat például, hogy StartType egy szolgáltatás úgy van beállítva, hogy újraindításkor automatikusan elindítsa a szolgáltatást, vagy a felhasználónak manuálisan kell elindítania a szolgáltatást.
A metódusokat ServiceInstaller általában nem fogja betárcsázni a kódon belül, általában csak a telepítési segédprogram hívja meg őket. A telepítési segédprogram a telepítési folyamat során automatikusan meghívja a metódusokat és ServiceProcessInstaller.Install a ServiceInstaller.Install metódusokat. Szükség esetén az összes korábban telepített összetevő meghívásával Rollback (vagy ServiceInstaller.Rollback) visszaállítja a hibákat.
A telepítési segédprogram meghívja Uninstall az objektum eltávolítását.
Az alkalmazás telepítési rutinja automatikusan megőrzi a már telepített összetevőkkel kapcsolatos információkat a projekttelepítő Installer.Contexthasználatával. Az állapotinformációk példányként ServiceProcessInstaller folyamatosan frissülnek, és minden ServiceInstaller példányt a segédprogram telepít. Általában szükségtelen, hogy a kód explicit módon módosítsa az állapotinformációkat.
A telepítés végrehajtásakor automatikusan létrehoz egy EventLogInstaller , a származtatott osztályhoz ServiceBase társított eseménynapló-forrás telepítését. A Log forrás tulajdonságát a ServiceInstaller konstruktor állítja be a számítógép alkalmazásnaplójába. A (szolgáltatással ServiceName azonos) érték beállításakor ServiceInstallerServiceBase.ServiceName a Source rendszer automatikusan ugyanarra az értékre állítja be az értéket. Telepítési hiba esetén a rendszer visszaállítja a forrás telepítését a korábban telepített szolgáltatásokkal együtt.
A Uninstall metódus megpróbálja leállítani a szolgáltatást, ha fut. Ha ez sikerül, Uninstall visszavonja a módosításokat Install. Ha új forrás jött létre az eseménynaplózáshoz, a forrás törlődik.
Konstruktorok
| Name | Description |
|---|---|
| ServiceInstaller() |
Inicializálja a ServiceInstaller osztály új példányát. |
Tulajdonságok
| Name | Description |
|---|---|
| CanRaiseEvents |
Beolvas egy értéket, amely jelzi, hogy az összetevő képes-e eseményt létrehozni. (Öröklődés forrása Component) |
| Container |
Lekéri a IContainer .Component (Öröklődés forrása Component) |
| Context |
Lekéri vagy beállítja az aktuális telepítéssel kapcsolatos információkat. (Öröklődés forrása Installer) |
| DelayedAutoStart |
Lekéri vagy beállít egy értéket, amely jelzi, hogy a szolgáltatás elindulásától a többi automatikusan elindított szolgáltatás futásáig késleltetni kell-e. |
| Description |
Lekéri vagy beállítja a szolgáltatás leírását. |
| DesignMode |
Olyan értéket kap, amely jelzi, hogy az Component aktuálisan tervezési módban van-e. (Öröklődés forrása Component) |
| DisplayName |
A felhasználó számára a szolgáltatást azonosító rövid nevet jelzi. |
| Events |
Lekéri az ehhez Componentcsatolt eseménykezelők listáját. (Öröklődés forrása Component) |
| HelpText |
Lekéri a telepítőgyűjtemény összes telepítőjének súgószövegét. (Öröklődés forrása Installer) |
| Installers |
Lekéri a telepítő által tartalmazott telepítők gyűjteményét. (Öröklődés forrása Installer) |
| Parent |
Lekéri vagy beállítja azt a gyűjteményt tartalmazó telepítőt, amelyhez ez a telepítő tartozik. (Öröklődés forrása Installer) |
| ServiceName |
A rendszer által a szolgáltatás azonosítására használt nevet jelzi. Ennek a tulajdonságnak meg kell egyeznie a ServiceName telepíteni kívánt szolgáltatással. |
| ServicesDependedOn |
A szolgáltatás futtatásához szükséges szolgáltatásokat jelzi. |
| Site |
Lekéri vagy megadja a ISite értékét a Component-hez. (Öröklődés forrása Component) |
| StartType |
Azt jelzi, hogy a szolgáltatás hogyan és mikor indul el. |
Metódusok
| Name | Description |
|---|---|
| Commit(IDictionary) |
Ha felül van bírálva egy származtatott osztályban, befejezi a telepítési tranzakciót. (Öröklődés forrása Installer) |
| CopyFromComponent(IComponent) |
Tulajdonságok másolása ServiceBase egy példányból a telepítőbe. |
| CreateObjRef(Type) |
Létrehoz egy objektumot, amely tartalmazza a távoli objektumokkal való kommunikációhoz használt proxy létrehozásához szükséges összes releváns információt. (Öröklődés forrása MarshalByRefObject) |
| Dispose() |
Felszabadítja a .-hez használt összes erőforrást Component. (Öröklődés forrása Component) |
| Dispose(Boolean) |
Felszabadítja a felügyelt erőforrások által Component használt nem felügyelt erőforrásokat, és opcionálisan felszabadítja a felügyelt erőforrásokat. (Öröklődés forrása Component) |
| Equals(Object) |
Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal. (Öröklődés forrása Object) |
| GetHashCode() |
Ez az alapértelmezett kivonatoló függvény. (Öröklődés forrása Object) |
| GetLifetimeService() |
Elavult.
Lekéri a példány élettartamszabályzatát vezérlő aktuális élettartam-szolgáltatásobjektumot. (Öröklődés forrása MarshalByRefObject) |
| GetService(Type) |
Olyan objektumot ad vissza, amely az általa vagy annak által ComponentContainernyújtott szolgáltatást jelöli. (Öröklődés forrása Component) |
| GetType() |
Lekéri az Type aktuális példányt. (Öröklődés forrása Object) |
| InitializeLifetimeService() |
Elavult.
Beolvas egy élettartam-szolgáltatásobjektumot a példány élettartam-szabályzatának szabályozásához. (Öröklődés forrása MarshalByRefObject) |
| Install(IDictionary) |
A szolgáltatás telepítése a szolgáltatásalkalmazás adatainak a beállításjegyzékbe való írásával. Ezt a módszert a telepítési eszközöknek kell használniuk, amelyek automatikusan feldolgozzák a megfelelő módszereket. |
| IsEquivalentInstaller(ComponentInstaller) |
Azt jelzi, hogy két telepítő telepíti-e ugyanazt a szolgáltatást. |
| MemberwiseClone() |
Az aktuális Objectpéldány sekély másolatát hozza létre. (Öröklődés forrása Object) |
| MemberwiseClone(Boolean) |
Az aktuális MarshalByRefObject objektum sekély másolatát hozza létre. (Öröklődés forrása MarshalByRefObject) |
| OnAfterInstall(IDictionary) |
Az eseményt emeli AfterInstall ki. (Öröklődés forrása Installer) |
| OnAfterRollback(IDictionary) |
Az eseményt emeli AfterRollback ki. (Öröklődés forrása Installer) |
| OnAfterUninstall(IDictionary) |
Az eseményt emeli AfterUninstall ki. (Öröklődés forrása Installer) |
| OnBeforeInstall(IDictionary) |
Az eseményt emeli BeforeInstall ki. (Öröklődés forrása Installer) |
| OnBeforeRollback(IDictionary) |
Az eseményt emeli BeforeRollback ki. (Öröklődés forrása Installer) |
| OnBeforeUninstall(IDictionary) |
Az eseményt emeli BeforeUninstall ki. (Öröklődés forrása Installer) |
| OnCommitted(IDictionary) |
Az eseményt emeli Committed ki. (Öröklődés forrása Installer) |
| OnCommitting(IDictionary) |
Az eseményt emeli Committing ki. (Öröklődés forrása Installer) |
| Rollback(IDictionary) |
Visszaállítja a beállításjegyzékbe írt szolgáltatásalkalmazás-adatokat a telepítési eljárással. Ezt a módszert a telepítési eszközöknek kell használniuk, amelyek automatikusan feldolgozzák a megfelelő módszereket. |
| ToString() |
String A ( ha van) nevet tartalmazó értéket Componentad vissza. Ezt a módszert nem szabad felülírni. (Öröklődés forrása Component) |
| Uninstall(IDictionary) |
Eltávolítja a szolgáltatást úgy, hogy eltávolítja róla az adatokat a beállításjegyzékből. |
esemény
| Name | Description |
|---|---|
| AfterInstall |
A tulajdonságban lévő Install(IDictionary) összes telepítő metódusának futtatása után Installers következik be. (Öröklődés forrása Installer) |
| AfterRollback |
A tulajdonságban lévő Installers összes telepítő telepítése után következik be. (Öröklődés forrása Installer) |
| AfterUninstall |
Akkor következik be, ha a tulajdonság összes telepítője végrehajtja az Installers eltávolítási műveleteket. (Öröklődés forrása Installer) |
| BeforeInstall |
A telepítőgyűjteményben lévő összes telepítő metódusának futtatása előtt Install(IDictionary) következik be. (Öröklődés forrása Installer) |
| BeforeRollback |
A tulajdonság telepítőinek Installers visszaállítása előtt történik. (Öröklődés forrása Installer) |
| BeforeUninstall |
Mielőtt a tulajdonság telepítői végrehajtanák az Installers eltávolítási műveleteket. (Öröklődés forrása Installer) |
| Committed |
Akkor fordul elő, ha a tulajdonság összes telepítője véglegesítette a Installers telepítést. (Öröklődés forrása Installer) |
| Committing |
Mielőtt a tulajdonság telepítői véglegesítik a Installers telepítésüket. (Öröklődés forrása Installer) |
| Disposed |
Akkor fordul elő, ha az összetevőt a metódus hívása megsemmisíti Dispose() . (Öröklődés forrása Component) |