【问题标题】:DLL file versionDLL文件版本
【发布时间】:2011-04-19 20:35:34
【问题描述】:

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

当我需要更改报告数据结构时,我只更改此 DLL 并将其分发给 APP 的所有用户。我如何保证所有人在开始之前都拥有最新版本?

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

【问题讨论】:

    标签: delphi dll versioning


    【解决方案1】:

    此函数将获取文件版本作为字符串:

    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;
    

    【讨论】:

    • .DLL 项目的版本信息面板已禁用。如何启用它来激活和设置版本信息?
    • @DRookie:将 {$R *.res} 添加到 dll 的项目文件中。
    【解决方案2】:

    获取DLL版本:

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

    【讨论】:

      【解决方案3】:

      使用SysUtils.GetFileVersion()

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

      【讨论】:

      • 版本信息应包含在Project/Options下的项目中
      • .DLL 项目的版本信息面板已禁用。如何启用它来激活和设置版本信息?
      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-26
        • 1970-01-01
        • 2012-11-14
        • 1970-01-01
        • 1970-01-01
        • 2011-02-28
        • 1970-01-01
        相关资源
        最近更新 更多