JConstantine
JConstantine

Reputation: 1070

Is it possible to check if program is already running before trying to install it? (Inno Setup)

I'm using Inno Setup to create the installer. When I launch the installer I've created I need to check whether the program I'm trying to install is already running or not and if it is running then I have to show the corresponding message until I close it or exit. Is it possible to do that?

Upvotes: 4

Views: 3510

Answers (1)

Martin Prikryl
Martin Prikryl

Reputation: 202242

If it is your application, make it create a mutex. Then you can use AppMutex directive.

[Setup]
AppMutex=MyProgMutex

enter image description here


If you cannot modify the application, you need to code the check for running application in Inno Setup. You can for example use IsAppRunning function from the answer by @RRUZ to How to check with Inno Setup, if a process is running at a Windows 2008 R2 64bit? in InitializeSetup event function.

function InitializeSetup(): Boolean;
var
  Answer: Integer;
begin
  Result := True;
  while IsAppRunning('MyProg.exe') do
  begin
    Answer := MsgBox('Program is running, please close it', mbError, MB_OKCANCEL);
    if Answer = IDCANCEL then
    begin
      Result := False
      Exit;
    end;
  end;
end;

Based on a similar question on uninstaller:
Preparing to Uninstall like Preparing to Install Page - Inno Setup

Upvotes: 7

Related Questions