【发布时间】:2012-04-08 20:30:18
【问题描述】:
我正在尝试为我制作的自定义组件制作一个包。它基于多个库,包括 Graphics32、GraphicEx 和 CCR.Exif。
我创建了一个 Package 项目,编写了包含其注册过程的单元,添加了一些 Delphi 通知我的额外参考到 requires 部分(包括 dbrtl.dcp、inet .dcp、soaprtl.dcp、vclimg.dcp、xmlrtl.dcp 和 dclGraphicEx140.dcp),并在 contains 部分添加了许多单位,以避免隐式发生有关它的警告。该项目可以编译并且可以在我自己的机器上安装和使用而不会出现问题。但是,当我想在另一台机器上安装它时,麻烦就开始了。最后,我不得不从我使用的所有第 3 方组件中复制所有 DCU,以及来自 GraphicEx 的 DCP 和 BPL,我什至必须安装它们。
提供大量文件很麻烦,但可以克服,但必须同时安装其他软件包是不行的。我可以通过在 contains 部分中放置更多单元来摆脱 DCP 和 BPL,但这会导致在我自己的实际安装了 GraphicEx 的机器上出现错误消息。这让我很困惑,因为 Graphics32 不会发生这样的事情......
无论如何,我如何将我的分发量保持在最低限度并避免这种情况?我希望我团队中的其他开发人员能够使用该包,而不必担心我用来构建它的内容。首先,不能将所有 3rd 方单元都编译到我自己的 DCU 中吗?
【问题讨论】:
-
组件安装是 Delphi 的耻辱,现在 Embarcadero 经常忽略。
-
你正在做什么样的分发,给编译应用程序的用户或其他开发人员以便他们在 IDE 中使用?
-
我同意@Serg。当我需要部署依赖的组件时,我总是想上吊。我什至从不费心创建包。我在运行时加载了我的大部分组件以避免那个噩梦......
-
那么第 3 方组件开发人员是如何做到这一点的呢?他们总是只使用 VCL 吗?!我无法想象最好的解决方案是将所有使用过的单位手动复制到我自己的,然后将它们从 uses... 中删除
-
@tvdien,我见过的大多数第 3 方 VCL 仅依赖于“本机”VCL/RTL,除非他们使用 众所周知 其他第 3 方组件 作为选项比如“TNT”(通常是编译器指令选项)或者需要添加PNG支持(所以他们使用
PngImage作为选项),或者基于VST等等等...当然这一切都取决于 Delphi 版本,因为大多数知名的 3rd 方组件(非商业组件)现在都集成在较新版本的 Delphi(即 XE/2)中。
标签: delphi delphi-2010 custom-component graphicex