我们正在为 SCC 使用 Subversion。我们的存储库中有大量构建环境,因此我们可以检查给定版本并重建它与当时使用的版本相当接近。我们现在有以下内容:
- InnoSetup 二进制文件
- 第三方组件
- VCL(包括印地)
- 我们的来源(当然)
- Finalbuilder 项目文件
唯一缺少的是 Delphi 本身的二进制文件 - 我想知道是否有最小的文件集可以复制到存储库并运行。
谢谢
我们正在为 SCC 使用 Subversion。我们的存储库中有大量构建环境,因此我们可以检查给定版本并重建它与当时使用的版本相当接近。我们现在有以下内容:
唯一缺少的是 Delphi 本身的二进制文件 - 我想知道是否有最小的文件集可以复制到存储库并运行。
谢谢
好的 - 我想我有这个工作。我能够在没有安装任何我们的开发工具(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 个性,但对我们来说,我认为这将非常有用。
如果您想创建一个可以轻松复制的构建环境,您最好设置一个虚拟机并将图像托管在网络共享上,而不是尝试通过 SVN 服务器处理数千个单独的文件。
我们将自己着手为 Delphi 2010 进行设置。我们以前(实际上现在)已经为我们的 FinalBuilder 自动构建使用 Delphi 2006 设置了这个设置。
在这种情况下,我们所做的只是复制 Delphi 2006 本身的安装文件夹的内容(Program Files\Borland\BDS\4.0)。这就是一切,Bin,Lib ......很多(即与我们的开发机器上的完全一样)。
开发机器和构建机器之间的唯一区别是 Delphi 实际上并没有安装在该机器上,但这不会影响运行命令行编译器的能力(这是我们在自动构建中使用的)。
我们唯一要做的另一件事是手动创建一些注册表项,以便 FinalBuilder 检测并识别机器上是否存在 Delphi 2006 并提供所需的库路径等。我们通过从dev 机器并导入到构建机器的注册表(生成的 .reg 文件也是我们在存储库中构建配置的一部分)。
我不能说最小的文件集是多少,因为我们不关心节省磁盘空间,只是“以防万一”。您可以通过削减一些脂肪来节省几 MB,但与自动构建环境(源代码、中间产品和编译产品等)的磁盘消耗相比,我怀疑节省的空间微不足道,而且不值得麻烦。
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。