私は遅れていますが、奇妙に見えるかもしれない代替案を追加したいのですが、私は別の方法を見ていませんでした:
私は毎晩CIプロセスにWindowsサービスをインストールしているので、常に機能し、完全に自動化されているものが必要でした。何らかの理由で、サービスをアンインストールした後、サービスは常に長い間(5分以上)削除対象としてマークされていました。したがって、再インストールバッチスクリプトを拡張して、サービスが本当に削除されるようにしました(簡易バージョン)。
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
私が見ることができるのは、サービスが最終的に通過するまで約5分間(!)削除のマークが付けられていることです。最後に、私はこれ以上手動の介入を必要としません。将来的にスクリプトを拡張して、一定の時間の後に何かが発生するようにします(たとえば、30分後の通知)。