[Lazarus] Version info
michael.vancanneyt at wisa.be
michael.vancanneyt at wisa.be
Tue Sep 18 09:21:33 CEST 2012
On Tue, 18 Sep 2012, Antonio Fortuny wrote:
>>> FPC and Lazarus WiKi do only talk about the compiled target, not how
>>> to extract resource data from other files. Of course, they have to be
>>> compiled with FPC.
>>
>> The fileinfo unit in FPC has this ability.
>>
>> Michael.
> yep but only for Windows (and WinCE), not Linux as they call
> GetFileVersionInfoSizeA and GetFileVersionInfoSizeW in version.dll to read
> the resource data information
Yes.
But as I wrote in another mail in this thread:
I have a modified version of that unit that works for Linux as well;
I use it in production.
Here is the relevant part for non-windows:
uses resource, elfreader, versiontypes,versionresource;
Type
TVersionQuad = Array[1..4] of Word;
Function GetFileVersion (Const AFileName : string; Var Version : TVersionQuad) : Boolean;
Var
RS : TResources;
E : TElfResourceReader;
VR : TVersionResource;
I : Integer;
begin
RS:=TResources.Create;
try
E:=TElfResourceReader.Create;
try
Rs.LoadFromFile(AFileName,E);
finally
E.Free;
end;
VR:=Nil;
I:=0;
While (VR=Nil) and (I<RS.Count) do
begin
if RS.Items[i] is TVersionResource then
VR:=TVersionResource(RS.Items[i]);
Inc(I);
end;
Result:=(VR<>Nil);
if Result then
For I:=1 to 4 do
Version[i]:=VR.FixedInfo.FileVersion[I-1];
Finally
RS.FRee;
end;
end;
Better yet would probably be to commit it in FPC SVN. I'll look into that as
well :-)
Michael.
More information about the Lazarus
mailing list