Uruchomienie usługi, która może powodować konflikty portów z istniejącą usługą

0

Czy jest jakiś sposób na uruchomienie usługi i wymuszenie zatrzymania usługi, która już działa, jeśli używa portu, z którego będzie korzystać usługa, którą chcę uruchomić?

Zamierzam zainstalować apache i mysql i chcę, aby usługi działały bez konieczności ręcznego zatrzymywania istniejących usług korzystających z portu 80/3306, takich jak istniejące usługi apache / mysql.

Używam NSIS do stworzenia mojego instalatora.

Michael
źródło

Odpowiedzi:

1

Mój instalator przerwał działanie, jeśli okaże się, że porty 80 lub 3306 są w użyciu.

Użyłem wtyczki TCP dla NSIS, http://nsis.sourceforge.net/TCP_plug-in

Użyłem tego w ten sposób,

...
TCP::CheckPort "80"
Pop $0
StrCmp $0 "free" port_ok
StrCmp $0 "socket_error" socket_error
StrCmp $0 "inuse" socket_inuse
Goto port_ok
socket_inuse:
    MessageBox MB_OK "Port 80 is in use by another application."
    Abort
socket_error:
    MessageBox MB_OK "Error connecting to port 80"
    Abort
port_ok:
...
Michael
źródło
+1. Lepiej jest przerwać i poinformować użytkownika o przyczynie, niż zatrzymać istniejące usługi. Gdyby ktoś zrobił to mojemu serwerowi, miałbym dopasowanie francusko-kanadyjskie.
Patrick Seymour