Iniciar un servicio que puede tener conflictos de puertos con el servicio existente


0

¿Hay alguna forma de iniciar un servicio y forzar que un servicio que ya se está ejecutando se detenga si usa el puerto que usará el servicio que quiero iniciar?

Voy a instalar apache y mysql, y quiero que los servicios se ejecuten sin tener que detener manualmente los servicios existentes que usan el puerto 80/3306, como los servicios apache / mysql existentes.

Estoy usando NSIS para hacer mi instalador.

Respuestas:


1

Hice abortar mi instalador si descubría que los puertos 80 o 3306 estaban en uso.

Utilicé un complemento TCP para NSIS, http://nsis.sourceforge.net/TCP_plug-in

Lo usé de esta manera,

...
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. Es mejor abortar e informar al usuario por qué, en lugar de detener los servicios existentes. Si uno le hiciera eso a un servidor mío, tendría un ajuste franco-canadiense.
Patrick Seymour
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.