ServiceInstaller 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 une classe qui s’étend ServiceBase pour implémenter un service. Cette classe est appelée par l’utilitaire d’installation lors de l’installation d’une application de service.
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
- 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 les objets sont créés pour chacun de ces services, 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 du processus et les programmes d’installation de service avant l’ajout des programmes d’installation à la Installers collection. Lorsque l’utilitaire d’installation accède, les objets ajoutés MyProjectInstallerà la Installers collection par le biais d’un appel seront 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, afin que chacun puisse être sauvegardé à son tour, si une défaillance d’installation se produit.
Normalement, vous ne créez pas explicitement une instance de votre classe d’installation de projet. Vous le créez et ajoutez l’attribut RunInstallerAttribute à la syntaxe, mais il s’agit de l’utilitaire d’installation qui appelle réellement, 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
Le ServiceInstaller travail est spécifique au service auquel il est associé. Il est utilisé par l’utilitaire d’installation pour écrire des valeurs de Registre associées au service dans une sous-clé au sein de la clé de Registre HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services. Le service est identifié par son ServiceName dans cette sous-clé. La sous-clé inclut également le nom de l’exécutable ou .dll auquel appartient le service.
Pour installer un service, créez une classe de programme d’installation de projet qui hérite de la Installer classe et définissez l’attribut RunInstallerAttribute sur la classe truesur . Dans votre projet, créez une ServiceProcessInstaller instance par application de service et une ServiceInstaller instance pour chaque service de l’application. Dans le constructeur de classe du programme d’installation de votre projet, définissez les propriétés d’installation du service à l’aide des ServiceProcessInstaller instances et ServiceInstaller ajoutez les instances à la Installers collection.
Note
Il est recommandé d’utiliser le constructeur pour ajouter des instances de programme d’installation ; Toutefois, si vous devez ajouter à la Installers collection dans la Install méthode, veillez à effectuer les mêmes ajouts à la collection dans la Uninstall méthode.
Pour toutes les classes dérivant de la Installer classe, l’état de la Installers collection doit être identique dans les méthodes et Uninstall les Install méthodes. Toutefois, vous pouvez éviter la maintenance de la collection entre les méthodes et Uninstall les Install méthodes si vous ajoutez des instances d’installation à la collection dans votre Installers constructeur de classe d’installation personnalisé. Lorsque l’utilitaire d’installation est appelé, il recherche l’attributRunInstallerAttribute. Si l’attribut est true, l’utilitaire installe tous les services ajoutés à la Installers collection associée à votre programme d’installation de projet. S’il RunInstallerAttribute existe ou n’existe false pas, l’utilitaire d’installation ignore le programme d’installation du projet.
La ServiceProcessInstaller classe d’installation de votre projet associée installe des informations communes à toutes les ServiceInstaller instances du projet. Si ce service comporte quelque chose qui le sépare des autres services du projet d’installation, ces informations spécifiques au service sont installées par cette méthode.
Note
Il est essentiel que l’être ServiceName identique à la ServiceBase.ServiceName classe à partir de laquelle ServiceBasevous avez dérivé . Normalement, la valeur de la ServiceBase.ServiceName propriété pour le service est définie dans la fonction Main() de l’exécutable de l’application de service. Service Control Manager utilise la ServiceInstaller.ServiceName propriété pour localiser le service dans cet exécutable.
Vous pouvez modifier d’autres propriétés avant ServiceInstaller ou après l’avoir ajoutée à la Installers collection de votre programme d’installation de projet. Par exemple, les services StartType peuvent être définis pour démarrer le service automatiquement au redémarrage ou exiger qu’un utilisateur démarre le service manuellement.
Normalement, vous n’appelez pas les méthodes dans ServiceInstaller votre code ; elles sont généralement appelées uniquement par l’utilitaire d’installation. L’utilitaire d’installation appelle automatiquement les méthodes et ServiceInstaller.Install les ServiceProcessInstaller.Install méthodes pendant le processus d’installation. Elle sauvegarde les défaillances, si nécessaire, en appelant Rollback (ou ServiceInstaller.Rollback) sur tous les composants précédemment installés.
L’utilitaire d’installation appelle Uninstall pour supprimer l’objet.
La routine d’installation d’une application gère automatiquement les informations sur les composants déjà installés, à l’aide du programme d’installation du Installer.Contextprojet. Ces informations d’état sont mises à jour en permanence en tant qu’instance ServiceProcessInstaller , et chaque ServiceInstaller instance est installée par l’utilitaire. Il est généralement inutile que votre code modifie explicitement les informations d’état.
Lorsque l’installation est effectuée, elle crée automatiquement une source du journal des EventLogInstaller événements associée à la ServiceBase classe dérivée. La Log propriété de cette source est définie par le ServiceInstaller constructeur dans le journal d’application de l’ordinateur. Lorsque vous définissez le ServiceNameServiceInstaller (qui doit être identique au ServiceBase.ServiceName service), il Source est automatiquement défini sur la même valeur. En cas d’échec d’installation, l’installation de la source est restaurée avec les services précédemment installés.
La Uninstall méthode tente d’arrêter le service s’il est en cours d’exécution. Que cela réussisse ou non, Uninstall annule les modifications apportées par Install. Si une nouvelle source a été créée pour la journalisation des événements, la source est supprimée.
Constructeurs
| Nom | Description |
|---|---|
| ServiceInstaller() |
Initialise une nouvelle instance de la classe ServiceInstaller. |
Propriétés
| Nom | Description |
|---|---|
| CanRaiseEvents |
Obtient une valeur indiquant si le composant peut déclencher un événement. (Hérité de Component) |
| Container |
Obtient le IContainer fichier qui contient le Component. (Hérité de Component) |
| Context |
Obtient ou définit des informations sur l’installation actuelle. (Hérité de Installer) |
| DelayedAutoStart |
Obtient ou définit une valeur qui indique si le service doit être retardé du démarrage jusqu’à ce que d’autres services démarrés automatiquement s’exécutent. |
| Description |
Obtient ou définit la description du service. |
| DesignMode |
Obtient une valeur qui indique si la Component valeur est actuellement en mode création. (Hérité de Component) |
| DisplayName |
Indique le nom convivial qui identifie le service à l’utilisateur. |
| Events |
Obtient la liste des gestionnaires d’événements qui sont attachés à ce Component. (Hérité de Component) |
| HelpText |
Obtient le texte d’aide de tous les programmes d’installation de la collection d’programmes d’installation. (Hérité de Installer) |
| Installers |
Obtient la collection de programmes d’installation que contient 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) |
| ServiceName |
Indique le nom utilisé par le système pour identifier ce service. Cette propriété doit être identique au ServiceName service que vous souhaitez installer. |
| ServicesDependedOn |
Indique les services qui doivent être en cours d’exécution pour que ce service s’exécute. |
| Site |
Obtient ou définit le ISiteComponent. (Hérité de Component) |
| StartType |
Indique comment et quand ce service est démarré. |
Méthodes
| Nom | Description |
|---|---|
| Commit(IDictionary) |
En cas de substitution dans une classe dérivée, termine la transaction d’installation. (Hérité de Installer) |
| CopyFromComponent(IComponent) |
Copie les propriétés d’une instance de ce programme d’installation ServiceBase . |
| CreateObjRef(Type) |
Crée un objet qui contient toutes les informations pertinentes requises pour générer un proxy utilisé pour communiquer avec un objet distant. (Hérité de MarshalByRefObject) |
| Dispose() |
Libère toutes les ressources utilisées par le Component. (Hérité de Component) |
| Dispose(Boolean) |
Libère les ressources non managées utilisées par les Component ressources gérées 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() |
Sert 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 actuel 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 le Component ou par son Container. (Hérité de Component) |
| GetType() |
Obtient la 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) |
Installe le service en écrivant des informations sur l’application de service dans le Registre. Cette méthode est destinée à être utilisée par les outils d’installation, qui traitent automatiquement les méthodes appropriées. |
| IsEquivalentInstaller(ComponentInstaller) |
Indique si deux programmes d’installation installeraient le même service. |
| MemberwiseClone() |
Crée une copie superficielle du Objectactuel. (Hérité de Object) |
| MemberwiseClone(Boolean) |
Crée une copie superficielle de l’objet actuel MarshalByRefObject . (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 d’application de service écrites 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 nom contenant le nom du Component, le cas échéant. Cette méthode ne doit pas être remplacée. (Hérité de Component) |
| Uninstall(IDictionary) |
Désinstalle le service en supprimant des informations sur celui-ci du Registre. |
Événements
| Nom | Description |
|---|---|
| AfterInstall |
Se produit après l’exécution Install(IDictionary) des méthodes de tous les programmes d’installation de la Installers propriété. (Hérité de Installer) |
| AfterRollback |
Se produit après la restauration de tous les programmes d’installation de la Installers propriété. (Hérité de Installer) |
| AfterUninstall |
Se produit après que tous les programmes d’installation de la Installers propriété effectuent leurs opérations de désinstallation. (Hérité de Installer) |
| BeforeInstall |
Se produit avant l’exécution de la Install(IDictionary) méthode de chaque programme d’installation dans la collection d’installation. (Hérité de Installer) |
| BeforeRollback |
Se produit avant que les programmes d’installation de la Installers propriété ne soient restaurés. (Hérité de Installer) |
| BeforeUninstall |
Se produit avant que les programmes d’installation de la Installers propriété effectuent leurs opérations de désinstallation. (Hérité de Installer) |
| Committed |
Se produit une fois que tous les programmes d’installation de la Installers propriété ont validé leurs installations. (Hérité de Installer) |
| Committing |
Se produit avant que les programmes d’installation dans la Installers propriété valident leurs installations. (Hérité de Installer) |
| Disposed |
Se produit lorsque le composant est supprimé par un appel à la Dispose() méthode. (Hérité de Component) |