使用DCC32.exe在Delphi中进行构建

6

你好,我正在使用以下命令构建我的Delphi项目:

Command: dcc32.exe project.dpr d:\exe_folder

上述命令运行良好,我能够在输出文件夹中创建exe。但是当我通过IDE构建相同的项目时,每次构建都会自动增加版本号,因为我已经勾选了“自动增加构建号”选项。但是通过命令行执行时,构建号没有增加。有没有任何选项可以通过命令行修改构建信息/版本信息?谢谢。
3个回答

10

dcc32.exe无法直接增加构建号。版本信息(包括构建号)来自*.res文件,该文件由IDE每次更新。要绕过IDE,您可以编写带有版本信息部分的RC脚本,以及一个小应用程序,可以在此脚本中增加构建号。然后,您可以创建批处理文件,其中包含以下操作:

  1. 运行您的应用程序以增加构建号
  2. 使用brcc32.exe编译RC脚本(输入为 - RC脚本,输出为 - RES文件)
  3. 使用新的.res文件与dcc32.exe编译您的应用程序

P.S.不要忘记将包含版本信息的RES文件包含在您的项目中:

{$R "yourversioninfofile.res"} 

请参考以下链接,了解 VERSIONINFO 部分的 RC 语法示例:http://msdn.microsoft.com/zh-cn/library/windows/desktop/aa381058(v=vs.85).aspx - Stijn Sanders
2
  1. 读取现有的.res文件以获取当前的构建号。
- David Heffernan

4
不,构建号的自动递增是IDE功能。您可能需要使用适当的脚本语言编写自己的自动递增设施。
如果您想要在IDE的等价物旁边使用自己的命令行自动递增,需要执行以下操作:
1. 让您的脚本读取由IDE管理的.res文件。 2. 增加构建号。 3. 重新创建.res文件。 4. 构建项目。
为使其生效,我认为您需要对IDE生成的.res文件进行反向工程分析。但这很容易。任何体面的资源编辑工具都将帮助您做到这一点。

非常感谢您的回答。如果有自动增量的提示,将不胜感激。我正在使用project.rc文件,在其中提及版本信息。我手动更改.rc文件中的版本信息,然后通过cmd进行构建,才能生效。那么这意味着我必须自动增加.rc文件中的更改。我的理解正确吗?还是我需要更改其他地方? - Nalu
1
有这个网址:http://sourceforge.net/p/dzprepbuild/home/Home/,但是由于您使用的是Delphi 5.0,不确定它能提供多少帮助。 - Shambhala
没错。在构建脚本中更新.rc文件,编译成.res文件。不确定是否可以在IDE工具旁边使用自己的脚本版本。个人认为IDE工具的可定制性不够满足我的需求,所以从不使用它。 - David Heffernan

1

嗨@dummzeuch,感谢您提供的程序。但是当我运行它时,出现了错误:dzPrepBuild版本1.3.0.353构建于2011-02-27,异常:文件不存在(ENoVersionInfo)。有什么想法吗?谢谢sam。 - SamChen
@SamChen 请查看 http://sourceforge.net/p/dzlib/code/HEAD/tree/buildtools/trunk/PrepBuild.exe?format=raw 获取最新版本,该版本一定可以正常工作。 - dummzeuch
谢谢您的回复,但是它仍然出现错误:dzPrepBuild版本1.3.1.506建于2013年03月04日。错误:文件不存在(ENoVersionInfo)。我使用的命令是:prepbuild --ReadDof=ProjectName --IncBuild --exec=prep.cmd。dof文件确实存在于项目文件夹中。 - SamChen
这些是准确的错误信息吗?通常它们应该包含完整的文件名。 - dummzeuch
是的,那正是它所说的。嗯。无论如何谢谢。 - SamChen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接