none
Installation d'un service NT développé en C# via un vdproj RRS feed

  • Question

  • Bonjour

     

    J'ai développé un service NT en C# et suis en train d'écrire le programme d'installation via un projet de déploiement.

     

    J'ai ajouté un projet vdproj dans ma solution et demandé l'installation du "primary output" de mon projet contenant le code du service. Installation des composants OK.

     

    J'ai ajouté deux "Custom action" (Istall/Uninstall) pour demander l'installation (ou la désinstallation) du service (InstallerClass = true), en ajoutant /u en argument pour la désinstallation. Installation du service dans le SCM OK.

     

    Là où je bloque : comment démarrer automatiquement le service après installation, sans avoir à passer par le SCM où à relancer le PC ?

     

    D'avance merci.

     

    François.

    mercredi 11 juin 2008 16:09

Réponses

  • Merci pour votre réponse.

     

    J'ai ajouté un traitement sur l'évènement Committed dans ma classe installer pour démarrer automatiquement le service après installation (voir code ci-dessous). Lorsque j'installe mon service avec InstallUtil.exe, il est automatiquement démarré. par contre, lorsque l'installation est réalisée via le msi généré avec le vdproj, le service est installé mais n'est pas démarré.

     

    Dois-je faire une modification au niveau de mon vdproj ?

    D'avance merci.

     

    Code Snippet

    private void serviceInstaller_Committed(object sender, InstallEventArgs e)

    {

      try

      {

        // Démarrer automatiquement le service après installation

        ServiceController sc = new ServiceController(serviceInstaller.ServiceName);

        sc.Start();

      }

      catch (Exception ex)

      {

        // Erreur

        Console.WriteLine("Erreur : " + ex.Message);

      }

    }

     

     

     

    jeudi 12 juin 2008 07:46
  • En déplaçant le code dans l'évènement "AfterInstall", cela semble fonctionner.

    Est-ce la bonne solution ?

    Merci.

     

    jeudi 12 juin 2008 08:23

Toutes les réponses

  • Bonjour,

     

    Après avoir installé votre service, vous pouvez utiliser la classe ServiceController afin de démarrer votre service.

     

    Cordialement

    mercredi 11 juin 2008 19:48
    Modérateur
  • Merci pour votre réponse.

     

    J'ai ajouté un traitement sur l'évènement Committed dans ma classe installer pour démarrer automatiquement le service après installation (voir code ci-dessous). Lorsque j'installe mon service avec InstallUtil.exe, il est automatiquement démarré. par contre, lorsque l'installation est réalisée via le msi généré avec le vdproj, le service est installé mais n'est pas démarré.

     

    Dois-je faire une modification au niveau de mon vdproj ?

    D'avance merci.

     

    Code Snippet

    private void serviceInstaller_Committed(object sender, InstallEventArgs e)

    {

      try

      {

        // Démarrer automatiquement le service après installation

        ServiceController sc = new ServiceController(serviceInstaller.ServiceName);

        sc.Start();

      }

      catch (Exception ex)

      {

        // Erreur

        Console.WriteLine("Erreur : " + ex.Message);

      }

    }

     

     

     

    jeudi 12 juin 2008 07:46
  • En déplaçant le code dans l'évènement "AfterInstall", cela semble fonctionner.

    Est-ce la bonne solution ?

    Merci.

     

    jeudi 12 juin 2008 08:23
  • Cela semble logique, je ne crois pas qu'il y aurait un meilleur moyen.
    jeudi 12 juin 2008 12:04
    Modérateur