如何在创建安装程序时从设计时包中确保正确的“require”定义Delphi运行时包

时间:2011-08-01 09:50:38

标签: delphi deployment runtime packages design-time

我正在为当前没有的组件(例如优秀的SynEdit编辑器库)创建一个安装程序,这也让我能够比我更好地理解设计和运行时包。

我想确保最干净的部署,所以我理解许多单元将进入运行时包,并且我可以使用'build with runtime packages'及时部署,这样一切都很好。通常,设计时包需要运行时包,这就是我遇到麻烦的地方。通常我创建一个项目组,其中包含运行时包项目(xxx-RXE),后跟设计时包项目(xxx-DXE)。做一个所有,一切都很好。我在我自己和install the design-time package into the IDE using the registry的库路径中以BPL,DCP和DCU形式部署这两个包。然后将库路径添加到环境设置中。当我打开Delphi(这对于D7和XE都是如此)我得到'无法加载包XXXX-DXE,找不到库包xxx-RXE.bpl。如果我通过修改设计时包来从“需要”中删除xxx-RXE.dcp并直接将其替换为单位,那么一切都很好。

我试图避免将任何东西戳到Delphi文件夹中,所以我的项目结构是这样的(只显示XE,D7类似)。包被设置为输出单位,bpl和dcp为“.. \ Library \ Delphi15”,所有包都给出了搜索路径“.. \ Source”和设计时包的附加搜索路径“.. \ Library \ Delphi15“(找到它需要的运行时包)。

\Root
  \Packages
    xxx.groupproj
    xxx-RXE.dpk
    xxx-DXE.dpk 
  \Library
    \Delphi15
      (output of all dcus, dcp's, bpl's etc. Manually added *.res, *.inc and *.dfm's).     
  \Source
    (The original project source files as used by the packages).

Delphi没有使用上述文件夹,在我的安装程序创建了以下部署文件夹之前,我没有对Delphi IDE做任何事情:

c:\Program Files\xxx\Library\Delphi15

(包含所有BPL,DCP,DCU等等,也是放入环境库路径的路径)。

所以我不清楚的是,如果所有文件都在该文件夹中并且有一个路径,为什么德尔福不能看到它们?

感谢您的帮助。

3 个答案:

答案 0 :(得分:3)

刚刚阅读“无法加载包XXXX-DXE,未找到库包xxx-RXE.bpl”引发了不良记忆。当包含DCP(和/或BPL?)的路径未包含在 Windows 环境变量PATH中时,通常会出现此错误。

当安装的软件包引用另一个软件包时,此引用软件包的正常“Windows库搜索行为”会启动(在Delphi启动时)。 此时没有Delphi路径配置。因此,您的安装程序也需要修改PATH env变量(或者复制已经包含的某个地方的文件)。

答案 1 :(得分:2)

我很确定DCP必须在Delphi的DCP文件夹中。在我的Delphi 2010和Windows 7机器上,它位于C:\Users\Public\Documents\Rad Studio\7.0\Dcp

在注册表中搜索,此路径位于值HKCU\Software\Codegear\BDS\7.0\Library下的Package DCP Output中。当然,你必须扩展字符串,因为它在那里$(BDSCOMMONDIR)\Dcp

我也会将运行时BPL放在Delphi的默认位置,这对我来说也是C:\Users\Public\Documents\Rad Studio\7.0\Dcp

答案 2 :(得分:2)

“未找到库包xxx-RXE.bpl”可能会产生误导。我相信它实际上意味着LoadPackage由于某种原因失败了。这可能是由Windows路径中不存在的依赖包引起的。