Question

I need to check some port is usable or not? How can do that in Inno Setup? Is there any way to use socket in to Inno Setup? Is there any library for this? If there how can import it and use it?

Thank you for your answers.

Was it helpful?

Solution

You can use my function to check, if a port is available:

function CheckPortOccupied(Port:String):Boolean;
var
  ResultCode: Integer;
begin
  Exec(ExpandConstant('{cmd}'), '/C netstat -na | findstr'+' /C:":'+Port+' "', '', 0,
       ewWaitUntilTerminated, ResultCode);
  if ResultCode <> 1 then 
  begin
    Log('this port('+Port+') is occupied');
    Result := True; 
  end
    else
  begin
    Result := False;
  end;
end;

OTHER TIPS

Function to return (in MsgBox) service or program that use port 80. MsgBox will not shown if output is empty.

function NextButtonClick(CurPage: Integer): Boolean;
var
  TmpFileName, ExecStdout: string;
  ResultCode: integer;
begin
  if CurPage = wpWelcome then
  begin
    TmpFileName := ExpandConstant('{tmp}') + '\~pid.txt';
    Exec('cmd.exe',
         '/C FOR /F "usebackq tokens=5 delims= " %i IN (`netstat -ano ^|find "0.0:80"`) DO '
           + '@tasklist /fi "pid eq %i" | find "%i" > "' + TmpFileName + '"', '', SW_HIDE,
         ewWaitUntilTerminated, ResultCode);
    if LoadStringFromFile(TmpFileName, ExecStdout) then
    begin
      MsgBox('Port 80 is used by '#13 + ExecStdout, mbInformation, MB_OK);
    end;
    DeleteFile(TmpFileName);
  end;
  Result := True;
end;        
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top