processviewer icon indicating copy to clipboard operation
processviewer copied to clipboard

A utility for Inno Setup script writers

trafficstars

Readme

This utility is a 32 bit command line tool that queries running processes.

Usage: The following command line checks if bds.exe is running.

processviewer.exe bds.exe

If bds.exe is running, processviewer.exe exits with 1, and prints out "found". Otherwise, it exits with 0, and prints out "not found".

So in your Inno Setup script, you can include processviewer.exe in [Files] sections like below,

[Files]
; exe used to check running notepad at install time
Source: "processviewer.exe"; Flags: dontcopy

; exe is installed in {app} folder, so it will be
; loaded at uninstall time ;to check if notepad is running
Source: "processviewer.exe"; DestDir: "{app}"

Then in [Code] section you can write the follow snippet to check if the expected process (such as notepad.exe) is running,

function ProductRunning(): Boolean;
var
  ResultCode: Integer;
begin  
  ExtractTemporaryFile('processviewer.exe');
  if Exec(ExpandConstant('{tmp}\processviewer.exe'), 'notepad.exe', '', SW_HIDE,
     ewWaitUntilTerminated, ResultCode) then
  begin
    Result := ResultCode > 0;
    Exit;    
  end;  
  
  MsgBox('failed to check process', mbError, MB_OK);
end;

function ProductRunningU(): Boolean;
var
  ResultCode: Integer;
begin  
  if Exec(ExpandConstant('{app}\processviewer.exe'), 'notepad.exe', '', SW_HIDE,
     ewWaitUntilTerminated, ResultCode) then
  begin
    Result := ResultCode > 0;
    Exit;    
  end;  
  
  MsgBox('failed to check process.', mbError, MB_OK);
end;