Utilizo mi propio archivo .rc para generar entradas de recursos personalizados, incluida la información de la versión.
Mi archivo library.rc es:
#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
agrego el archivo .rc en el archivo de proyecto de paquete a través del Proyecto | Agregar al proyecto Mi archivo package.dpk es algo como esto hasta ahora:
package SQL.Alpha.resource.core;
{$R *.res}
{$R 'library.res'}
{$ALIGN 8}
El archivo package.dproj tiene RcCompile entrada:
<RcCompile Include="..\..\build\rc\library.rc">
<Form>library.res</Form>
</RcCompile>
Cuando puedo compilar el paquete, todo se ve bien, pero tiene una advertencia:
[DCC Warning] W1056 Warning: Duplicate resource: Type 16 (VERSIONINFO), ID 1; File library.res resource kept; file package.res resource discarded.
Esto se debe al propio envase es generar archivos propios package.res que incluyen entradas y MainIcon versionInfo. Y el VersionInfo tiene un conflicto con mi propia entrada VersionInfo.
Entonces intente extraer {$ R * .res} en el archivo dpk:
package SQL.Alpha.resource.core;
{$R 'library.res'}
{$ALIGN 8}
generar el proyecto y todo funciona bien. La advertencia se ha ido.
Sin embargo, hay algunos efectos secundarios eliminando {$ R * .res} manualmente:
- Delphi IDE agregará el {$ R * .res} de nuevo si intenta agregar nueva unidad en el paquete o hacer y cambios en Project | Opciones ...
- entradas Todo RcCompile en .dproj archivos serán eliminados
puedo tolerar con el primer efecto secundario mediante la eliminación de {$ R * .res} de nuevo en el archivo package.dpk.
Sin embargo, el segundo efecto secundario está fuera de mi control. La falta de RcCompile en package.dproj hará que el archivo rc no sea compilado nuevamente por brcc32. La eliminación de los archivos .res en el sistema de archivos provocará un error en la compilación debido a esto.
¿Alguien tiene ideas para superar este problema? Gracias.
Tengo más de 200 proyectos de paquetes de tiempo de ejecución en un grupo de proyectos. Es tedioso crear un evento de preconstrucción y creo que esta es solo una solución alternativa. Para su información, no podemos desmarcar los proyectos de VersionInfo para paquetes (.dpk). Solo está disponible para el proyecto de aplicación (.exe). –