Для начала, давайте разберемся в вопросе и контексте задачи. Разработчик сталкивается со проблемой отображения информации о версии приложения после перехода с использования Borland Resource Compiler (RC) на Windows SDK Resource Compiler. При использовании Borland RC все работало корректно, но после смены на Windows SDK RC информация о версии перестала отображаться в свойствах файла в Explorer и не могла быть получена через WinAPI функцию GetFileVersionInfo. Однако, при помощи Resource Hacker было обнаружено, что ресурс с версией действительно присутствует в исполняемом файле.
Из контекста мы видим, что проблема была решена путем изменения первой строки .rc файла с VS_VERSION_INFO VERSIONINFO на 1 VERSIONINFO. Это позволило корректно обработать ресурс версии приложения при использовании Windows SDK Resource Compiler. Также было предложено добавить макрос для явного определения идентификатора VS_VERSION_INFO, если он не определен компилятором.
Теперь, давайте напишем статью на основе предоставленной информации:
Исправление ошибки отображения версии приложения после перехода с Borland RC на Windows SDK RC
Разработчикам программного обеспечения иногда приходится сталкиваться с различными трудностями при использовании разных инструментов и компиляторов. Одной из таких проблем является некорректное отображение информации о версии приложения после перехода с Borland Resource Compiler (RC) на Windows SDK Resource Compiler.
Проблема
Информация о версии, которая ранее корректно отображалась в свойствах файла в Explorer и была доступна через WinAPI функцию GetFileVersionInfo при использовании Borland RC, перестала быть видимой после смены на Windows SDK RC. Это происходило несмотря на то, что ресурс версии присутствовал в исполняемом файле, что подтверждалось проверкой с помощью Resource Hacker.
Исходный код .rc файла
Вот пример исходного кода .rc файла, который использовался для хранения информации о версии:
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,0
PRODUCTVERSION 1,0,0,0
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "Comments", "Company Soft\0"
VALUE "CompanyName", "Company2\0"
// ... другие значения ...
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x0409,1200
END
END
Решение проблемы
Проблема была решена путем изменения первой строки .rc файла. Вместо VS_VERSION_INFO VERSIONINFO был использован синтаксис:
1 VERSIONINFO
Это изменение позволило корректно обработать ресурс версии приложения при использовании Windows SDK Resource Compiler.
Дополнительные рекомендации
Также было предложено добавить макрос для определения VS_VERSION_INFO, если он не определен в компиляторе:
Это может быть необходимо, так как некоторые компиляторы ожидают явного определения идентификатора.
Заключение
При переходе на использование Windows SDK Resource Compiler важно учитывать различия в обработке ресурсов по сравнению с Borland RC. В данном случае, простое изменение синтаксиса .rc файла помогло устранить проблему отображения информации о версии приложения.
Эта статья предназначена для разработчиков, которые используют Delphi и Pascal, и сталкиваются с аналогичными проблемами при работе с ресурсами приложений. Мы надеемся, что предоставленная информация поможет вам быстро решить подобные задачи.
Разработчик столкнулся со сложностью в отображении информации о версии приложения после переключения с Borland Resource Compiler на Windows SDK Resource Compiler, и проблема была решена через изменения в файле ресурсов.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.