Delphi包文件在注册时的位置

Delphi包文件在注册时的位置,delphi,delphi-10-seattle,Delphi,Delphi 10 Seattle,我正在尝试将新的HTML帮助文件添加到Delphi 10中。根据文档,这需要注册您自己的菜单项: 我唯一缺少的是如何在运行时(实际上是设计/注册时)确定组件包的安装目录,以便在实践中定义\your\local\help\file的路径。我的帮助文件将相对于.bpl文件安装,因此我只需要找到该路径 我能想出来的是,我可能应该使用工具SAPIIOTAPackageServices接口,也许?你可以通过调用来获取你的包的可执行文件名。我自己设法使用了这个版本,它也可以工作,但太复杂了: var

我正在尝试将新的HTML帮助文件添加到Delphi 10中。根据文档,这需要注册您自己的菜单项:

我唯一缺少的是如何在运行时(实际上是设计/注册时)确定组件包的安装目录,以便在实践中定义\your\local\help\file的
路径。我的帮助文件将相对于.bpl文件安装,因此我只需要找到该路径


我能想出来的是,我可能应该使用工具SAPI
IOTAPackageServices
接口,也许?

你可以通过调用来获取你的包的可执行文件名。

我自己设法使用了这个版本,它也可以工作,但太复杂了:

var
  PackageServices: IOTAPackageServices;
  I: Integer;
  Package: IOTAPackageInfo;
...
  if Supports(BorlandIDEServices, IOTAPackageServices, PackageServices) then
  begin
    I := 0;
    while True do
    try
      Package := PackageServices.Package[I];
      if Package = nil then
        break;
      if StartsStr('MyProduct', Package.Name) then
      begin
        // The help file is on the "side" directory of the package
        HelpFilePath := ExtractFilePath(Package.FileName) + '..\Help\MyProduct.chm';
      end;
      Inc(I);
    except
        break;
    end;
  end;

我相信它只是相对于包,没有绝对的路径。编辑实际上可能不是这样,在看了更多的链接之后。Delphi文档一直有一个习惯,即忽略现实场景中的重要信息。是的,Delphi 10附带的文档页面版本包含甚至未编译的代码。。。在在线页面上,代码似乎是固定的,但仍然不是很整洁。此外,我不知道上下文敏感组件帮助是否应该工作-至少它不适用于Delphi 10附带的Indy组件-我也不能让它适用于我的