ServiceProcessInstaller Klass

Definition

Installerar en körbar fil som innehåller klasser som utökar ServiceBase. Den här klassen anropas av installationsverktyg, till exempel InstallUtil.exe, när du installerar ett tjänstprogram.

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
Arv

Exempel

I följande exempel skapas ett projektinstallationsprogram med namnet MyProjectInstaller, som ärver från Installer. Det antas att det finns en körbar tjänst som innehåller två tjänster, "Hello-World Service 1" och "Hello-World Service 2". I konstruktorn för MyProjectInstaller (som anropas av installationsverktyget) ServiceInstaller skapas objekt för varje tjänst och en ServiceProcessInstaller skapas för den körbara filen. För att installationsverktyget ska känna igen MyProjectInstaller som ett giltigt installationsprogram RunInstallerAttribute är attributet inställt på true.

Valfria egenskaper anges i processinstallationsprogrammet och tjänstinstallationsprogrammet innan installationsprogrammet läggs till i Installers samlingen. När installationsverktyget kommer åt MyProjectInstaller installeras objekten som läggs till Installers i samlingen via ett anrop till InstallerCollection.Add i tur och ordning. Under processen behåller installationsprogrammet tillståndsinformation som anger vilka objekt som har installerats, så att varje objekt kan säkerhetskopieras i tur och ordning i händelse av ett installationsfel.

Normalt instansierar du inte projektinstallationsklassen explicit. Du skulle skapa den och lägga till RunInstallerAttribute, men installationsverktyget anropar faktiskt, och därmed instansierar, klassen.

#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

Kommentarer

ServiceProcessInstaller Fungerar gemensamt för alla tjänster i en körbar fil. Det används av installationsverktyget för att skriva registervärden som är associerade med tjänster som du vill installera.

Om du vill installera en tjänst skapar du en projektinstallationsklass som ärver från Installeroch ställer in RunInstallerAttribute klassen på true. I projektet instansierar du en ServiceProcessInstaller instans per tjänstprogram och en ServiceInstaller instans för varje tjänst i programmet. Lägg slutligen till instansen ServiceProcessInstaller och instanserna i ServiceInstaller projektinstallationsklassen.

När InstallUtil.exe körs söker verktyget efter klasser i tjänstsammansättningen med RunInstallerAttribute värdet true. Lägg till klasser i tjänstsammansättningen genom att lägga till dem i samlingen som Installers är associerad med projektinstallationsprogrammet. Om RunInstallerAttribute är falseignorerar installationsverktyget projektinstallationsprogrammet.

För en instans av ServiceProcessInstaller, kan du ändra bland annat att ange att ett tjänstprogram ska köras under ett annat konto än den inloggade användaren. Du kan ange ett visst Username par under Password vilket tjänsten ska köras, eller så kan du använda Account för att ange att tjänsten ska köras under datorns systemkonto, ett lokalt konto eller ett nätverkstjänstkonto eller ett användarkonto.

Note

Datorns systemkonto är inte detsamma som administratörskontot.

Normalt anropar du inte metoderna i ServiceInstaller koden. De anropas vanligtvis endast av installationsverktyget. Installationsverktyget anropar ServiceProcessInstaller.Install automatiskt metoderna och ServiceInstaller.Install under installationsprocessen. Om det behövs säkerhetskopieras fel genom att anropa Rollback (eller ServiceInstaller.Rollback) på alla tidigare installerade komponenter.

Programmets installationsrutin lagrar automatiskt information om de komponenter som redan har installerats med hjälp av projektinstallationsprogrammets Installer.Context. Den här tillståndsinformationen uppdateras kontinuerligt när instansen ServiceProcessInstaller och varje ServiceInstaller instans installeras av verktyget. Det är vanligtvis inte nödvändigt för koden att uttryckligen ändra den här tillståndsinformationen.

Instansiering av en ServiceProcessInstaller gör att basklasskonstruktorn, ComponentInstaller, anropas.

Konstruktorer

Name Description
ServiceProcessInstaller()

Skapar en ny instans av ServiceProcessInstaller klassen.

Egenskaper

Name Description
Account

Hämtar eller anger vilken typ av konto som det här tjänstprogrammet ska köras under.

CanRaiseEvents

Hämtar ett värde som anger om komponenten kan generera en händelse.

(Ärvd från Component)
Container

Hämtar som IContainer innehåller Component.

(Ärvd från Component)
Context

Hämtar eller anger information om den aktuella installationen.

(Ärvd från Installer)
DesignMode

Hämtar ett värde som anger om det Component för närvarande är i designläge.

(Ärvd från Component)
Events

Hämtar listan över händelsehanterare som är kopplade till den här Component.

(Ärvd från Component)
HelpText

Hämtar hjälptext som visas för installationsalternativ för tjänsten.

Installers

Hämtar den samling installationsprogram som installationsprogrammet innehåller.

(Ärvd från Installer)
Parent

Hämtar eller anger installationsprogrammet som innehåller den samling som installationsprogrammet tillhör.

(Ärvd från Installer)
Password

Hämtar eller anger lösenordet som är associerat med användarkontot under vilket tjänstprogrammet körs.

Site

Hämtar eller ställer in ISite i Component.

(Ärvd från Component)
Username

Hämtar eller anger det användarkonto som tjänstprogrammet ska köras under.

Metoder

Name Description
Commit(IDictionary)

När du åsidosättas i en härledd klass slutför du installationstransaktionen.

(Ärvd från Installer)
CopyFromComponent(IComponent)

Implementerar basklassmetoden CopyFromComponent(IComponent) utan ServiceProcessInstaller klassspecifikt beteende.

CreateObjRef(Type)

Skapar ett objekt som innehåller all relevant information som krävs för att generera en proxy som används för att kommunicera med ett fjärrobjekt.

(Ärvd från MarshalByRefObject)
Dispose()

Släpper alla resurser som används av Component.

(Ärvd från Component)
Dispose(Boolean)

Släpper de ohanterade resurser som används av Component och släpper eventuellt de hanterade resurserna.

(Ärvd från Component)
Equals(Object)

Avgör om det angivna objektet är lika med det aktuella objektet.

(Ärvd från Object)
GetHashCode()

Fungerar som standard-hash-funktion.

(Ärvd från Object)
GetLifetimeService()
Föråldrad.

Hämtar det aktuella livslängdstjänstobjektet som styr livslängdsprincipen för den här instansen.

(Ärvd från MarshalByRefObject)
GetService(Type)

Returnerar ett objekt som representerar en tjänst som tillhandahålls av Component eller av dess Container.

(Ärvd från Component)
GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
InitializeLifetimeService()
Föråldrad.

Hämtar ett tjänstobjekt för livslängd för att styra livslängdsprincipen för den här instansen.

(Ärvd från MarshalByRefObject)
Install(IDictionary)

Skriver information om tjänstprogram till registret. Den här metoden är avsedd att användas av installationsverktyg, som anropar lämpliga metoder automatiskt.

IsEquivalentInstaller(ComponentInstaller)

Avgör om det angivna installationsprogrammet installerar samma objekt som det här installationsprogrammet.

(Ärvd från ComponentInstaller)
MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
MemberwiseClone(Boolean)

Skapar en ytlig kopia av det aktuella MarshalByRefObject objektet.

(Ärvd från MarshalByRefObject)
OnAfterInstall(IDictionary)

Genererar händelsen AfterInstall .

(Ärvd från Installer)
OnAfterRollback(IDictionary)

Genererar händelsen AfterRollback .

(Ärvd från Installer)
OnAfterUninstall(IDictionary)

Genererar händelsen AfterUninstall .

(Ärvd från Installer)
OnBeforeInstall(IDictionary)

Genererar händelsen BeforeInstall .

(Ärvd från Installer)
OnBeforeRollback(IDictionary)

Genererar händelsen BeforeRollback .

(Ärvd från Installer)
OnBeforeUninstall(IDictionary)

Genererar händelsen BeforeUninstall .

(Ärvd från Installer)
OnCommitted(IDictionary)

Genererar händelsen Committed .

(Ärvd från Installer)
OnCommitting(IDictionary)

Genererar händelsen Committing .

(Ärvd från Installer)
Rollback(IDictionary)

Återställer information om tjänstprogram som skrivits till registret enligt installationsproceduren. Den här metoden är avsedd att användas av installationsverktyg, som bearbetar lämpliga metoder automatiskt.

ToString()

Returnerar ett String som innehåller namnet på Component, om det finns. Den här metoden bör inte åsidosättas.

(Ärvd från Component)
Uninstall(IDictionary)

När den åsidosättas i en härledd klass, tar bort en installation.

(Ärvd från Installer)

Händelser

Name Description
AfterInstall

Inträffar när metoderna för Install(IDictionary) alla installationsprogram i egenskapen Installers har körts.

(Ärvd från Installer)
AfterRollback

Inträffar när installationerna av alla installationsprogram i Installers egenskapen har återställts.

(Ärvd från Installer)
AfterUninstall

Inträffar när alla installationsprogram i egenskapen Installers utför sina avinstallationsåtgärder.

(Ärvd från Installer)
BeforeInstall

Inträffar innan metoden för Install(IDictionary) varje installationsprogram i installationssamlingen har körts.

(Ärvd från Installer)
BeforeRollback

Inträffar innan installationsprogrammet i egenskapen Installers återställs.

(Ärvd från Installer)
BeforeUninstall

Inträffar innan installationsprogrammet i egenskapen Installers utför sina avinstallationsåtgärder.

(Ärvd från Installer)
Committed

Inträffar när alla installationsprogram i Installers egenskapen har checkat in sina installationer.

(Ärvd från Installer)
Committing

Inträffar innan installationsprogrammet i egenskapen Installers checkar in sina installationer.

(Ärvd från Installer)
Disposed

Inträffar när komponenten tas bort av ett anrop till Dispose() metoden.

(Ärvd från Component)

Gäller för

Se även