标签:VersionStrings macos windows FileVerInfo writeln vr lazarus Values fi
从官网论坛看到的(https://wiki.freepascal.org/Show_Application_Title,_Version,_and_Company#FPC_3.0.2B)。下面的方法适用FPC3.0以上版本:
program printfileinfo; { Displays file version info for - Windows PE executables - Linux ELF executables (compiled by Lazarus) - macOS MACH-O executables (compiled by Lazarus) Runs on Windows, Linux, macOS } {$mode objfpc}{$H+} {$ifdef mswindows}{$apptype console}{$endif} uses {$IFDEF UNIX}{$IFDEF UseCThreads} cthreads, {$ENDIF}{$ENDIF} Classes,sysutils // FPC 3.0 fileinfo reads exe resources as long as you register the appropriate units , fileinfo , winpeimagereader {need this for reading exe info} , elfreader {needed for reading ELF executables} , machoreader {needed for reading MACH-O executables} ; var FileVerInfo: TFileVersionInfo; {$R *.res} begin FileVerInfo:=TFileVersionInfo.Create(nil); try FileVerInfo.ReadFileInfo; writeln('Company: ',FileVerInfo.VersionStrings.Values['CompanyName']); writeln('File description: ',FileVerInfo.VersionStrings.Values['FileDescription']); writeln('File version: ',FileVerInfo.VersionStrings.Values['FileVersion']); writeln('Internal name: ',FileVerInfo.VersionStrings.Values['InternalName']); writeln('Legal copyright: ',FileVerInfo.VersionStrings.Values['LegalCopyright']); writeln('Original filename: ',FileVerInfo.VersionStrings.Values['OriginalFilename']); writeln('Product name: ',FileVerInfo.VersionStrings.Values['ProductName']); writeln('Product version: ',FileVerInfo.VersionStrings.Values['ProductVersion']); finally FileVerInfo.Free; end; end.
FPC3.0之前版本使用下面的方法读取版本信息
uses resource, versiontypes, versionresource; FUNCTION resourceVersionInfo: STRING; (* Unlike most of AboutText (below), this takes significant activity at run- *) (* time to extract version/release/build numbers from resource information *) (* appended to the binary. *) VAR Stream: TResourceStream; vr: TVersionResource; fi: TVersionFixedInfo; BEGIN RESULT:= ''; TRY (* This raises an exception if version info has not been incorporated into the *) (* binary (Lazarus Project -> Project Options -> Version Info -> Version *) (* numbering). *) Stream:= TResourceStream.CreateFromID(HINSTANCE, 1, PChar(RT_VERSION)); TRY vr:= TVersionResource.Create; TRY vr.SetCustomRawDataStream(Stream); fi:= vr.FixedInfo; RESULT := 'Version ' + IntToStr(fi.FileVersion[0]) + '.' + IntToStr(fi.FileVersion[1]) + ' release ' + IntToStr(fi.FileVersion[2]) + ' build ' + IntToStr(fi.FileVersion[3]) + eol; vr.SetCustomRawDataStream(nil) FINALLY vr.Free END FINALLY Stream.Free END EXCEPT END END { resourceVersionInfo } ;
标签:VersionStrings,macos,windows,FileVerInfo,writeln,vr,lazarus,Values,fi 来源: https://www.cnblogs.com/qiufeng2014/p/16322802.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。