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

在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中获取版本信息的任何提示?

乌韦·拉贝(Uwe Raabe)

版本信息的有效值存储在用于构建配置平台的单独配置中要访问配置,请首先获取IOTAProjectOptionsConfigurations的接口

cfgOpt := project.ProjectOptions as IOTAProjectOptionsConfigurations;

然后遍历每个IOTABuildConfiguration

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

请注意,每个IOTABuildConfiguration可以具有多个平台和子代:

  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;

根据当前选择的平台和构建配置,可以使用不同的版本信息值。可以从IOTAProject属性CurrentPlatformCurrentConfiguration中检索当前平台和配置

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在jsp页面中获取Maven项目的版本号?

Delphi 10 Indy IdHttp如何在Task中实现OnWork

如何在Delphi 10中使用http组件获取Instagram以下列表

如何使用 Selenium 3.3.1 获取主要的 Safari 10 版本号?

如何在Windows 10 Action Center中使用Delphi来保持吐司通知

如何在Delphi 10中的TTask线程内使用for循环

如何从结帐中获取SVN版本号以在DSL中使用

如何使用sed获取版本号

如何在管道中使用 jenkins 版本号插件

如何在Jenkinsfile中使用jenkins版本号插件?

如何在 Google Cloud Platform 中获取当前项目的组织 ID?

如何在Java中获取Tomcat版本号

如何在 Android 中获取 Jenkins 内部版本号?

如何在OS X中获取Bash版本号

如何在Odoo 10中使用JavaScript获取当前记录?

如何在Delphi XE 10中将JSON字符串返回的日期时间解析为TDateTime

如何在delphi10中将字符串正确编码为UTF8?

如何在 FragmentPagerAdapter 中获取当前项目?

如何在Xamarin表单的ItemTemplate中获取当前项目

如何在Firebase上存储数据-Delphi XE 10

如何在使用*而不是package.json中的版本号时始终获取最新版本?

如何确定在Delphi XE2中注册的OCX的版本号

如何在delphi中使用fmx扩展

如何在DLL Delphi中使用IdFTP

如何在delphi中使用动态数组

如何从shell脚本中的文件中获取版本号?

如何在Powershell中添加参数以更改文件目的地和版本号

如何从给定的XSLT文件中获取版本号。

如何在注册表中获取版本号并使用批处理文件安装新软件?