52 votes

Comment démarrer automatiquement votre service après l'installation ?

Comment démarrer automatiquement un service après avoir exécuté une installation à partir d'un projet de configuration de Visual Studio ?

Je viens de trouver la réponse à cette question et j'ai pensé la partager pour le bien de tous. La réponse suivra. Je suis ouvert à d'autres et meilleures façons de faire.

2 votes

Je suis ravi de voir quelqu'un poster une question utile dont il connaît la réponse. Parfois, vous savez simplement que votre conseil sera le bienvenu. Il est également possible que quelqu'un réponde en proposant une alternative intéressante à votre solution.

0 votes

C'est exactement ce que j'espère.

1 votes

C'est une chose tellement évidente à vouloir faire. Je ne cesse d'être étonné par les choses que Microsoft laisse de côté dans son code.

3voto

Sur la base des extraits ci-dessus, mon fichier ProjectInstaller.cs a ressemblé à ceci pour un service nommé FSWServiceMgr.exe. Le service a démarré après l'installation. Par ailleurs, n'oubliez pas de cliquer sur l'onglet Propriétés (et non sur le bouton droit de la souris) lorsque le projet d'installation est sélectionné dans l'explorateur de solutions pour définir la société, etc.


using System.ComponentModel;
using System.Configuration.Install;
using System.ServiceProcess;

namespace FSWManager {
    [RunInstaller(true)]
    public partial class ProjectInstaller : Installer {
        public ProjectInstaller() {
            InitializeComponent();
            this.FSWServiceMgr.AfterInstall += FSWServiceMgr_AfterInstall;
        }

        static void FSWServiceMgr_AfterInstall(object sender, InstallEventArgs e) {
            new ServiceController("FSWServiceMgr").Start();
        }
    }
}

0voto

Sagar Kapadia Points 10

Il existe également une autre méthode qui n'implique pas de code. Vous pouvez utiliser le tableau de contrôle des services. Modifiez le fichier msi généré avec orca.exe, et ajoutez une entrée au tableau de contrôle des services (Service Control Table). Table ServiceControl .

Seules les colonnes ServiceControl, Name,Event et Component_ sont obligatoires. La colonne Component_ contient le ComponentId de la table des fichiers. (Sélectionnez le fichier dans la table des fichiers, et copiez la valeur Component_ dans la table ServiceControl).

La dernière étape consiste à mettre à jour la valeur de StartServices à 6575 dans la table InstallExecutesequence. Ceci est suffisant pour démarrer le service.

À propos, la table d'installation du service vous permet de configurer le programme d'installation pour installer le service Windows.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X