Bonjour à tous,
Je développe un service windows qui gère différentes choses au niveau du réseau, mais peu importe sa fonction ; je souhaite le mettre à jour automatiquement par le réseau.
Je fais donc une fonction qui va vérifier si une nouvelle version est en ligne, si oui je la télécharge grâce à la lib urlmon et URLDownloadToFile(). Le problème maintenant, c'est que je voudrais mettre à jour le service... depuis le service.
J'ai imaginé la solution suivante : le service lance un petit programme externe, s'arrête, le programme remplace l'exe du service et le relance.
Je précise que ce ne peut être l'updater qui stoppe le service, parce que celui-ci effectue des tâches différentes selon s'il est arrêté par un net stop par exemple ou si il s'arrête de lui-même.
Ma question est donc la suivante : comment puis-je faire en sorte que le service lance le processus de mise à jour de façon détachée, c'est-à-dire sans attendre sa mort pour s'arrêter ou sans le tuer en s'arrêtant ?
Je pensais pouvoir utiliser le flag DETACHED_PROCESS de CreateProcess(), mais je n'obtiens pas l'effet escompté ; apparemment ça ne fonctionne que pour les programmes console (?).
J'imagine que ce problème est assez commun mais je n'ai trouvé de solution nulle part... Merci de m'éclairer !