4

我们正在为 SCC 使用 Subversion。我们的存储库中有大量构建环境,因此我们可以检查给定版本并重建它与当时使用的版本相当接近。我们现在有以下内容:

  • InnoSetup 二进制文件
  • 第三方组件
  • VCL(包括印地)
  • 我们的来源(当然)
  • Finalbuilder 项目文件

唯一缺少的是 Delphi 本身的二进制文件 - 我想知道是否有最小的文件集可以复制到存储库并运行。

谢谢

4

4 回答 4

3

好的 - 我想我有这个工作。我能够在没有安装任何我们的开发工具(RAD Studio、EurekaLog 等)的 VMware 客户机下编译我们的应用程序。基本上我有一个包含这些文件的编译器文件夹:

原来你只需要几个文件。基本上这些文件:

02/05/2008 05:13 PM 89,088 BorDebug.dll  
2009 年 11 月 2 日下午 06:02 57,344 Borland.Build.Tasks.Common.dll  
11/02/2009 06:02 PM 147,456 Borland.Build.Tasks.Delphi.dll  
2009 年 11 月 2 日 06:02 PM 49,152 Borland.Build.Tasks.Shared.dll  
2009 年 11 月 2 日下午 06:02 20,480 Borland.Globalization.dll  
08/19/2009 05:00 PM 22,370 CodeGear.Common.Targets  
08/19/2009 05:00 PM 32,928 CodeGear.Delphi.Targets  
11/02/2009 06:02 PM 1,328,128 DCC32.EXE  
02/25/2010 08:17 AM 979,456 ecc32.exe  
2009 年 11 月 2 日下午 06:02 314,368 lnkdfm140.dll  
02/25/2010 08:11 AM 40,960 Process.exe  
08/19/2009 05:00 PM 75,264 rlink32.dll  
06/15/2010 08:41 AM 185 rsvars.bat  

也许我也可以剪掉更多这些文件。我们还有一个 components 文件夹,其中包含所有内置 VCL 文件(基本上是 lib 和 Indy10 文件夹)和我们的第三方组件。在 Delphi 中,我将库路径设置为空白——这一步是关键。然后我将该库路径设置放在特定的项目选项中。我们使用环境变量来指定内置文件和第三方文件的位置。这些环境变量在 RAD Studio 中设置,然后可以在执行发布编译时通过命令行设置。所以我们有一个像这样的BAT文件:

SET BDS=C:\_Releases\编译器
SET COREFILES=C:\_Components\D2010
设置组件=C:\_组件
SET LANGDIR=EN

我们的库路径如下所示:

$(COREFILES)\lib;$(COREFILES)\Indy10;$(COMPONENTS)\EurekaLog;$(COMPONENTS)\Jcl\source\common;$(COMPONENTS)\Jcl\source\windows

现在,在我们只有 MSBuild 和上述原始文件的原始 VMware 会话中,我可以调用这些命令:

msbuild project.dproj -t:rebuild /p:config=Release  
ecc32 --el_alter_exe"project.dproj"

它构建了我们的应用程序。当然,我们只是使用简化了事情的 Delphi32 个性,但对我们来说,我认为这将非常有用。

于 2010-06-15T14:55:15.307 回答
2

如果您想创建一个可以轻松复制的构建环境,您最好设置一个虚拟机并将图像托管在网络共享上,而不是尝试通过 SVN 服务器处理数千个单独的文件。

于 2010-06-15T01:03:15.360 回答
2

我们将自己着手为 Delphi 2010 进行设置。我们以前(实际上现在)已经为我们的 FinalBuilder 自动构建使用 Delphi 2006 设置了这个设置。

在这种情况下,我们所做的只是复制 Delphi 2006 本身的安装文件夹的内容(Program Files\Borland\BDS\4.0)。这就是一切,Bin,Lib ......很多(即与我们的开发机器上的完全一样)。

开发机器和构建机器之间的唯一区别是 Delphi 实际上并没有安装在该机器上,但这不会影响运行命令行编译器的能力(这是我们在自动构建中使用的)。

我们唯一要做的另一件事是手动创建一些注册表项,以便 FinalBuilder 检测并识别机器上是否存在 Delphi 2006 并提供所需的库路径等。我们通过从dev 机器并导入到构建机器的注册表(生成的 .reg 文件也是我们在存储库中构建配置的一部分)。

我不能说最小的文件集是多少,因为我们不关心节省磁盘空间,只是“以防万一”。您可以通过削减一些脂肪来节省几 MB,但与自动构建环境(源代码、中间产品和编译产品等)的磁盘消耗相比,我怀疑节省的空间微不足道,而且不值得麻烦。

于 2010-06-15T01:40:15.457 回答
1

Delphi 许可证在几个版本前已更新,明确允许在构建 PC 上安装命令行编译器以进行自动构建,因此我同意 Mason 的观点,即设置一台单独的机器是个好主意(虚拟机是好)用于构建。

在将以下树结构(文件夹以及所有包含的文件和子文件夹)从安装了 Delphi(在我的情况下为 2007)的 PC 复制到单独的构建框后,我可以成功地进行 Delphi 命令行构建。似乎不需要输入任何注册表键/值等;它对我来说效果很好。

C:\Program Files
  \CodeGear
    \RAD Studio
      \5.0
        \bin\*.*
        \lib\*.*
        \source\*.*
  \Common Files
    \RAD Studio
      \Shared Assemblies
        \5.0\*.*

我希望 Delphi 2009/2010 是相同/相似的。

我在我们的 SVN 存储库中拥有上述树结构以及我们所有的源代码,因此如果我设置了一台新的构建 PC,我的大部分初始设置都只是简单地在新构建的 PC 上的正确位置执行 SVN Checkout。

于 2010-06-15T01:31:53.247 回答