我有一個爲Compact Framework編譯的應用程序,我需要找到使用Delphi 2006的版本號。我使用下面的代碼。從Delphi PC應用程序獲取壓縮框架exe的版本號
function VersionNumber(ExeFile: string): string;
var
Size: Longint;
Dummy: Cardinal;
Buffer: Pointer;
FileInfo: Pointer;
begin
Size := GetFileVersionInfoSize(PChar(ExeFile), Dummy);
GetMem(Buffer, Size);
if (GetFileVersionInfo(PChar(ExeFile), Dummy, Size, Buffer)) then begin
//VerQueryValue(Buffer, '\\', FileInfo, Dummy);
//with PVSFixedFileInfo(FileInfo)^ do
//Result := IntToStr(dwFileVersionMS div $10000) + '.' +
// IntToStr(dwFileVersionMS mod $10000) + '.' +
// IntToStr(dwFileVersionLS div $10000) + ' (' +
// IntToStr(dwFileVersionLS mod $10000) + ')';
end
else begin
Result := 'No version info available.';
end;
FreeMem(Buffer, Size);
end;
如果我認爲使用Windows 7,我不能看到版本號有兩種,所以這並不奇怪,我不能從德爾福得到它的文件的詳細信息。
就在有人知道獲取版本號的方法時,我們將不勝感激。
UPDATE
此代碼是由一名前工作人員寫了那麼十年前。到目前爲止,它運行良好,但從未嘗試過爲Compact Framework編譯的可執行文件。
The GetFileVersionInfo函數返回false,所以我得到'No version info available。'。結果。
看看這個問題http://stackoverflow.com/questions/1981297/version-information-missing-from-net-assembly-compact-framework-3-5-vs2008 – Graymatter
你的代碼輸出是什麼 –
這是毫無意義地尋找不存在的資源。我認爲你應該刪除所有不必要的代碼,並告訴我們你在找什麼。如果它不是版本資源,它是什麼?一些.net元數據。但是什麼? –