如何取得自寫bpl的版本資訊? |
答題得分者是:Mickey
|
pedro
尊榮會員 發表:152 回覆:1187 積分:892 註冊:2002-06-12 發送簡訊給我 |
|
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
pedro 你好: 先看看 Win API "GetFileVersionInfo", 不過看起來挺麻煩的. 在 Windows.pas 中已有相關宣告:
type PVSFixedFileInfo = ^TVSFixedFileInfo; {$EXTERNALSYM tagVS_FIXEDFILEINFO} tagVS_FIXEDFILEINFO = packed record dwSignature: DWORD; { e.g. $feef04bd } dwStrucVersion: DWORD; { e.g. $00000042 = "0.42" } dwFileVersionMS: DWORD; { e.g. $00030075 = "3.75" } dwFileVersionLS: DWORD; { e.g. $00000031 = "0.31" } dwProductVersionMS: DWORD; { e.g. $00030010 = "3.10" } dwProductVersionLS: DWORD; { e.g. $00000031 = "0.31" } dwFileFlagsMask: DWORD; { = $3F for version "0.42" } dwFileFlags: DWORD; { e.g. VFF_DEBUG | VFF_PRERELEASE } dwFileOS: DWORD; { e.g. VOS_DOS_WINDOWS16 } dwFileType: DWORD; { e.g. VFT_DRIVER } dwFileSubtype: DWORD; { e.g. VFT2_DRV_KEYBOARD } dwFileDateMS: DWORD; { e.g. 0 } dwFileDateLS: DWORD; { e.g. 0 } end; TVSFixedFileInfo = tagVS_FIXEDFILEINFO; {$EXTERNALSYM VS_FIXEDFILEINFO} VS_FIXEDFILEINFO = tagVS_FIXEDFILEINFO;參考看看. |
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
剛剛試了一下, 應該可直接引用了:
function Versionstring(Ms, Ls: Longint): string; begin Result := Format('%d.%d.%d.%d', [HIWord(Ms), LOWord(Ms), HIWord(Ls), LOWord(Ls)]); end; function GetFileVersion(FFileName:string):string; var Size: Integer; Size1: LongWord; RezBuffer: string; Handle: DWord; FixedFileInfoBuf : PVSFixedFileInfo; begin // Check Version Info Size Size := GetFileVersionInfoSize(PChar(FFileName), Handle); if Size <= 0 then raise Exception.Create('No Version Info Available.'); // Fill Version Buffer SetLength(RezBuffer, Size); if not GetFileVersionInfo(PChar(FFileName), Handle, Size, PChar(RezBuffer)) then raise Exception.Create('Cannot obtain version info.'); // Fill Fixed file info if VerQueryValue(PChar(RezBuffer), '\', pointer(FixedFileInfoBuf), Size1) then begin if Size1 < SizeOf(TVSFixedFileInfo) then raise Exception.Create('No fixed file info'); end else raise Exception.Create('No fixed file info'); // Extract Version string from Fixed File Info with FixedFileInfoBuf^ do Result := Versionstring(dwFileVersionMS, dwFileVersionLS); end; procedure TForm1.Button1Click(Sender: TObject); begin showmessage(GetFileVersion('C:\Program Files\Borland\Delphi7\Bin\dbx70.bpl')); end; |
pedro
尊榮會員 發表:152 回覆:1187 積分:892 註冊:2002-06-12 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |