我有一个为Compact Framework编译的应用程序,我需要找到使用Delphi 2006的版本号。我正在使用下面的代码。
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查看文件详细信息,我也看不到其中的版本号,所以我无法从Delphi中获取它,这并不奇怪。
如果有人知道获取版本号的方法,那将非常感激。
更新
此代码是十多年前由前工作人员编写的。到目前为止,它运行良好,但从未尝试过为Compact Framework编译的可执行文件。
GetFileVersionInfo 函数返回false,因此我收到“没有可用的版本信息”。'结果
答案 0 :(得分:1)
CF不会将C / C ++ FileVersionInfo放入exe或DLL文件中。 AssemblyInfo与您使用代码示例查找的FileVersionInfo资源不同。
ctacke在http://blog.opennetcf.com/2014/01/03/howto-add-the-win32-file-version-to-your-net-compact-framework-assemblies/上有一篇关于此内容的有用帖子,可以通过Version information missing from .NET assembly (Compact Framework 3.5/VS2008)找到,这已经发布了什么。