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

Улучшение версионной информации исполняемых файлов: изменение номера сборки в Delphi ### Ответ: ### Улучшение версионной метки приложений на Delphi: тонкости работы с VS_VERSIONINFO

Delphi , Синтаксис , Справочник по API-функциям

Улучшение версионной информации исполняемых файлов: изменение номера сборки в Delphi

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

Описание проблемы

Версионная информация исполняемого файла содержит данные о версии программы, которые отображаются в свойствах файла и могут использоваться различными системами для определения совместимости и обновлений. Структура VS_VERSIONINFO в Windows содержит информацию о версии, которая включает в себя как числовые данные (VS_FIXEDFILEINFO), так и строковые ресурсы (StringFileInfo).

Изменение номера сборки в версии исполняемого файла требует чтения структуры VS_VERSIONINFO, изменения нужных значений, и последующего обновления информации обратно в исполняемый файл (PE).

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

Для изменения номера сборки в версии файла, можно использовать следующий подход:

  1. Сначала необходимо прочитать версионную информацию файла с помощью функции GetFileVersionInfoSize.
  2. После получения размера информации, выделяем память под структуру VS_VERSIONINFO и считываем её.
  3. Изменяем необходимые поля в структуре VS_FIXEDFILEINFO, в частности, номер сборки.
  4. Обновляем версионную информацию обратно в файл с помощью функции UpdateResource.

Однако, работа со строками и переменной длиной может вызвать дополнительные трудности. В таких случаях полезно использовать готовые библиотеки, которые облегчают эту задачу.

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

В случае, если стандартные подходы кажутся слишком сложными, можно рассмотреть использование сторонних инструментов или библиотек. Например, библиотека от Colin Wilson предоставляет удобные инструменты для работы с версионной информацией. Пример использования этой библиотеки приведён ниже:

uses ..., unitResourceVersionInfo, unitPEFile;

var
  VersionInfo: TVersionInfoResourceDetails;
  PEResModule: TPEResourceModule;
  VersionNumber: ULARGE_INTEGER;
  sVersion: String;
  I: Integer;
begin
  PEResModule := TPEResourceModule.Create;
  try
    PEResModule.LoadFromFile(sExe);

    For I := 0 To PEResModule.ResourceCount - 1 Do
    begin
      if PEResModule.ResourceDetails[I] is TVersionInfoResourceDetails then
      begin
        VersionInfo := PEResModule.ResourceDetails[I] as TVersionInfoResourceDetails;
        Break;
      end;
    end;

    VersionNumber.LowPart := MakeLong(NewBuildNumber, HiWord(VersionInfo.FileVersion.LowPart));
    VersionNumber.HighPart := VersionInfo.FileVersion.HighPart;
    VersionInfo.FileVersion := VersionNumber;
    VersionInfo.ProductVersion := VersionNumber;

    VersionInfo.CodePage := $04e4;

    sVersion := Format('%d.%d.%d.%d', [HiWord(VersionInfo.FileVersion.HighPart), LoWord(VersionInfo.FileVersion.HighPart), HiWord(VersionInfo.FileVersion.LowPart), LoWord(VersionInfo.FileVersion.LowPart)]);
    VersionInfo.SetKeyValue('FileVersion', sVersion);

    PEResModule.SaveToFile(ChangeFileExt(sExe, '.exe2'));
  finally
    FreeAndNil(PEResModule);
  end;
end;

Обратите внимание, что в приведённом коде используется библиотека, которая работает с указателями и арифметикой указателей для извлечения и записи информации, что является одним из наиболее сложных способов. Также, в коде присутствует строка, связанная с исправлением ошибки в библиотеке (установка кодировки в $04e4).

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

Использование сторонних библиотек, таких как предложенная Colin Wilson, может значительно упростить процесс изменения версионной информации в исполняемых файлах. Важно отметить, что для использования этих библиотек может потребоваться дополнительная настройка среды разработки и, возможно, обновление используемых компонентов.

Заключение

Изменение номера сборки в версионной информации исполняемых файлов - важная задача, которая может быть решена различными способами. От простых, встроенных функций до использования сторонних библиотек. Выбор метода зависит от конкретных требований проекта и удобства использования инструментов разработчика.

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

В статье рассматривается процесс изменения версионной информации исполняемых файлов, созданных в Delphi, с акцентом на модификацию номера сборки.


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

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




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


:: Главная :: Справочник по API-функциям ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2024-12-26 14:13:48/0.0035490989685059/0