我正在通過LoadPackage()
在運行時加載軟件包。比方說,我想檢查包的版本,以確保它是最新的。我怎樣才能做到這一點?如何在運行時獲取軟件包名稱/版本
1
A
回答
7
軟件包只是一種特殊類型的dll,因此您可以使用SysUtils單元中定義的GetFileVersion
函數,該函數返回版本號的最高有效32位。因此不包括髮布和/或內部版本號。
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils;
Var
FileVersion : Cardinal;
begin
try
FileVersion:=GetFileVersion('C:\Bar\Foo.bpl');
Writeln(Format('%d.%d',[FileVersion shr 16, FileVersion and $FFFF]));
Readln;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
如果你想獲取完整版本號(與釋放和建立數字包括在內),你可以使用GetFileVersionInfoSize
,VerQueryValue
和GetFileVersionInfo
WINAPI功能。
function GetFileVersionStr(const AFileName: string): string;
var
FileName: string;
LinfoSize: DWORD;
lpdwHandle: DWORD;
lpData: Pointer;
lplpBuffer: PVSFixedFileInfo;
puLen: DWORD;
begin
Result := '';
FileName := AFileName;
UniqueString(FileName);
LinfoSize := GetFileVersionInfoSize(PChar(FileName), lpdwHandle);
if LinfoSize <> 0 then
begin
GetMem(lpData, LinfoSize);
try
if GetFileVersionInfo(PChar(FileName), lpdwHandle, LinfoSize, lpData) then
if VerQueryValue(lpData, '\', Pointer(lplpBuffer), puLen) then
Result := Format('%d.%d.%d.%d', [
HiWord(lplpBuffer.dwFileVersionMS),
LoWord(lplpBuffer.dwFileVersionMS),
HiWord(lplpBuffer.dwFileVersionLS),
LoWord(lplpBuffer.dwFileVersionLS)]);
finally
FreeMem(lpData);
end;
end;
end;
相關問題
- 1. 如何獲取運行Tomcat的軟件包版本?
- 2. 獲取軟件包名稱
- 3. 通過軟件包名稱執行軟件包名稱以獲取Sql Server存儲的軟件包
- 4. 從APK獲取軟件包名稱-comamnd
- 5. 如何處理不同版本的不同軟件包名稱?
- 6. 使用pkg_resources獲取軟件包版本?
- 7. 獲取軟件包版本爲cpp
- 8. nuget命令行 - 如何獲取最新版本的軟件包版本?
- 9. 如何在Android的棒棒糖版本後獲取包名稱
- 10. 從其可執行文件獲取軟件包名稱
- 11. 從軟件包名稱中獲取應用程序名稱
- 12. 如何在gradle構建腳本中獲取軟件包名稱或applicationId?
- 13. 如何從sdkmanager --list獲取完整軟件包名稱?
- 14. 如何使用Oracle dbms_ldap軟件包獲取LDAP組名稱?
- 15. 如何使用黑莓獲取軟件包名稱
- 16. 如何從共享首選項獲取軟件包名稱?
- 17. 如何查找運行已安裝的軟件名稱和版本處理
- 18. 如何獲取軟件包所有版本的列表?
- 19. 在運行時獲取jar版本
- 20. 在運行時獲取node.js版本
- 21. 在運行時獲取服務版本
- 22. 如何在任何linux發行版中找到python軟件包名稱?
- 23. 在運行時獲取已安裝的OSGI軟件包列表
- 24. 如何獲取正在運行的Perl腳本的名稱
- 25. 從軟件包安裝程序活動獲取安裝軟件包名稱
- 26. 獲取軟件包資源,但不知道確切的軟件包名稱
- 27. 如何從軟件包名稱
- 28. 收到安裝的MSI軟件包的名稱和版本
- 29. 哪裏可以找到RedHat軟件包的名稱和版本?
- 30. 如何獲取舊版API版本的運行時權限?
U可以考慮單元的版本:http://stackoverflow.com/questions/5251165 –