ฉันมาสาย แต่ต้องการเพิ่มทางเลือกซึ่งอาจดูแปลก แต่ฉันไม่เห็นวิธีอื่น:
เมื่อฉันติดตั้ง Windows Services ของฉันในกระบวนการ CI ทุกคืนฉันต้องการบางสิ่งที่ทำงานได้ตลอดเวลาและเป็นไปโดยอัตโนมัติอย่างสมบูรณ์ ด้วยเหตุผลบางอย่างบริการถูกทำเครื่องหมายว่าจะลบเป็นเวลานาน (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 นาที)