[Lazarus] WinCE and version

Antonio Fortuny a.fortuny at sitasoftware.lu
Tue Jul 3 16:50:59 CEST 2012


Hi All.
Does anyone know whether it is possible to save (at compile time) and 
extract (at runtime)  the program version in WinCE as I use it currently 
in Win32 and Win64 ?
It appears that the same code doesn't work. There is the code snippet I use:

function ReadVersionInfo(const sProgram: string; Out vv: PTVersion) 
:Boolean;
var
   Info:       PVSFixedFileInfo;
   InfoSize:   Cardinal;
   nHwnd:      DWORD;
   BufferSize: DWORD;
   Buffer:     Pointer;
begin
   ZeroMemory(Info, SizeOF(PVSFixedFileInfo));
   vv := new(PTVersion);
   InfoSize := 0;
   nHwnd := 0;
   with vv^ do begin
     Major:= -1;
     Minor := 0;
     Release := 0;
     Build := 0;
   end;
   Result := False; //no version info at all in the file
   BufferSize := GetFileVersionInfoSize(pchar(sProgram), nHWnd); {Get 
buffer size}
   if BufferSize <> 0 then begin //if zero, there is no version info
     Buffer := nil;
     ReAllocMem(Buffer, BufferSize+1);
     try
       if GetFileVersionInfo(PChar(sProgram),nHWnd,BufferSize,Buffer) 
then begin  // got version info
         if VerQueryValue(Buffer, PChar('\'), Pointer(Info), InfoSize) 
then begin   //got root block version information
           with vv^ do begin
             Major := HiWord(Info^.dwFileVersionMS); //extract major version
             Minor := LoWord(Info^.dwFileVersionMS); //extract minor version
             Release := HiWord(Info^.dwFileVersionLS); //extract release 
version
             Build := LoWord(Info^.dwFileVersionLS); //extract build version
           end;
           Result := True;
         end
       end
     finally
       ReAllocMem(Buffer, 0);
     end
   end;
end;

Thanks,
Antonio.






More information about the Lazarus mailing list