Je suis en retard, mais je voudrais ajouter une alternative, qui peut sembler étrange, mais je n'ai pas vu d'autre moyen :
Comme j'installe chaque nuit mes services Windows dans le cadre d'un processus CI, j'avais besoin de quelque chose qui fonctionne tout le temps et qui soit complètement automatisé. Pour une raison quelconque, les services étaient toujours marqués pour suppression pendant une longue période (5 minutes ou plus) après leur désinstallation. J'ai donc étendu le batch de réinstallation script pour m'assurer que le service est réellement supprimé (version simplifiée) :
REM Stop the service first
net stop My-Socket-Server
REM Same as installutil.exe, just implemented in the service
My.Socket.Server.exe /u
:loop1
REM Easy way to wait for 5 seconds
ping 192.0.2.2 -n 1 -w 5000 > nul
sc delete My-Socket-Server
echo %date% %time%: Trying to delete service.
if errorlevel 1072 goto :loop1
REM Just for output purposes, typically I get that the service does not exist
sc query My-Socket-Server
REM Installing the new service, same as installutil.exe but in code
My.Socket.Server.exe /i
REM Start the new service
net start My-Socket-Server
Ce que je vois, c'est que le service est marqué pour suppression pendant environ 5 minutes ( !) jusqu'à ce que la suppression soit finalement effectuée. Enfin, je n'ai plus besoin d'interventions manuelles. Je vais étendre le script à l'avenir pour que quelque chose se produise après un certain temps (par exemple, une notification après 30 minutes).
0 votes
Si le service est suspendu et que la suppression ne fonctionne pas, voir Comment forcer la désinstallation d'un service Windows