2011-03-02 76 views
1

我正在寻找一个优雅的解决方案,以便如何准备Delphi 2010项目的IDE和构建脚本。目前,我能够在启动IDE之前为必需的已知软件包添加到注册表中,为此项目创建一个自定义注册表项,但大多数设计时间软件包都需要运行时软件包,并且在加载IDE期间出现错误(或者在安装中选择软件包时包窗口)。为项目组织多个Delphi库软件包的最佳方法是什么?

迁移所有的运行时包到$(BDSCOMMONDIR)\栉Bpl的作品,这是唯一的地方德尔福似乎程序包的相关搜索时去看你。是否有可能强制delphi在任意多个位置查找软件包依赖关系?在下面的例子中,这些位置是:$(Projects)\ Delphi2010 \ CommonControls \ bpl \和$(ExternalComponents)\ Delphi2010 \ DevExpress \ Library \ Delphi14。

我使用的注册表文件是:

Windows Registry Editor Version 5.00 

[-HKEY_CURRENT_USER\Software\CodeGear\ProductName\7.0\Disabled Packages] 
[-HKEY_CURRENT_USER\Software\CodeGear\ProductName\7.0\Known Packages] 

[HKEY_CURRENT_USER\Software\CodeGear\ProductName\7.0\Known Packages] 
"$(Projects)\\Delphi2010\\CommonControls\\bpl\\CommonControls.bpl"="Common Controls" 
"$(ExternalComponents)\\Delphi2010\\DevExpress\\Library\\Delphi14\\dcldxCoreD14.bpl"="ExpressCoreLibrary by Developer Express Inc." 
"$(ExternalComponents)\\Delphi2010\\DevExpress\\Library\\Delphi14\\dclcxLibraryD14.bpl"="Express Cross Platform Library by Developer Express Inc." 
"$(ExternalComponents)\\Delphi2010\\DevExpress\\Library\\Delphi14\\dcldxDockingD14.bpl"="ExpressDocking Library by Developer Express Inc." 
"$(ExternalComponents)\\Delphi2010\\DevExpress\\Library\\Delphi14\\dclcxSpreadSheetD14.bpl"="ExpressSpreadSheet by Developer Express Inc." 
"$(ExternalComponents)\\Delphi2010\\DevExpress\\Library\\Delphi14\\dcldxSBD14.bpl"="ExpressSideBar by Developer Express Inc." 
"$(ExternalComponents)\\Delphi2010\\DevExpress\\Library\\Delphi14\\dcldxBarD14.bpl"="ExpressBars by Developer Express Inc." 
"$(ExternalComponents)\\Delphi2010\\DevExpress\\Library\\Delphi14\\dcldxBarDBNavD14.bpl"="ExpressBars DBNavigator by Developer Express Inc." 
"$(ExternalComponents)\\Delphi2010\\DevExpress\\Library\\Delphi14\\dcldxBarExtDBItemsD14.bpl"="ExpressBars extended DB items by Developer Express Inc." 
"$(ExternalComponents)\\Delphi2010\\DevExpress\\Library\\Delphi14\\dcldxBarExtItemsD14.bpl"="ExpressBars extended items by Developer Express Inc." 
"$(ExternalComponents)\\Delphi2010\\DevExpress\\Library\\Delphi14\\dcldxRibbonD14.bpl"="ExpressBars Ribbon controls by Developer Express Inc." 

而且一个批处理文件来启动IDE:

regedit.exe /S ProductName.reg 
start "delphi" "%DELPHI2010%\bin\bds.exe" -rProductName 

回答

3

所有德尔福要求是运行包的系统路径上的某处。

如果德尔福似乎在是BDSCOMMONDIR文件夹只关注,因为这是唯一的文件夹,您和您的第三方BPL的,这也是你的系统路径。

因此,所有您需要做的就是将$(Projects)\Delphi2010\CommonControls\bpl\$(ExternalComponents)\Delphi2010\DevExpress\Library\Delphi14的值添加到您的系统路径。

然而,该系统的路径在长度上受到限制。如果你有足够的组件库,这种方法很快就可以完成。所以你真的需要考虑把所有的运行时库放到一个目录中。或者使用两个:(一个用于您自己的运行时库和一个用于第三方运行时库)

并且这不需要是用于BDSCOMMONDIR环境变量的默认文件夹。这是BDSCOMMONDIR环境变量指向的简单方法,只需使用工具|环境选项|环境变量添加一个覆盖

将覆盖添加到希望所有第三方(运行时)库去的位置后,重新编译他们如果组件很乖,他们应该使用默认设置为自己的输出位置,这意味着他们的BPL的,应在新的位置结束。

+0

感谢您一个叙述专业答案。我将创建两个bpl文件夹,用于内部库和较少更改的第三方内容。看起来很合理。 – too 2011-03-02 15:47:31

相关问题