Запуск службы, которая может иметь конфликты портов с существующей службой

631
Michael

Есть ли способ запустить службу и заставить службу, которая уже запущена, остановиться, если она использует порт, который будет использовать служба, которую я хочу запустить?

Я собираюсь установить apache и mysql и хочу, чтобы службы работали без необходимости вручную останавливать существующие службы, использующие порт 80/3306, такие как существующие службы apache / mysql.

Я использую NSIS, чтобы сделать мой установщик.

0

1 ответ на вопрос

1
Michael

Я установил мой установщик, если обнаружил, что используются порты 80 или 3306.

Я использовал плагин TCP для NSIS, http://nsis.sourceforge.net/TCP_plug-in

Я использовал это таким образом,

... 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: ... 
+1. Лучше прервать и сообщить пользователю, почему, а не останавливать существующие службы. Если бы кто-то сделал это с моим сервером, у меня была бы французско-канадская судорога. Patrick Seymour 12 лет назад 0