Estoy ocupado automatizando nuestras compilaciones para incluir el número de revisión de svn. Estamos utilizando Delphi 2010. Agregué un evento de precompilación que llamaba a un archivo por lotes que inyecta el número de revisión svn (leído del archivo de entradas en el directorio .svn) y un número de versión especificado en aVersionInfo.rc compilado con mi proyecto. El evento de pre-construcción se ve así:Evento de preconstrucción de Delphi no se ejecuta ANTES de compilar
call SetVersionInfo.bat 6 5 4
... y el archivo por lotes (espero que alguien encuentre esto útil) ...
@ECHO OFF
SETLOCAL
setLocal EnableDelayedExpansion
SET _myVar=0
FOR /F %%G in (.svn\entries.) DO (
IF !_myVar! LSS 3 SET /A _myVar+=1 & SET _svn_dir_rev=%%G
)
ECHO 1 VERSIONINFO > aVersionInfo.rc
ECHO. FILEVERSION %1,%2,%3,%_svn_dir_rev% >> aVersionInfo.rc
ECHO. PRODUCTVERSION 1 >> aVersionInfo.rc
ECHO. FILEOS VOS__WINDOWS32 >> aVersionInfo.rc
ECHO. FILETYPE VFT_APP >> aVersionInfo.rc
ECHO. BEGIN >> aVersionInfo.rc
ECHO. BLOCK "StringFileInfo" >> aVersionInfo.rc
ECHO. BEGIN >> aVersionInfo.rc
ECHO. BLOCK "080904b0" >> aVersionInfo.rc
ECHO. BEGIN >> aVersionInfo.rc
ECHO. VALUE "CompanyName","COMPANY\000" >> aVersionInfo.rc
ECHO. VALUE "FileDescription","APP\000" >> aVersionInfo.rc
ECHO. VALUE "FileVersion","%1.%2.%3.%_svn_dir_rev%\000" >> aVersionInfo.rc
ECHO. VALUE "InternalName","APP\000" >> aVersionInfo.rc
ECHO. VALUE "LegalCopyright","Copyright APP\000" >> aVersionInfo.rc
ECHO. VALUE "LegalTrademarks","APP\000" >> aVersionInfo.rc
ECHO. VALUE "OriginalFilename","APP.exe\000" >> aVersionInfo.rc
ECHO. VALUE "ProductName","APP\000" >> aVersionInfo.rc
ECHO. VALUE "ProductVersion,"1\000" >> aVersionInfo.rc
ECHO. VALUE "Comments","Compiled on %date% by %username%\000" >> aVersionInfo.rc
ECHO. END >> aVersionInfo.rc
ECHO. END >> aVersionInfo.rc
ECHO. BLOCK "VarFileInfo" >> aVersionInfo.rc
ECHO. BEGIN >> aVersionInfo.rc
ECHO. VALUE "Translation", 0x0809 1200 >> aVersionInfo.rc
ECHO. END >> aVersionInfo.rc
ECHO. END >> aVersionInfo.rc
ENDLOCAL
el archivo por lotes no se ejecutan como parte de una compilación , aVersionInfo.rc se actualiza, aVersionInfo.res se vuelve a compilar, pero por alguna razón el nuevo archivo res no se usa para compilar el exe. Sin embargo, se actualiza durante una compilación limpia o si compilo por segunda vez. Parece que la comprobación de cambios en los archivos rc tiene lugar antes de que se invoquen los eventos "pre" -build. Lo que realmente lo convierte en un evento de construcción media. ¿O me estoy perdiendo algo?
Intenté eliminar el archivo aVersionInfo.res como otro evento de precompilación, pero luego el compilador se queja de que falta este archivo. ¿Podría ser que el
{$R 'aVersionInfo.res' 'aVersionInfo.rc'}
línea está en el lugar equivocado?
Gracias, funciona como un encanto –