获取应用程序的版本信息


Delphi或者Lazarus(FPC),编译环境有一个自动增加版本信息的功能,应用程序在运行时显示往往是调用windows API,整合成标准函数格式如下。


function GetApplicationVersion: String; // Added  取得程序版本号
var
   FileName     : String;
   InfoSize, Wnd: DWORD;
   VerBuf       : Pointer;
   VerInfo      : ^VS_FIXEDFILEINFO;
 begin
   Result   := '0.0.0.0';
   FileName := Application.ExeName;
   InfoSize := GetFileVersionInfoSize(PChar(FileName), Wnd);
   if InfoSize <> 0 then
   begin
     GetMem(VerBuf, InfoSize);
     try
       if GetFileVersionInfo(PChar(FileName), Wnd, InfoSize, VerBuf) then
       begin
         VerInfo := nil;
         VerQueryValue(VerBuf, '\', Pointer(VerInfo), Wnd);
        if VerInfo <> nil then
          Result := Format('V%d.%d.%d.%d', [VerInfo^.dwFileVersionMS shr 16, VerInfo^.dwFileVersionMS and $0000FFFF,
             VerInfo^.dwFileVersionLS shr 16, VerInfo^.dwFileVersionLS and $0000FFFF]);
       end;
     finally
       FreeMem(VerBuf, InfoSize);
     end;
   end;
end;

其实mORMot里面已经了对应的实现。mORMot 1.8 在 SynCommons,跨平台!

调用方法简单直接:

   TFileVersion.GetVersionInfo(Application.ExeName);