संकलित करने से पहले निष्पादित नहीं कर रहा है, मैं svn संशोधन संख्या को शामिल करने के लिए हमारे निर्माण को स्वचालित करने में व्यस्त हूं। हम डेल्फी 2010 का उपयोग कर रहे हैं। मैंने एक बैच फ़ाइल को कॉल करने वाला प्री-बिल्ड इवेंट जोड़ा जो svn संशोधन संख्या (.svn निर्देशिका में प्रविष्टियों फ़ाइल से पढ़ा जाता है) और एक निर्दिष्ट संस्करण संख्या को AVersionInfo.rc में संकलित करता है जिसे संकलित किया गया है मेरी परियोजना। पूर्व निर्माण घटना इस तरह दिखता है:डेल्फी प्री-बिल्ड इवेंट
call SetVersionInfo.bat 6 5 4
... और बैच फ़ाइल (कोई इस उपयोगी पाता आशा) ...
@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
बैच फ़ाइल एक संकलन के हिस्से के रूप निष्पादित करता है , aVersionInfo.rc अपडेट किया गया है, aVersionInfo.res को फिर से संकलित किया गया है, लेकिन किसी कारण से नई res फ़ाइल का उपयोग exe संकलित करने के लिए नहीं किया जाता है। हालांकि, यह एक स्वच्छ निर्माण के दौरान अद्यतन किया गया है या यदि मैं दूसरी बार संकलित करता हूं। ऐसा लगता है कि आरसी फाइलों में बदलावों की जांच "पूर्व" -बिल्ड घटनाओं से पहले होती है। जो वास्तव में इसे मिड-बिल्ड इवेंट बनाता है। या क्या मैं कुछ न कुछ भूल रहा हूं?
मैंने एक अन्य प्री-बिल्ड ईवेंट के रूप में aVersionInfo.res फ़ाइल को हटाने का प्रयास किया, लेकिन फिर संकलक शिकायत करता है कि यह फ़ाइल गुम है। क्या यह हो सकता है कि
{$R 'aVersionInfo.res' 'aVersionInfo.rc'}
लाइन गलत जगह पर है?
धन्यवाद, एक आकर्षण की तरह काम करता है –