如何在Delphi 10.2中使用ToolsAPI获取当前项目的版本号

2024-04-15

在 Delphi 2007 中,我可以使用以下 ToolsAPI 调用轻松获取当前项目的版本信息:

procedure Test;
var
  ProjectOptions: IOTAProjectOptions;
  Project: IOTAProject;
  Major: Variant;
  Minor: Variant;
  Release: Variant;
  Build: Variant;
begin
  // GxOtaGetCurrentProject is a function in GExpert's GX_OTAUtils unit that returns the current IOTAProject
  Project := GxOtaGetCurrentProject;
  if Assigned(Project) then begin
    ProjectOptions := Project.ProjectOptions;
    if Assigned(ProjectOptions) then begin
      Major := ProjectOptions.Values['MajorVersion'];
      Minor := ProjectOptions.Values['MinorVersion'];
      Release := ProjectOptions.Values['Release'];
      Build := ProjectOptions.Values['Build'];
    end;
  end;
end;

在 Delphi 10.2.3 中,无论实际版本号如何,都将始终返回版本 1.0.0.0。这是“简单”的情况:VCL 应用程序。

我还尝试了返回 TStrings 指针的“Keys”值。在那里我还得到了 FileVersion 字符串,但它始终是“1.0.0.0”。

我想这与对各种平台和配置的支持有关,但我找不到任何关于它现在应该如何工作的文档。我还在 ToolsAPI.pas 中搜索了“版本”和“发布”,但没有发现任何可疑的情况。

有关如何获取 Delphi 10.2 中的版本信息的任何提示吗?


版本信息的有效值存储在单独的配置中构建配置 and platform。要访问配置,首先获取一个接口IOTA项目选项配置:

cfgOpt := project.ProjectOptions as IOTAProjectOptionsConfigurations;

然后迭代每个IOTA构建配置:

  for I := 0 to cfgOpt.ConfigurationCount - 1 do
  begin
    cfg := cfgOpt.Configurations[I];
    DoWhatEverWith(cfg);
  end;

请注意,每个IOTA构建配置可以有多个平台和子级:

  for S in cfg.Platforms do
  begin
    DoWhatEverWith(cfg.PlatformConfiguration[S]);
  end;

  for I := 0 to cfg.ChildCount - 1 do
  begin
    DoWhatEverWith(cfg.Children[I]);
  end;

根据当前选择的平台和构建配置,可以使用不同的版本信息值。可以从以下位置检索当前平台和配置IOTA项目特性当前平台 and 当前配置.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Delphi 10.2中使用ToolsAPI获取当前项目的版本号 的相关文章

随机推荐