Eu fiz o meu instalador abortar se descobrisse que as portas 80 ou 3306 estavam em uso.
Eu usei um plug-in TCP para o NSIS, link
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:
...