iglezz Немножко уменьшил код, и добавил функцию проверки максимальной версии, на которую можна установить свой апдейт, мож кому пригодится. Работает з доп. модулем и подключением через функцыю #include
тыць
Файл FileVersion.iss (разместить рядом с основным скриптом), и в скрипте подключить етот файл
#include "FileVersion.iss"
Вот сам скрипт
Code
#include "FileVersion.iss"
[code]
function InitializeSetup(): Boolean;
var FileName: String; CurrentVersion, MinVersion: TFileVersion; begin
// Задаём минимальную требуемую версию:
FileVersionSetI(MinVersion, 1,3,0,0);
FileName := ExpandConstant('{reg:HKLM\SOFTWARE\Test,PATH_APPLICATION}') +'\Test.exe';
if Not FileExists(FileName) then begin
MsgBox('Установка Прекращена:' #13#13 'Файл ('+ExtractFileName(FileName)+') не найден!', mbCriticalError, MB_OK);
Result := False; Exit;
end;
FileVersionSetF(CurrentVersion, FileName);
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(MinVersion, 1,3,0,0);
FileName := ExpandConstant('{reg:HKLM\SOFTWARE\Test,PATH_APPLICATION}') +'\Test.exe';
FileVersionSetF(CurrentVersion, FileName);
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;
end;
Счас назрел новый вопрос, я правда еще мало интересовался им, но навсяк спрошу мож кто знает ответ, перед установкой нуна сверить
хешсумму SHA-1 установленного уже файла Test.exe, с хеш устанавлимоего мною файла Test.exe (я могу и зарания вбить значение хеш SHA-1 устанавлимоего Test.exe для проверки), и в случае 1=1 вывести сообщение Програма уже установлена Хотите установить (ДА\НЕТ)
Чот сочинил но пока безрезультатно
Code
function GetSHA1OfUnicodeString(const S: String): String;
var
SHA1: String;
begin
SHA1 := GetSHA1OfUnicodeString('reg:HKLM\SOFTWARE\Code,PATH_APPLICATION}\Test.exe');
if SHA1 = '9ab696a37604d665dc97134dbee44cfe70451b1a' then
begin
end
else
MsgBox('программа уже установлена' #13#13 'продлить установку', mbCriticalError, MB_YESNO);
Result:= False;
end;
end;