2013-11-13 2 views
2

Мы используем функцию GetWindowsVersionEx для извлечения значений версии сборки в Windows. Он отлично работает во всех операционных системах, но в Windows 2012-R2, выпущенном недавно, он дает неверный результат. Фактическая версия сборки - 6.3, но ее отображение - только 6.2. Итак, когда я провел некоторое исследование, я нашел ссылку ниже, чтобы решить проблему. Но я не понимаю, как это реализовать в коде настройки inno.Функция GetWindowsVersionEx неверна в windows 2012 R2

Помогите оценить.

Ссылка: http://msdn.microsoft.com/en-us/library/windows/desktop/dn302074%28v=vs.85%29.aspx

[Setup] 
AppName=My Program 
AppVersion=1.5 
DisableProgramGroupPage=yes 
DefaultGroupName=My Program 

OutputDir=c:\output 
DefaultDirName={sd}\MYPROG 
UninstallDisplayIcon={app}\MyProg.exe 


[code] 
var 
Version: TWindowsVersion; 
function InitializeSetup(): Boolean; 
begin 
      GetWindowsVersionEx(Version); 
      SuppressibleMsgBox('Major='+ IntToStr(Version.Major)+ ' Minor='+IntToStr(Version.Minor),mbCriticalError, MB_OK, MB_OK); 

end; 
+0

Какую версию Inno Setup вы используете? Я просмотрел манифест приложения, скомпилированный с помощью Inno Setup 5.5.4 (u), и он уже включает запись для Windows 8.1. Таким образом, либо вы используете более старую версию IS, либо предложение из '' связанной статьи' '(http://msdn.microsoft.com/en-us/library/windows/desktop/dn302074%28v=vs.85 % 29.aspx) не работает должным образом. – TLama

ответ

5

Это by design in Windows 8.1 and Server 2012-R2. Он вернет последнюю версию Windows, которую приложение заявляет, что поддерживает через манифест приложения.

Inno версии установки 5.5.3 и ниже были только обозначены как совместимые с до Windows 8. По Inno Setup 5.5.4, он был обновлен для поддержки ОС Windows 8.1:

Добавлен раздел винда 8.1 «Совместимость» к различным ресурсам манифеста, используемым Inno Setup. Это позволяет любой проверять версию операционной системы, чтобы получить номер реальной версии (6.3) вместо того, чтобы получить тот же номер версии, что и в Windows 8 (6.2).

tl; dr: обновить до последней версии Inno Setup.

+0

D'oh; Я пропустил это * «что нового» * ​​раздела. По крайней мере, я подтвердил, что запись 8.1 находится в выходном двоичном манифесте. [+1] – TLama

Смежные вопросы