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

Показать сообщение отдельно

Старожил


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

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


Цитата Beavimo:
Единственный косяк, когда хеш равни выскакивает СМС мол программа установлена установить (ДА\НЕТ?), так что не нажми всеравно установка продолжиться.
Я уже задолбался, если че - зделаю просто СМС придуприждение. Незнаю как боротся, ставлю Result := False; Exit; так она ваапще не запускается при разных хеш. »
Неудивительно. Такой неструктурированный винегрет невозможно читать.

CODE
Приводим код в порядок и сразу видим место где косяк зарыт:
Код: Выделить весь код
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;


Напоминание №2 о форматировании:
В каталоге установленного Inno Setup есть каталог Examples. Там в примерах стоит посмотреть как надо форматировать код, чтобы у него читабельность была на таком уровне, когда структура видна беглым взглядом.
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:11, 14-01-2020 | #451