Bonjour à tous,


J'ai créé un service windows de déplacement de fichier et créé un installer avec WIX. Tout fonctionne parfaitement excepté l'arrêt du service en cas d'erreur.

Ma gestion des erreurs appelle la procédure suivante:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
private void StopError()
        {
 
            Library.WriteErrorLog("le Service MoveFiles est stoppé");
 
            using (System.ServiceProcess.ServiceController serviceController = new System.ServiceProcess.ServiceController("MoveQCFiles"))
            {
                serviceController.Stop();
                //serviceController.WaitForStatus(ServiceControllerStatus.Stopped);
            }
 
        }
Mais cela ne fonctionne pas. J'ai bien le message "Le service MoveFiles est stoppé" dans mon fichier de log mais le service ne s'arrête pas...
Pour info, j'ai testé aussi:
- this.onstop ();
- this.stop();

J'appelle StopError de cette façon par exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
private void VerifFolder()
        {
            NetworkShare.ConnectToShare(@"" + SourcePath, SourceLogin, SourcePassword);
                if (!Directory.Exists(SourcePath))
                {
                    Library.WriteErrorLog("Service Erreur: Le dossier Source " + SourcePath + " n'existe pas");
                    StopError();
 
                }
            NetworkShare.DisconnectFromShare(@"" + SourcePath, false);
 
                if (!Directory.Exists(DestPath))
                {
                    Library.WriteErrorLog("Service Erreur: Le dossier de destination " + DestPath + " n'existe pas");
                    StopError();
                }                        
        }
Le service s'initialise ainsi:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
 public Service1()
        {
            this.ServiceName = "MoveQCFiles";
            this.CanPauseAndContinue = false;
            this.CanStop = true;
            this.CanShutdown = true;
 
            InitializeComponent();
 
        }
 
        protected override void OnStart(string[] args)
        {
            // verification presence fichier config.xml
            VerifAppConfig();
           // ect...
        }
De plus j'ai un second problème qui découlle du premier. J'ai créé un installer qui installe le service en lancement automatique et qui le démarre directement. Du coup si les dossiers correspondant à SourcePath et DestPath n'existe pas, l'installation tourne en boucle et fini pas planter.

Comment faire pour créer un installer qui paramètre un demarrage automatique du service mais qui ne le lance pas à l'installation?

Merci pour votre aide