从Delphi PC应用程序获取compact framework exe的版本号

时间:2014-06-10 04:49:15

标签: delphi compact-framework delphi-2006

我有一个为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,因此我收到“没有可用的版本信息”。'结果

1 个答案:

答案 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)找到,这已经发布了什么。