Информация о версии (Version.rc) с Delphi XE8

Я обновлял свой старый код Delphi 2007 до Delphi XE8, где я наблюдал очень странное поведение с информацией о версии программы.

Ниже приведен файл Version.rc, который я использовал для компиляции тестового проекта.

1 VERSIONINFO
FILEVERSION 0,0,0,0
PRODUCTVERSION 0,0,0,3
FILEOS 0x4
FILETYPE 0x2
{
BLOCK "StringFileInfo"
{
    BLOCK "080904E4"
    {
        VALUE "CompanyName", "ABC Inc\000"
        VALUE "FileDescription", "Version Testing\000"
        VALUE "FileVersion", "0.0.0.0\000"
        VALUE "ProductName", "VERT001\000"
        VALUE "ProductVersion", "A003\000"
    }
}

BLOCK "VarFileInfo"
{
    VALUE "Translation", 0x0809 0x04E4
}
}

Когда я смотрю информацию о версии с компьютера с Windows 8.1, я получаю следующую информацию:

введите здесь описание изображения

И когда я просматриваю информацию о версии Windows Server 2012, я получаю следующую информацию:

введите здесь описание изображения

Первоначально я думал, что это может быть проблема с параметром FILEOS, и я изменил его на VOS_NT_WINDOWS32 или даже на VOS_NT, однако это ничего не изменило.

Один и тот же тестовый проект, скомпилированный с помощью Delphi 2007, правильно отображает сведения о версии в обеих ОС.

Кто-нибудь сталкивался с подобной проблемой в недавнем прошлом?


person DivX    schedule 12.10.2015    source источник
comment
Вы на 100% уверены, что IDE не переопределяет ваш ресурс? Используйте редактор ресурсов, чтобы проверить ресурс, скомпилированный в ваше приложение.   -  person David Heffernan    schedule 12.10.2015
comment
Кажется, что IDE всегда пытается переопределить флаг [Включить информацию о версии в проект]. Даже когда я снял флажок и сохранил/создал проект. Кажется, что IDE автоматически выбирает его перед каждой сборкой. Позвольте мне посмотреть, есть ли какая-то работа вокруг этого.   -  person DivX    schedule 12.10.2015
comment
У меня нет такой проблемы. Возможно, вам придется очистить файл .dproj вручную. Я также в файле .dpr заменил {$R *.res} на {$R MyProjectName.res}, что, как я подозреваю, важно.   -  person David Heffernan    schedule 12.10.2015
comment
Если я отредактирую файл dproj в блокноте и изменю ‹VerInfo_IncludeVerInfo›false‹/VerInfo_IncludeVerInfo›, IDE не выберет информацию о версии автоматически. Теперь созданный EXE-файл показывает правильную информацию о версии в обеих ОС. Спасибо, Дэвид, за то, что показал путь к проблеме.   -  person DivX    schedule 12.10.2015
comment
@DavidHeffernan Хорошая находка! Мне потребовалось несколько часов, чтобы разобраться с проблемой! Помимо этой причины, другая причина заключается в том, что мой файл dpr содержит устаревший файл .res. Под Win7 все было нормально, а под Win10 нет.   -  person Edwin Yip    schedule 17.08.2019


Ответы (1)


После помощи Дэвида я обнаружил, что проблема связана с файлом dproj. Когда я указал <VerInfo_IncludeVerInfo>false</VerInfo_IncludeVerInfo>, VersionTest.exe начал показывать правильные версии на обеих ОС.

person DivX    schedule 12.10.2015
comment
У меня была та же проблема с IDE, которая всегда хотела перепроверить флажок информации о версии. Я обнаружил, что если я выберу узел «Конфигурации сборки» в «Диспетчере проектов», а затем перейду к свойствам проекта, снятие флажка «Включить информацию о версии в проект» останется снятым. (По сути, установка флажка информации о версии для всех конфигураций одновременно). Затем он подберет мой ресурс VersionInfo.rc во время компиляции. - person Mike Dixon; 30.04.2018