DLL文件版本

时间:2011-04-19 20:35:34

标签: delphi dll versioning

我有一个使用DLL生成fastReports文件的应用程序。

当我需要更改报表数据结构时,我只更改此DLL并将其分发给APP的所有用户。我怎么能保证在开始之前都有最后一个版本?

如何从DLL文件生成/提取此信息。

4 个答案:

答案 0 :(得分:12)

此函数将把fileversion作为字符串:

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;

答案 1 :(得分:5)

获取Dll版本:

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

答案 2 :(得分:3)

使用SysUtils.GetFileVersion()

获取文件版本需要提前设置文件版本

答案 3 :(得分:0)

JCL有JclFileVersion。两三行你就完成了。