Цитирование из документации Inno Setup для GetWindowsVersion()
:
Возвращает номер версии Windows, упакованный в одно целое число. Старшие 8 бит указывают основную версию; следующие 8 битов определяют младшую версию; младшие 16 бит определяют номер сборки. Например, эта функция вернет $ 05000893 в Windows 2000, версия 5.0.2195.
Вы не можете сравнить со значением с плавающей запятой, вам нужно извлечь части номера версии, например:
function AppDir(Param: String): String;
var
Ver: Cardinal;
VerMajor, VerMinor, BuildNum: Cardinal;
begin
Ver := GetWindowsVersion();
VerMajor := Ver shr 24;
VerMinor := (Ver shr 16) and $FF;
BuildNum := Ver and $FFFF;
if VerMajor >= 6 then
Result := ExpandConstant('{userdocs}')
else
Result := ExpandConstant('{pf}');
end;
Обратите внимание, что вы никогда не должны проверять VerMajor
на равенство, так как это не сработает как для более низких, так и для более высоких версий Windows. Вместо этого всегда используйте <=
или >=
.