我正在尝试为我制作的自定义组件制作一个包装。它基于几个库,包括Graphics32,GraphicEx和CCR.Exif。

我创建了一个Package项目,编写了包含其Register过程的单元,并向Delphi通知了我有关require部分的其他引用(包括dbrtl.dcp,inet.dcp,soaprtl.dcp,vclimg.dcp,xmlrtl.dcp和dclGraphicEx140。 dcp),并在contains部分中添加了许多单位,以避免有关它隐式发生的警告。该项目可以编译,并且可以在我自己的计算机上安装和使用而不会出现问题。但是,当我想将其安装在另一台计算机上时,麻烦就开始了。最后,我必须从我使用的所有第3方组件中复制所有DCU,还要从GraphicEx复制DCP和BPL,甚至必须安装它们。

提供大量文件简直是可耻但可克服,但必须同时安装其他软件包也绝非易事。我可以通过在contains部分中放置更多单元来摆脱DCP和BPL的问题,但是这会导致在我自己安装了GraphicEx的计算机上出现错误消息。这让我感到困惑,因为使用Graphics32不会发生类似的事情...

无论如何,我应如何使发行量降至最低并避免这种情况?我希望团队中的其他开发人员能够使用该程序包,而不必担心我以前所使用的程序包。首先,不能将所有第三方单位都编译到我自己的DCU中吗?

最佳答案

对于编写组件的人来说,您所经历的是很平常的事情。分布总是这样。程序包不携带其他程序包,而是要引用它们。这是他们的本性。

为了克服这种情况,我总是像对待要出售的产品一样对待我的组件:我建立了一个安装向导,用于分发和注册包装所需的一切。

在我的情况下,InnoSetup可以很好地工作(http://www.jrsoftware.org/isinfo.php)。

10-04 18:37