Iniciando um serviço que pode ter conflitos de porta com o serviço existente

0

Existe alguma maneira de iniciar um serviço e forçar um serviço que já está em execução para parar se ele usa a porta que o serviço que eu quero iniciar vai usar?

Eu irei instalar o apache e o mysql, e quero que os serviços sejam executados sem ter que parar manualmente os serviços existentes que usam a porta 80/3306, como os serviços apache / mysql existentes.

Estou usando o NSIS para fazer meu instalador.

Michael
fonte

Respostas:

1

Eu fiz o meu instalador abortar se descobrisse que as portas 80 ou 3306 estavam em uso.

Eu usei um plugin TCP para NSIS, http://nsis.sourceforge.net/TCP_plug-in

Eu usei dessa maneira

...
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
fonte
+1. É melhor abortar e informar ao usuário o motivo, em vez de interromper os serviços existentes. Se alguém fizesse isso com um servidor meu, eu teria um ataque franco-canadense.
Patrick Seymour