Delphi .res文件修改工具

9
我正在寻找一个现成的代码,能够读取和修改Delphi .res文件。我的应用程序需要同时编译多个Delphi项目(使用dcc32.exe文件)。然而,在编译之前,我需要更改文件版本和语言,据我所知,必须修改.res文件才能实现这一点。
你是否遇到过任何可以给我提供.res文件接口的代码,使我能够修改其中包含的数据?我只想更改其中的两个信息,而保留其余部分不变。这就是为什么我不能基于脚本编译自己的.res文件。
如果有一个可以通过参数调用并满足我的需求的命令行应用程序也可以。
非常感谢!

您还可以为QC #70567(不要在编译的.res文件中存储版本信息,以便更轻松地进行操作)和QC #70564(允许从命令行设置版本信息)投票。 - user160694
5个回答

11
如果您只需要添加文件版本资源,则创建appver.rc文件,使用brcc32编译它,在您的应用程序单元之一(例如appver.pas)中添加{$R appver.res}(正如Marian所指出的,您必须关闭Delphi项目选项以包含版本信息)。
我创建了命令行程序,可以在.rc文件中增加构建号,使用新版本在SVN中创建新分支/标记,将.rc编译为.res,并构建应用程序。
我的带有此类信息的.rc文件(波兰语)如下:
#define IDR_VERSION1  1
IDR_VERSION1 VERSIONINFO LOADONCALL MOVEABLE DISCARDABLE IMPURE
FILEVERSION 7,28,7,17
PRODUCTVERSION 7,28,7,17
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
FILEFLAGS 0
FILEOS VOS_DOS_WINDOWS32
FILETYPE VFT_DLL
FILESUBTYPE 0
{
 BLOCK "StringFileInfo"
 {
  BLOCK "041504E2"
  {
   VALUE "CompanyName", "xxx\0"
   VALUE "FileDescription", "yyy\0"
   VALUE "ProductName", "zzz\0"
   VALUE "FileVersion", "7.28.7.17\0"
   VALUE "ProductVersion", "7.28.7.17\0"
  }

 }

 BLOCK "VarFileInfo"
 {
  VALUE "Translation", 0x0415, 1250
 }

}

1
+1 是为了解决问题的根本原因,而不仅仅是应对表面症状。值得一提的是,为了在IDE中也能够正常工作,您需要在项目选项中关闭“包括版本”选项。对于dll项目,IDE将无法允许您这样做,您可能需要手动“黑客攻击”dproj文件来实现。 - Marjan Venema

3

1
链接已失效。 - Gabriel

3

有一个名为ChangeRes的工具似乎符合您的需求。


2

查看源代码:

http://code.google.com/p/gedemin/source/browse/trunk#trunk/Gedemin/Utility/IncVerRC

这是我们的实用工具,它可以读取带有版本信息的.RC文件,并递增构建号。我们将其用于内部构建过程。以下是一段摘录:

incverrc.exe ..\gedemin\gedemin.rc
"%delphi_path%\brcc32.exe" -fogedemin.res -i..\images gedemin.rc
"%delphi_path%\dcc32.exe" -b gedemin.dpr

这个工具使用Chris Morris编写的TIncVerRc类。

1

请查看www.heaventools.com上的资源调整器控制台。他们将该产品定位为类似于您的任务。此外,CodeProject上还有一个免费的rcstamp工具


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