1

The following code works:

[Code]
var
  ComMD5: Integer;
  FileExit: Boolean;

function InitializeSetup: boolean;
begin
  FileExit := FileExists(ExpandConstant('C:\Program Files (x86)\A\A.exe'));

  if FileExit = false then begin
    MsgBox('File does not exist!', mbInformation, MB_OK);
    Result := False;
  end else begin
    ComMD5 := CompareStr(GetMD5OfFile(ExpandConstant('C:\Program Files (x86)\A\A.exe')), 'c2d33f81e31eb54adf9323c27a9af536');
    if ComMD5 = 0 then begin
    MsgBox('The file version is incorrect, please install the correct version!', mbInformation, MB_OK);
    Result := False;
    end else
    Result := True;
  end;
end;

I want to perform MD5 verification on multiple versions, what should I do?

Condition: A.exe has been installed (there are 5 versions of A.exe successively, MD5 are aMD5/bMD5/cMD5/dMD5/eMD5 respectively).

Use the installation package made by Inno Setup to compare the MD5 of A.exe at runtime.

If equal to aMD5 or bMD5, the installer should continue.

If it is equal to cMD5 or dMD5 or eMD5, it should display

The file version is incorrect, please install the correct version!

Martin Prikryl
  • 188,800
  • 56
  • 490
  • 992
i6henl
  • 21
  • 5

1 Answers1

1

Problem has been solved based on:

[Code]
function InitializeSetup: boolean;
var
  Path: string;
  MD5: string;
begin
  Path := ExpandConstant('{commonpf32}\A\A.exe');
  Result := FileExists(Path);

  if not Result then begin
    MsgBox('File does not exist!', mbError, MB_OK);
  end else begin
    MD5 := GetMD5OfFile(Path);
    if (MD5 = 'ab6fb7694839b404b53f0505f4d89f0e') or
       (MD5 = '152f7a2d99d3569202726864f4afbb45') then
    begin
      MsgBox('The file version is incorrect, please install the correct version!',
        mbError, MB_OK);
      Result := False;
    end else
    if (MD5 = '34f871d51120216bed8deefa7147b857') or
       (MD5 = '5cd3e16c3a8374c448346277f11243c8') or
       (MD5 = '8fd90b3061795c553978d020c29d1f0b') then
    begin
      Log('The file version is correct');
    end
      else
    begin
      MsgBox('Unknown file version, please install a supported version!',
        mbError, MB_OK);
      Result := False;
    end;
  end;
end;
Martin Prikryl
  • 188,800
  • 56
  • 490
  • 992
i6henl
  • 21
  • 5