ServiceProcessInstaller Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Installe un exécutable contenant des classes qui étendent ServiceBase. Cette classe est appelée par les utilitaires d'installation comme InstallUtil.exe lors de l'installation d'une application de service.
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
- Héritage
Exemples
L’exemple suivant crée un programme d’installation de projet appelé MyProjectInstaller, qui hérite de Installer. Il est supposé qu’il existe un exécutable de service qui contient deux services, « Hello-World Service 1 » et « Hello-World Service 2 ». Dans le constructeur pour MyProjectInstaller (qui serait appelé par l’utilitaire d’installation), ServiceInstaller des objets sont créés pour chaque service, et un ServiceProcessInstaller est créé pour l’exécutable. Pour que l’utilitaire d’installation reconnaisse MyProjectInstaller comme programme d’installation valide, l’attribut RunInstallerAttribute est défini sur true
.
Les propriétés facultatives sont définies sur le programme d’installation de processus et les programmes d’installation de service avant que les programmes d’installation ne soient ajoutés à la Installers collection. Lorsque l’utilitaire d’installation accède à MyProjectInstaller, les objets ajoutés à la Installers collection via un appel à sont installés à InstallerCollection.Add leur tour. Pendant le processus, le programme d’installation conserve les informations d’état indiquant quels objets ont été installés, de sorte que chaque objet peut être sauvegardé à son tour en cas d’échec de l’installation.
Normalement, vous n’instanciez pas explicitement votre classe d’installation de projet. Vous le créez et ajoutez le RunInstallerAttribute, mais l’utilitaire d’installation appelle la classe et instancie donc la classe .
#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
Remarques
Fonctionne ServiceProcessInstaller en commun à tous les services d’un exécutable. Il est utilisé par l’utilitaire d’installation pour écrire les valeurs de Registre associées aux services que vous souhaitez installer.
Pour installer un service, créez une classe de programme d’installation de projet qui hérite de Installer, puis définissez sur RunInstallerAttribute la classe true
sur . Dans votre projet, instanciez un ServiceProcessInstaller instance par application de service et un ServiceInstaller instance pour chaque service de l’application. Enfin, ajoutez le ServiceProcessInstaller instance et les instances à votre ServiceInstaller classe d’installation de projet.
Lorsque InstallUtil.exe s’exécute, l’utilitaire recherche des classes dans l’assembly de service avec la RunInstallerAttribute valeur définie sur true
. Ajoutez des classes à l’assembly de service en les ajoutant à la Installers collection associée au programme d’installation de votre projet. Si RunInstallerAttribute a la valeur false
, l’utilitaire d’installation ignore le programme d’installation du projet.
Pour une instance de ServiceProcessInstaller, les propriétés que vous pouvez modifier incluent la spécification qu’une application de service s’exécute sous un compte autre que l’utilisateur connecté. Vous pouvez spécifier une paire et Password particulière Username sous laquelle le service doit s’exécuter, ou vous pouvez utiliser Account pour spécifier que le service s’exécute sous le compte système de l’ordinateur, un compte de service local ou réseau ou un compte d’utilisateur.
Notes
Le compte système de l’ordinateur n’est pas le même que le compte Administrateur.
Normalement, vous n’appelez pas les méthodes sur dans ServiceInstaller votre code ; elles sont généralement appelées uniquement par l’utilitaire d’installation. L’utilitaire d’installation appelle automatiquement les ServiceProcessInstaller.Install méthodes et ServiceInstaller.Install pendant le processus d’installation. Il permet d’effectuer une sauvegarde des défaillances, si nécessaire, en appelant Rollback (ou ServiceInstaller.Rollback) sur tous les composants précédemment installés.
La routine d’installation d’une application conserve automatiquement des informations sur les composants déjà installés, à l’aide du programme d’installation du Installer.Contextprojet. Ces informations d’état sont continuellement mises à jour à mesure que le ServiceProcessInstaller instance et chaque ServiceInstaller instance est installé par l’utilitaire. Il n’est généralement pas nécessaire que votre code modifie explicitement ces informations d’état.
L’instanciation d’un ServiceProcessInstaller entraîne l’appel du constructeur de classe de base, ComponentInstaller, .
Constructeurs
ServiceProcessInstaller() |
Crée une instance de la classe ServiceProcessInstaller. |
Propriétés
Account |
Obtient ou définit le type de compte sous lequel doit fonctionner l'application de service. |
CanRaiseEvents |
Obtient une valeur qui indique si le composant peut déclencher un événement. (Hérité de Component) |
Container |
Obtient le IContainer qui contient la Component. (Hérité de Component) |
Context |
Obtient ou définit des informations sur l'installation en cours. (Hérité de Installer) |
DesignMode |
Obtient une valeur qui indique si Component est actuellement en mode design. (Hérité de Component) |
Events |
Obtient la liste des gestionnaires d'événements attachés à ce Component. (Hérité de Component) |
HelpText |
Obtient le texte d'aide affiché pour les options d'installation du service. |
Installers |
Obtient la collection de programmes d’installation contenue dans ce programme d’installation. (Hérité de Installer) |
Parent |
Obtient ou définit le programme d'installation contenant la collection à laquelle appartient ce programme d'installation. (Hérité de Installer) |
Password |
Obtient ou définit le mot de passe associé au compte d'utilisateur utilisé pour l'exécution de l'application de service. |
Site |
Obtient ou définit le ISite de Component. (Hérité de Component) |
Username |
Obtient ou définit le compte d'utilisateur sous lequel l'application de service fonctionnera. |
Méthodes
Commit(IDictionary) |
En cas de substitution dans une classe dérivée, termine la transaction d’installation. (Hérité de Installer) |
CopyFromComponent(IComponent) |
Implémente la méthode CopyFromComponent(IComponent) de la classe de base sans comportement spécifique à la classe ServiceProcessInstaller. |
CreateObjRef(Type) |
Crée un objet contenant toutes les informations appropriées requises pour générer un proxy permettant de communiquer avec un objet distant. (Hérité de MarshalByRefObject) |
Dispose() |
Libère toutes les ressources utilisées par Component. (Hérité de Component) |
Dispose(Boolean) |
Libère les ressources non managées utilisées par Component et libère éventuellement les ressources managées. (Hérité de Component) |
Equals(Object) |
Détermine si l'objet spécifié est égal à l'objet actuel. (Hérité de Object) |
GetHashCode() |
Fait office de fonction de hachage par défaut. (Hérité de Object) |
GetLifetimeService() |
Obsolète.
Récupère l'objet de service de durée de vie en cours qui contrôle la stratégie de durée de vie de cette instance. (Hérité de MarshalByRefObject) |
GetService(Type) |
Retourne un objet qui représente un service fourni par Component ou par son Container. (Hérité de Component) |
GetType() |
Obtient le Type de l'instance actuelle. (Hérité de Object) |
InitializeLifetimeService() |
Obsolète.
Obtient un objet de service de durée de vie pour contrôler la stratégie de durée de vie de cette instance. (Hérité de MarshalByRefObject) |
Install(IDictionary) |
Écrit dans le Registre des informations relatives à l'application de service. Cette méthode est prévue pour être utilisée par des outils d'installation qui appellent automatiquement les méthodes appropriées. |
IsEquivalentInstaller(ComponentInstaller) |
Détermine si le programme d'installation spécifié installe le même objet que ce programme d'installation. (Hérité de ComponentInstaller) |
MemberwiseClone() |
Crée une copie superficielle du Object actuel. (Hérité de Object) |
MemberwiseClone(Boolean) |
Crée une copie superficielle de l'objet MarshalByRefObject actuel. (Hérité de MarshalByRefObject) |
OnAfterInstall(IDictionary) |
Déclenche l’événement AfterInstall. (Hérité de Installer) |
OnAfterRollback(IDictionary) |
Déclenche l’événement AfterRollback. (Hérité de Installer) |
OnAfterUninstall(IDictionary) |
Déclenche l’événement AfterUninstall. (Hérité de Installer) |
OnBeforeInstall(IDictionary) |
Déclenche l’événement BeforeInstall. (Hérité de Installer) |
OnBeforeRollback(IDictionary) |
Déclenche l’événement BeforeRollback. (Hérité de Installer) |
OnBeforeUninstall(IDictionary) |
Déclenche l’événement BeforeUninstall. (Hérité de Installer) |
OnCommitted(IDictionary) |
Déclenche l’événement Committed. (Hérité de Installer) |
OnCommitting(IDictionary) |
Déclenche l’événement Committing. (Hérité de Installer) |
Rollback(IDictionary) |
Restaure les informations de l'application de service inscrites dans le Registre par la procédure d'installation. Cette méthode est destinée à être utilisée par les outils d'installation qui traitent automatiquement les méthodes appropriées. |
ToString() |
Retourne un String contenant le nom du Component, s’il en existe un. Cette méthode ne doit pas être remplacée. (Hérité de Component) |
Uninstall(IDictionary) |
En cas de substitution dans une classe dérivée, supprime une installation. (Hérité de Installer) |
Événements
AfterInstall |
Se produit après l'exécution des méthodes Install(IDictionary) de tous les programmes d'installation de la propriété Installers. (Hérité de Installer) |
AfterRollback |
Se produit après la restauration des installations de tous les programmes d'installation de la propriété Installers. (Hérité de Installer) |
AfterUninstall |
Se produit une fois que tous les programmes d'installation de la propriété Installers ont effectué leurs propres opérations de désinstallation. (Hérité de Installer) |
BeforeInstall |
Se produit avant l’exécution de la méthode Install(IDictionary) de chaque programme d’installation contenu dans la collection de programmes d’installation. (Hérité de Installer) |
BeforeRollback |
Se produit avant la restauration des programmes d'installation de la propriété Installers. (Hérité de Installer) |
BeforeUninstall |
Se produit avant que les programmes d'installation de la propriété Installers aient effectué leurs propres opérations de désinstallation. (Hérité de Installer) |
Committed |
Se produit après la validation de l'installation de tous les programmes d'installation de la propriété Installers. (Hérité de Installer) |
Committing |
Se produit avant la validation de l’installation des programmes d’installation de la propriété Installers. (Hérité de Installer) |
Disposed |
Se produit lorsque le composant est supprimé par un appel à la méthode Dispose(). (Hérité de Component) |