Версия файла DLL - PullRequest
       26

Версия файла DLL

6 голосов
/ 20 апреля 2011

У меня есть приложение, которое использует DLL для генерации файлов fastReports.

Когда мне нужно внести изменения в структуру данных отчетов, я только изменяю эту DLL и раздаю ее всем пользователям приложения.Как я могу гарантировать, что у всех есть последняя версия до их запуска?

Как я могу сгенерировать / извлечь эту информацию из DLL-файла.

Ответы [ 4 ]

12 голосов
/ 20 апреля 2011

Эта функция получит версию файла в виде строки:

function FileVersionGet( const sgFileName : string ) : string;
var infoSize: DWORD;
var verBuf:   pointer;
var verSize:  UINT;
var wnd:      UINT;
var FixedFileInfo : PVSFixedFileInfo;
begin
  infoSize := GetFileVersioninfoSize(PChar(sgFileName), wnd);

  result := '';

  if infoSize <> 0 then
  begin
    GetMem(verBuf, infoSize);
    try
      if GetFileVersionInfo(PChar(sgFileName), wnd, infoSize, verBuf) then
      begin
        VerQueryValue(verBuf, '\', Pointer(FixedFileInfo), verSize);

        result := IntToStr(FixedFileInfo.dwFileVersionMS div $10000) + '.' +
                  IntToStr(FixedFileInfo.dwFileVersionMS and $0FFFF) + '.' +
                  IntToStr(FixedFileInfo.dwFileVersionLS div $10000) + '.' +
                  IntToStr(FixedFileInfo.dwFileVersionLS and $0FFFF);
      end;
    finally
      FreeMem(verBuf);
    end;
  end;
end;
5 голосов
/ 20 апреля 2011

Получить версию Dll:

function GetDllVersion: string;  //Run in dll project
var
  fn: string;
begin
  fn := GetModuleName(HInstance); 
  Result := FileVersionGet(fn);  // use Matthias's function
end;
3 голосов
/ 20 апреля 2011

Использование SysUtils.GetFileVersion()

Для получения версии файла требуется заранее установить версию файла .

0 голосов
/ 20 апреля 2011

JCL имеет JclFileVersion. Две или три строки, и все готово.

...