Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как добавить информацию о версии в исполняемые файлы на Delphi: Пошаговое руководство

Delphi , Программа и Интерфейс , EXE файл

Вопрос пользователя заключается в том, что ему необходимо добавить информацию о версии для исполняемых файлов (EXE), которые изначально не содержат такую информацию. Попытки использовать функции BeginUpdateResource, UpdateResource и EndUpdateResource привели к созданию некорректных данных, вместо ожидаемой информации о версии.

Подтвержденный ответ:

Пользователь предоставил код, который он использует для обновления информации о версии, но он не достигает желаемого результата, так как создаёт некорректные данные. Необходимо создать структуру VERSIONINFO, заполнить её информацией и скопировать в ресурсы исполняемого файла.

Альтернативный ответ:

Ресурс RT_VERSION не просто восемь байт. Это VERSIONINFO, структура с фиксированным размером и переменными строками. Для деталей можно обратиться к документации MSDN по VERSIONINFO resource.

Решение проблемы:

Для решения проблемы можно использовать следующий код на Object Pascal (Delphi), который добавляет или обновляет числовые версии исполняемых файлов, используя существующий ресурс версии из другого файла:

type
  VERSIONHEADER = packed record
    wLength: word;
    wValueLength: word;
    wType: word;
    Key: array[0..16] of WideChar;   // 'VS_VERSION_INFO'
    Version: VS_FIXEDFILEINFO;
  end;

var
  ToolPath: TFileName;    // = exe содержащий ссылку на версию ресурса
  ExeFullPath: TFileName; // = целевой exe
  Maj, Min: cardinal; // ожидаемый обновлённый номер версии
  VersionHandle, VersionRes: THandle;
  VersionSize: DWORD;
  Version: array of AnsiChar;
  Ver: ^VERSIONHEADER;

VersionSize := GetFileVersionInfoSize(pointer(ToolPath), VersionHandle);
if (VersionSize <> 0) and (Maj <> 0) then
begin
  SetLength(Version, VersionSize);
  Ver := pointer(Version);
  GetFileVersionInfo(pointer(ToolPath), 0, VersionSize, Ver);
  if Ver^.Version.dwSignature = $FEEDF04BD then
  begin
    Ver^.Version.dwFileVersionMS := MAKELONG(Min, Maj);
    Ver^.Version.dwProductVersionMS := Ver^.Version.dwFileVersionMS;
    VersionRes := BeginUpdateResource(Pointer(ExeFullPath), False);
    UpdateResource(VersionRes, RT_VERSION, MAKEINTRESOURCE(VS_VERSION_INFO),
      1033, Ver, VersionSize);
    EndUpdateResource(VersionRes, False);
  end;
end;

Этот код позволяет добавить или обновить числовые версии исполняемого файла (ExeFullPath), заменив их ресурсом версии из другого файла (ToolPath), который может быть, например, общим ресурсом с информацией о версии, или даже самим целевым файлом для обновления номеров версий.

Примечание:

Код выше является упрощённым примером. Для полноценной работы с информацией о версии необходимо учитывать различные аспекты, такие как локализация, различные типы строк и другие детали, которые определяются структурой VERSIONINFO.

Заключение:

Для успешного добавления информации о версии в исполняемые файлы на Delphi важно правильно организовать структуру VERSIONINFO, корректно заполнить её необходимыми данными и выполнить запись в ресурсы целевого файла. Используя предоставленный пример кода, можно начать работу с версионной информацией в своих проектах на Delphi.

Создано по материалам из источника по ссылке.

Как добавить информацию о версии в исполняемые файлы на Delphi, пошаговое руководство с учетом корректного использования структуры `VERSIONINFO`.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: EXE файл ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-05 12:43:09/0.0035650730133057/0