1

我发现自己支持的软件有时无法在不同的 PC 上运行。通常它们是新的 Win7 安装。

错误消息是“此应用程序无法启动,因为未找到 rtl90.bpl...”

为了纠正这个问题,我有 PC 支持将 rtl90.bpl 文件复制到用户的 system32 目录,但是我想确保这个错误不再发生。

我用谷歌搜索并发现以下链接rtl90.bpl 问题

我的问题是:“使用运行时包构建”选项已在该程序的项目选项下选择,并且似乎对遇到问题的用户没有任何影响。

我是否必须专门将缺少的 rtl90.bpl 文件添加到项目中?

请注意,我对 delphi 编程知之甚少。

4

2 回答 2

4

由于您在项目中被标记为选项Build with runtime packages,因此最终的 exe 将需要与一些额外的 bpl 文件一起部署。为避免这种依赖关系,您必须取消选中该选项以构建您的项目。现在你的 exe 会更大但没有依赖关系。

于 2012-04-16T06:23:18.797 回答
3

该包是包含 VCL 的运行时包。您可能还需要为 RTL 和可能的其他一些部署 rtl90.bpl。通过启用运行时包,您承诺将这些包部署到可执行文件可以找到它们的位置。

您有 3 个主要选项:

  1. 将包部署到 PATH 变量中包含的位置。通常这意味着修改 PATH。您永远不应该写入系统目录。它归系统所有,您应该尊重这一点。
  2. 将包部署到与可执行文件相同的目录。
  3. 禁用运行时包,从而构建一个独立的可执行文件。RTL/VCL 代码将静态链接到您的可执行文件中。

在我看来,选项 1 很差。依赖 PATH 变量和修改它的能力是脆弱的。选项 2 有效,但与选项 3 相比似乎毫无意义。当您选择 2 时,您部署的文件和文件更大,所以为什么要选择它。

总之,我推荐选项 3。将所有 RTL/VCL 代码静态链接到您的可执行文件中。

在我看来,选项 2 获胜的唯一情况是当您有多个相关的可执行文件都部署到同一个目录时。在这种情况下,共享 RTL/VCL 代码是有意义的。

于 2012-04-16T06:36:28.003 回答