llego tarde, pero me gustaría añadir una alternativa, que puede parecer extraño, pero no vi otra manera:
Como instalo mi servicios de Windows en un proceso CI cada noche, necesitaba algo que funciona todo el tiempo y está completamente automatizado. Por algún motivo, los servicios siempre se marcaron para su eliminación durante un tiempo prolongado (5 minutos o más) después de desinstalarlos. Por lo tanto, he ampliado el guión reinstalación por lotes para asegurarse de que el servicio es realmente borrado (versión simplificada):
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
lo que puedo ver, es que el servicio está marcado para su eliminación durante unos 5 minutos hasta que (!) finalmente pasa. Finalmente, no necesito más intervenciones manuales. Extenderé la secuencia de comandos en el futuro para que algo suceda después de un cierto tiempo (por ejemplo, notificación después de 30 minutos).
+1 Esta es mi experiencia también –
¡Excelente, gracias! –
Esto resolvió mi problema sin reiniciar. – mirezus