Cha*_*ang 6 delphi resources rc package
我使用自己的.rc文件生成自定义资源条目,包括版本信息.
我的library.rc文件是:
#include "app.rc.h"
VS_VERSION_INFO VERSIONINFO
FILEVERSION _FileVersion
PRODUCTVERSION _FileVersion
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
FILEFLAGS 0
FILEOS VOS__WINDOWS32
FILETYPE VFT_APP
FILESUBTYPE VFT2_UNKNOWN
BEGIN
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x0409, 1252
END
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904E4"
BEGIN
VALUE "InternalName", App_InternalName "\0"
VALUE "CompanyName", App_CompanyName "\0"
VALUE "FileDescription", App_ProductName "\0"
VALUE "FileVersion", _FileVersionStr "\0"
VALUE "ProductName", App_ProductName "\0"
VALUE "ProductEdition", App_ProductEdition "\0"
VALUE "LegalCopyright", "Copyright \251 " App_CompanyName "\0"
VALUE "CompanyURL", App_CompanyURL "\0"
VALUE "ProductURL", App_ProductURL "\0"
VALUE "SupportURL", App_SupportURL "\0"
VALUE "AppRegistryPath", App_RegistryPath "\0"
END
END
END
Run Code Online (Sandbox Code Playgroud)
我通过Project |将.rc文件添加到包项目文件中 添加到项目.到目前为止,我的package.dpk文件是这样的:
package SQL.Alpha.resource.core;
{$R *.res}
{$R 'library.res'}
{$ALIGN 8}
Run Code Online (Sandbox Code Playgroud)
package.dproj文件具有RcCompile条目:
<RcCompile Include="..\..\build\rc\library.rc">
<Form>library.res</Form>
</RcCompile>
Run Code Online (Sandbox Code Playgroud)
当我编译包时,一切看起来都不错,但它有一个警告:
[DCC Warning] W1056 Warning: Duplicate resource: Type 16 (VERSIONINFO), ID 1; File library.res resource kept; file package.res resource discarded.
Run Code Online (Sandbox Code Playgroud)
这是因为包本身生成了自己的package.res文件,其中包含MainIcon和VersionInfo条目.VersionInfo与我自己的VersionInfo条目冲突.
然后我尝试删除dpk文件中的{$ R*.res}:
package SQL.Alpha.resource.core;
{$R 'library.res'}
{$ALIGN 8}
Run Code Online (Sandbox Code Playgroud)
重建项目,一切正常.警告消失了.
但是,有一些副作用会手动删除{$ R*.res}:
我可以通过在package.dpk文件中再次删除{$ R*.res}来容忍第一个副作用.
然而,第二个副作用是我无法控制的.package.dproj中缺少的RcCompile将导致rc文件不再由brcc32编译.删除文件系统中的.res文件将导致编译错误.
有没有人有想法如何克服这个问题?谢谢.
在Delphi XE2中,您现在可以通过Project |删除Delphi包(*.bpl)的内置版本信息.选项.导航到"版本信息"包,并取消选中"在项目中包含版本信息".
通过这样做,内置版本信息将不会在*.res文件中生成,因此编译器警告消息将不会显示.您可以根据需要使用自定义的*.rc文件.