Installation service Windows

Signaler
Messages postés
31
Date d'inscription
jeudi 4 septembre 2003
Statut
Membre
Dernière intervention
16 juillet 2008
-
Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
-
Bonjour a tous,
Une question assez urgente: Comment fait-on pour installer un service windows créé en c# sur un pc qui ne possede pas d'invite de commande .NET.
J'ai essayer avec une invite de commande ms-dos en faisant nomdu service -install mais ca ne marche pas.
Une idée??

6 réponses

Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
62
Hello,

Si le pc en question est un XP, tu peux utiliser la commande SC.

Tape-la sans paramètre pour avoir des indications.

Autrement, le plus simple est d'utiliser un projet de type setup.

Avec google, j'ai trouvé ça : http://www.codeproject.com/dotnet/simplewindowsservice.asp
Va voir sous la section "To create a setup project for your service".

Amicalement, SharpMao
Messages postés
73
Date d'inscription
mardi 15 mars 2005
Statut
Membre
Dernière intervention
18 novembre 2010
1
Utilise l'outil installutil.exe (sous le répertoire d'installation du framework)



La commande est très simple : ...installutil.exe -i monservice.exe

Keikun59
Messages postés
13
Date d'inscription
vendredi 12 juin 2009
Statut
Membre
Dernière intervention
27 septembre 2009

J'ai une petite question à ce sujet. Si j'installe mon service et que je veux le déboguer, est-ce que ça fonctionnera ? J'imagine qu'on ne s'attend pas à ce qu'on ait à réinstaller le service à chaque fois, non ?


gretro !
Messages postés
441
Date d'inscription
mardi 2 décembre 2003
Statut
Membre
Dernière intervention
22 mai 2012
7
Salut à tous !

Pour répondre à gretro et à ceux qui se pose la même question...

Pour palier à ça j'ai trouvée une petite solution sympa
mais il faut feinter... je m'explique !

Il faut "passer" le service en application Windows, et pour cela j'ai utilisé
la constante de compilation DEBUG :

Au niveau du point d'entrée de l'application (donc le fichier Program.cs)
static class Program
{
    static void Main()
    {
#if DEBUG
        // Instancie une fenêtre permettant de simuler le service
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault( false );
        Application.Run( new WinService() );
#else
        // Instancie le service
        ServiceBase.Run( new ServiceBase[] { new WinService() } );
#endif
}


et au niveau du code du service
#if DEBUG
public class WinService : Form
#else
public class WinService : ServiceBase
#endif
{
#if DEBUG
    private IContainer components;
#endif

    // Constructeur du service
    public WinService()
    {
        // Initialise le service
        InitializeComponent();
    }

#if DEBUG
        private void InitializeComponent()
        {
            ;// Ici, le code habituellement généré par le concepteur WinForm de visual studio
            this.components = new System.ComponentModel.Container();
            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(WinService));
            this.SuspendLayout();
            // etc etc..

        }
#else
        private void InitializeComponent()
        {
            // 
            // WinService
            // 
            this.AutoLog = false;
            this.ServiceName = "Nom du service";

        }
#endif

    // Au démarrage du service
#if DEBUG
    protected override void OnLoad( EventArgs e )
    {
#else
    protected override void OnStart( string[] args )
    {
#endif
        ;// Ici, le code à exécuter au démarrage du service
    }
}


Enfin bref, voilà le principe
Après, si on veux déboguer, il suffit d'activer la constante DEBUG
pour cela, il faut afficher les propriétés du projet
Dans l'onglet "Générer" -> cocher "Définir constante DEBUG"
Et c'est partit !

En espérant que ça serve à quelqu'un...
Et si vous avez besoin de précision, n'hésitez pas !
Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
30
Bonsoir,

Pour debugger un service, on peut aussi utiliser, sous visual studio, la commande "Attach to process" du menu Debug.

Pour cela il faut avoir compilé le service en mode debug, puis on le lance, via le gestionnaire de service, et on attache le debugger.
Seul bémol, il est pratiquement impossible de debugger la séquence de chargement, sauf en mettant une pause dans la procédure OnStart, nous laissant le temps d'attacher le debugger.
Si non la méthode de LUDINSKI fonctionne bien.


Bob.
C# is amazing, enjoy it!
Messages postés
2
Date d'inscription
vendredi 23 janvier 2004
Statut
Membre
Dernière intervention
6 octobre 2007