Saya terlambat, tetapi ingin menambahkan alternatif, yang mungkin terlihat aneh, tetapi saya tidak melihat cara lain:
Ketika saya menginstal Layanan Windows saya dalam proses CI setiap malam, saya membutuhkan sesuatu yang berfungsi sepanjang waktu dan sepenuhnya otomatis. Untuk beberapa alasan, layanan selalu ditandai untuk dihapus untuk waktu yang lama (5 menit atau lebih) setelah mencopotnya. Oleh karena itu, saya memperluas skrip batch instalasi ulang untuk memastikan bahwa layanan tersebut benar-benar dihapus (versi yang disederhanakan):
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
Apa yang bisa saya lihat, adalah bahwa layanan ditandai untuk dihapus selama sekitar 5 menit (!) Sampai akhirnya melewati. Akhirnya, saya tidak membutuhkan intervensi manual lagi. Saya akan memperpanjang skrip di masa depan sehingga sesuatu terjadi setelah waktu tertentu (mis. Pemberitahuan setelah 30 menit).