Bonjour,
Je vous soumet un petit problème avec les services windows car à l'heure actuelle je n'arrive pas à y trouver de solution.

J'ai créer un programme contenant un service windows et fonctionnant avec quatre argument :
"monprogramme.exe" --serviceinstall
"monprogramme.exe" --servicerun
"monprogramme.exe" --servicestop
"monprogramme.exe" --serviceuninstall

Je ne pense pas avoir besoin de détailler le rôle de chaque argument.

Le soucis qui se pose est que lors de l'installation, l'imagepath (pointant vers mon programme/service) est mal construit : l'installeur rajoute systématiquement des guillemets autour de la chaine ce qui provoque une erreur quand je tente de démarrer le service :
la chaine devrait être
"C:/.../monprogramme.exe" --servicerun
ou
C:/.../monprogramme.exe --servicerun

or elle devient

""C:/.../monprogramme.exe" --servicerun"
ou
"C:/.../monprogramme.exe --servicerun"

ce qui provoque une erreur puisque le système ne trouve plus l'executable.

Voici le code incriminé :

Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
        public override void Install(System.Collections.IDictionary stateSaver)
        {
            Context = new InstallContext("", new string[] { String.Format("/assemblypath=\"{0}\" --servicerun", System.Reflection.Assembly.GetExecutingAssembly().Location) });
            base.Install(stateSaver);
        }

J'ajouterais que si je modifie le chemin manuellement dans la base de registre (une fois le service installé). Il devient possible de démarrer correctement et je ne rencontre plus d'erreur.

Si quelqu'un connait une solution à ce problème qu'il me fasse un grand signe.

D'avance merci!