Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: Inno Setup. Прочие вопросы
Показать сообщение отдельно

Старожил


Сообщения: 352
Благодарности: 192

Профиль | Отправить PM | Цитировать


Beavimo,
Немножко многословно получилось...
Код: Выделить весь код
[Setup]
AppName=testApp
AppVersion=0.1
DisableWelcomePage=yes
DefaultDirName={tmp}\testApp
OutputDir=.
OutputBaseFilename=testApp
PrivilegesRequired=lowest

[code]
type
	TFileVer = array[1..4] of Integer;
	
procedure CutVerNumber(var S: String; var N: Integer);
var
	position: Integer;
begin
	position := Pos('.', S);
	if position > 0 then
		begin
			N := StrToInt(Copy(S, 1, position - 1));
			S := Copy(S, position + 1, 99);
		end
	else
		begin
			N := StrToInt(S);
			S := '';
		end;
end;

function TFileVerToString(V: TFileVer): String;
var
	i: Integer;
begin
	Result := IntToStr(V[1]);
	for i := 2 to 4 do
		Result := Result + '.' + IntToStr(V[i]);
end;

function StringToTFileVer(S: String): TFileVer;
var
	i: Integer;
	V: TFileVer;
begin
	for i := 1 to 4 do
		CutVerNumber(S, V[i]);
	
	Result := V;
end;

function IsNotLowerVersion(currentVersion, compareVersion: TFileVer): Boolean;
var
	i: Integer;
begin
	Result := False;
	
	for i := 1 to 4 do
		if currentVersion[i] < compareVersion[i] then
			Exit;
	
    Result := True;
end;

function InitializeSetup(): Boolean;
var
	fileName: String;
	versionString: String;
	minVersion: TFileVer;
	currentVersion: TFileVer;
begin
	// Имя файла:
	fileName := ExpandConstant('{reg:HKLM\SOFTWARE\Test,PATH_APPLICATION}\Test.exe');
	// Требуемая версия (1.3.0.0):
	minVersion[1] := 1;
	minVersion[2] := 3;
	minVersion[3] := 0;
	minVersion[4] := 0;
	
	if Not FileExists(fileName) then begin
		MsgBox('Установка Прекращена:'#13#13 + 'Файл `' + ExtractFileName(fileName) + '` не найден', mbCriticalError, MB_OK);
		Result := False;
		Exit;
	end;
	
	GetVersionNumbersString(fileName, versionString);
	currentVersion := StringToTFileVer(versionString);
	
	if IsNotLowerVersion(currentVersion, minVersion) then
		Result := True
	else begin
		MsgBox('Установка Прекращена:' \
		+ #13#13'Версия файла `' + ExtractFileName(fileName) + '`: ' + TFileVerToString(currentVersion) \
		+ #13#13'Требуется версия как минимум: ' + TFileVerToString(minVersion) \
		, mbCriticalError, MB_OK);
		Result := False;
	end;
end;


add:
Улучшенная версия на следующей странице

Последний раз редактировалось iglezz, 08-01-2020 в 18:04. Причина: узнал про тег noparse :)


Отправлено: 18:53, 07-01-2020 | #586

Название темы: Inno Setup. Прочие вопросы