How to get an output of an Exec'ed program in Inno Setup?

inno-setup

Solution

Yes, use redirection of the standard output to a file:

[Code]

function NextButtonClick(CurPage: Integer): Boolean;
var
  TmpFileName, ExecStdout: string;
  ResultCode: integer;
begin
  if CurPage = wpWelcome then begin
    TmpFileName := ExpandConstant('{tmp}') + '\ipconfig_results.txt';
    Exec('cmd.exe', '/C ipconfig /ALL > "' + TmpFileName + '"', '', SW_HIDE,
      ewWaitUntilTerminated, ResultCode);
    if LoadStringFromFile(TmpFileName, ExecStdout) then begin
      MsgBox(ExecStdout, mbInformation, MB_OK);
      { do something with contents of file... }
    end;
    DeleteFile(TmpFileName);
  end;
  Result := True;
end;

Note that there may be more than one network adapter, and consequently several MAC addresses to choose from.

Problem

Is it possible to get an output of an `Exec`'ed executable? I want to show the user an info query page, but show the default value of MAC address in the input box. Is there any other way to achieve this?

Original source

Related problems