ServiceInstaller Osztály

Definíció

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)

A következőre érvényes:

Lásd még