Je suis occupé à automatiser nos builds pour inclure le numéro de révision svn. Nous utilisons Delphi 2010. J'ai ajouté un événement de pré-construction appelant un fichier batch qui injecte le numéro de révision svn (lu dans le fichier .svn dans le répertoire des entrées) et un numéro de version spécifié dans aVersionInfo.rc qui est compilé avec mon projet. L'événement pré-construction ressemble à ceci:Événement de pré-construction Delphi ne s'exécutant PAS AVANT la compilation
call SetVersionInfo.bat 6 5 4
... et le fichier batch (espérons que quelqu'un trouve cela utile) ...
@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
Le fichier de commandes ne s'exécute dans le cadre d'une compilation , aVersionInfo.rc est mis à jour, aVersionInfo.res est recompilé, mais pour une raison quelconque, le nouveau fichier res n'est pas utilisé pour compiler l'exe. Il est, cependant, mis à jour pendant une construction propre ou si je compile une deuxième fois. Il semble que la vérification des modifications apportées aux fichiers rc a lieu avant que les événements "pre" -build ne soient appelés. Ce qui en fait un événement de mi-construction. Ou est-ce que je manque quelque chose?
J'ai essayé de supprimer le fichier aVersionInfo.res en tant qu'autre événement de pré-construction, mais le compilateur se plaint que ce fichier est manquant. Se pourrait-il que le
{$R 'aVersionInfo.res' 'aVersionInfo.rc'}
ligne est au mauvais endroit?
Merci, fonctionne comme un charme –