2010-09-27 84 views
8

我正在寻找一个现成的代码,将能够读取和修改德尔福.res文件。问题是我需要创建一个将一次编译许多Delphi项目的应用程序(使用dcc32.exe文件)。但是,我必须在编译之前更改文件版本和语言,并且据我所知,必须修改.res文件才能完成此操作。德尔福.res文件更换器

你有没有遇到过任何代码,可以给我一个.res文件的接口,允许我修改其中包含的数据?事情是,我只想改变这两条信息,保持其余的不变。这就是为什么我不能基于脚本编译自己的.res文件。

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

非常感谢您提前!

+0

您也可以为QC#70567投票(不要将版本信息存储在已编译的.res文件中 - 以便于操作)和QC#70564(允许从命令行设置版本信息) – 2010-09-27 12:55:59

回答

10

如果你需要的是增加文件版本资源,那么创建appver.rc文件,与brcc32以及应用中的单位之一编译(例如appver.pas)添加{$R appver.res}(如玛丽安注意到你必须关闭德尔福项目的选择包括版本信息)。

我创建了一个命令行程序,在.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中也能正常工作,您需要关闭项目选项中的“包含版本”。 IDE不允许你为dll项目执行任何操作,因此可能需要手动“修改”dproj。 – 2010-09-27 09:32:56

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 

该实用工具使用由克里斯·莫里斯撰写TIncVerRc类。