2010-09-27 26 views
8

Estoy buscando un fragmento de código listo para usar que pueda leer y modificar archivos .res de Delphi. Lo que pasa es que necesito crear una aplicación que compilará muchos proyectos Delphi a la vez (utilizando el archivo dcc32.exe). Sin embargo, es necesario que cambie la versión del archivo y el idioma antes de la compilación, y hasta donde yo sé, tengo que modificar el archivo .res para hacer eso.Cambiador de archivos Delphi .res

¿Ha encontrado algún código que me proporcione una interfaz para archivos .res que me permita modificar los datos contenidos en él? El caso es que quiero cambiar solo esas dos piezas de información manteniendo el resto sin cambios. Es por eso que no puedo compilar mi propio archivo .res basado en un script.

Una aplicación ejecutada desde una línea de comandos también estaría bien si permite ser llamada con parámetros y hace lo que necesito.

¡Gracias de antemano!

+0

También puede votar por el control de calidad # 70567 (no almacenar información de versión en el archivo compilado .res para permitir una manipulación más fácil) y QC# 70564 (permitir que la información de versión se establezca desde la línea de comandos) –

Respuesta

10

Si todo lo que necesita es agregar recurso de versión del archivo a continuación, crear appver.rc archivo, compilar con brcc32 y en uno de su unidad de aplicación (por ejemplo appver.pas) añadir {$R appver.res} (como Marian notó debe desactivar la opción de proyecto de Delphi para incluir Información de la versión).

creé programas de línea de comandos que aumentan los números de construir en .rc archivo, crear una nueva rama/etiqueta en SVN con la nueva versión en nombre de la sucursal, compila .rc-.res, y construir la aplicación.

Mis .rc archivos con dicha información (en polaco) es así:

#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 para abordar la causa y no solo lidiar con los síntomas. Vale la pena mencionar en su respuesta que para que esto también funcione en el IDE, debe desactivar "incluir versión" en las opciones del proyecto. Algo que el IDE no le permitirá hacer para proyectos dll, puede que tenga que "piratear" el dproj para eso a mano. –

2

Salida fuentes:

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

Es nuestra utilidad que lee el archivo .RC con información de la versión y se incrementa el número de compilación. Lo usamos dentro de nuestro proceso de construcción. Aquí hay un extracto:

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

La utilidad utiliza la clase TIncVerRc escrita por Chris Morris.

2

Para todos .res cosas, mira a "Editor XN de recursos" de Colin Wilson, por la que proporciona el código fuente: http://www.wilsonc.demon.co.uk/d10resourceeditor.htm Y probablemente todo lo que necesita es su biblioteca de recursos de utilidad: http://www.wilsonc.demon.co.uk/d9resourceutils.htm No he usado esta fuente, pero si la necesitaba, ese es el primer lugar que buscaría. Su editor de recursos es muy útil, por cierto.

+1

los enlaces están caídos – Ampere

2

Hay ChangeRes que parece satisfacer sus necesidades.

Cuestiones relacionadas