версия DLL-файла

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

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

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


person DRokie    schedule 19.04.2011    source источник


Ответы (4)


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

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;
person Matthias Alleweldt    schedule 19.04.2011
comment
Панель информации о версии отключена для проекта .DLL. Как я могу включить его для активации и установки информации о версии? - person DRokie; 21.04.2011
comment
@DRookie: добавьте {$R *.res} в файл проекта dll. - person dummzeuch; 22.04.2011

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

function GetDllVersion: string;  //Run in dll project
var
  fn: string;
begin
  fn := GetModuleName(HInstance); 
  Result := FileVersionGet(fn);  // use Matthias's function
end;
person Leo    schedule 20.04.2011

Используйте SysUtils.GetFileVersion().

Чтобы получить версию файла, необходимо установить версию файла заранее.

person user422039    schedule 19.04.2011
comment
Информация о версии должна быть включена в проект под Project/Options - person kludg; 20.04.2011
comment
Панель информации о версии отключена для проекта .DLL. Как я могу включить его для активации и установки информации о версии? - person DRokie; 21.04.2011

JCL имеет JclFileVersion. Две-три строчки и готово.

person Community    schedule 19.04.2011