2

我正在尝试保存一些 Delphi 设置信息以加快 Delphi 安装速度,但我对注册表键值顺序行为感到非常困惑。我导出了我的 Delphi XE2 注册表项:

HKEY_CURRENT_USER\Software\Embarcadero\BDS\9.0\Known Packages

到 *.reg 文件。从注册表中删除它并重新加载 reg 文件后,Delphi 抱怨缺少 bpl。当我查看密钥列表时,它现在都是按字母顺序排列的——它不是 reg 文件中的那个顺序。我假设在包依赖于另一个包的地方,必须首先列出依赖的包。我对吗?

然后我使用 Inno Setup 按此顺序创建三个键值 - B、A、D。运行后,注册表显示 A、B、D 键顺序。

作为一个组件安装程序,我很少有依赖包。我可以使用什么方法按照我选择的顺序保留密钥?一定是做了什么,因为我有一个按照 Delphi 要求的顺序的 reg 文件。一个出口然后一个进口是不对称的,这似乎很疯狂。

4

1 回答 1

4

正如您所发现的,这确实与注册表枚举顺序与字母顺序有关。

Delphi 以枚举顺序加载包,这并不总是按字母顺序。
我还没有找到显示枚举顺序的注册表编辑工具,它们似乎总是显示字母顺序。

这在以下情况下尤其重要:

  1. BPL 文件不在 PATH 上,Delphi 无法解析依赖的 BPL 文件本身。
  2. 依赖顺序与字母顺序不同

当您无法将 BPL 文件放在 PATH 上时,您应该按照您希望加载 BPL 文件的顺序添加注册表值(您可能需要多个具有相同键的部分来执行此操作)。

或者您应该使依赖顺序按字母顺序 (;

于 2012-10-22T13:17:08.233 回答