【问题标题】:Delphi .res file changerDelphi .res 文件转换器
【发布时间】:2010-09-27 09:00:06
【问题描述】:

我正在寻找能够读取和修改 Delphi .res 文件的即用型代码。问题是我需要创建一个应用程序来一次编译许多 Delphi 项目(使用 dcc32.exe 文件)。但是,我需要在编译之前更改文件版本和语言,据我所知,我必须修改 .res 文件才能做到这一点。

您是否遇到过任何可以为我提供 .res 文件接口的代码,允许我修改其中包含的数据?问题是我只想更改这两条信息,保持其余信息不变。这就是为什么我不能基于脚本编译我自己的 .res 文件。

从命令行执行的应用程序也可以,如果它允许使用参数调用并执行我需要它执行的操作。

非常感谢您!

【问题讨论】:

  • 您也可以投票支持 QC #70567(不要将版本信息存储在已编译的 .res 文件中 - 以便于操作)和 QC #70564(允许从命令设置版本信息行)

标签: delphi file resources


【解决方案1】:

如果您只需要添加文件版本资源然后创建appver.rc 文件,使用brcc32 编译它并在您的应用程序单元之一(例如appver.pas)添加{$R appver.res}(正如玛丽安注意到您必须关闭 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 用于解决原因,而不仅仅是处理症状。在您的回答中可能值得一提的是,要使其在 IDE 中也能正常工作,您需要在项目选项中关闭“包含版本”。 IDE 不允许您为 dll 项目执行某些操作,您可能必须手动“破解”dproj。
【解决方案2】:

对于所有 .res,请查看 Colin Wilson 的“XN 资源编辑器”,他提供了源代码:http://www.wilsonc.demon.co.uk/d10resourceeditor.htm 可能您只需要他的资源实用程序库: http://www.wilsonc.demon.co.uk/d9resourceutils.htm 我没有使用过这个来源,但如果我需要它,那是我首先要看的地方。顺便说一句,他的资源编辑器非常有用。

【讨论】:

  • 链接失效了
【解决方案3】:

ChangeRes 似乎符合您的需求。

【讨论】:

    【解决方案4】:

    查看来源:

    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 类。

    【讨论】:

      【解决方案5】:

      检查www.heaventools.com 上的资源调谐器控制台。他们将该产品定位为像您这样的任务。还有一个免费的rcstamp tool on CodeProject

      【讨论】:

        猜你喜欢
        • 2011-01-20
        • 2012-08-08
        • 2010-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-25
        • 1970-01-01
        相关资源
        最近更新 更多