Приводим код в порядок и сразу видим место где косяк зарыт:
Код:
function InitializeSetup(): Boolean;
var
FileName: String;
CurrentVersion, MinVersion, MaxVersion: TFileVersion;
begin
FileVersionSetI(MinVersion, 1,2,0,0);
FileName := ExpandConstant('{reg:HKLM\SOFTWARE\Code}') + '\Test.exe';
if not FileExists(FileName) then begin
MsgBox('Установка Прекращена:' #13#13 'Файл (' + ExtractFileName(FileName) + ') не найден!', mbCriticalError, MB_OK);
Result := False;
Exit;
end;
FileVersionSetF(CurrentVersion, FileName);
if (GetSHA1OFFile(FileName) = Lowercase('AD030D5606A2DCFA75EBC425A70730F23E7F07AB')) then
// Здесь идёт простое присваивание True/False:
// Result:=MsgBox('Обновление уже установлено:' #13#13 'Все равно установить?', mbInformation, MB_YESNO) = IDYES;
// хотя в случае False надо Exit делать. Поэтому сия строчка выкидывается и
// вместо неё пишется:
if MsgBox('Обновление уже установлено:' #13#13 'Все равно установить?', mbInformation, MB_YESNO) <> IDYES then begin
Result := False;
Exit;
end;
if FileVersionCompare(CurrentVersion, MinVersion) > -1 then
Result := True
else begin
MsgBox ('Установка Прекращена!' #13#13 'Версия Установленной Программы: ' + FileVersionToStr(CurrentVersion) + #13#13 'Минимальная Версия для Обновления: ' + FileVersionToStr(MinVersion), mbCriticalError, MB_OK);
Result := False; Exit;
end;
FileVersionSetI(MaxVersion, 1,4,0,0);
FileName := ExpandConstant('{reg:HKLM\SOFTWARE\Code}') + '\Test.exe';
FileVersionSetF(CurrentVersion, FileName);
if FileVersionCompare(CurrentVersion, MaxVersion) < 1 then
Result := True
else begin
MsgBox('Установка Прекращена!' #13#13 'Версия Установленной Программы: ' + FileVersionToStr(CurrentVersion) + #13#13 'Максимальная Версия для Обновления: ' + FileVersionToStr(MaxVersion), mbCriticalError, MB_OK);
Result := False;
Exit;
end;
end;