{"id":1816,"date":"2010-11-25T09:00:20","date_gmt":"2010-11-25T08:00:20","guid":{"rendered":"http:\/\/blogs.wittwer.fr\/whiler\/?p=1816"},"modified":"2012-03-03T05:29:32","modified_gmt":"2012-03-03T04:29:32","slug":"recuperation-version-fichier","status":"publish","type":"post","link":"https:\/\/blogs.wittwer.fr\/whiler\/2010\/11\/25\/recuperation-version-fichier\/","title":{"rendered":"R\u00e9cup\u00e9ration de la version d\u2019un fichier"},"content":{"rendered":"<p>En ce moment a lieu le <a href=\"\/whiler\/2010\/11\/09\/codeway-4\/\">CodeWay 4<\/a>.<\/p>\n<p><center><img loading=\"lazy\" decoding=\"async\" src=\"\/whiler\/wp-content\/uploads\/2010\/11\/codeway4_banner.jpg\" alt=\"CodeWay 4\" title=\"CodeWay 4\" width=\"350\" height=\"116\" class=\"size-full wp-image-1817\" srcset=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2010\/11\/codeway4_banner.jpg 350w, https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2010\/11\/codeway4_banner-300x99.jpg 300w\" sizes=\"auto, (max-width: 350px) 100vw, 350px\" \/><\/center><br \/>\n&nbsp;<br \/>\nLors de la session sur FinalBuilder, une question a \u00e9t\u00e9 pos\u00e9e, \u00e0 savoir&nbsp;:<\/p>\n<blockquote><p>Peut-on r\u00e9cup\u00e9rer le num\u00e9ro de version&nbsp;?<\/p><\/blockquote>\n<p>Personnellement, je me suis fait un programme (application console) qui me g\u00e9n\u00e8re un fichier texte qui contient le num\u00e9ro de <em>build<\/em> d&rsquo;un ex\u00e9cutable et que j&rsquo;inclue dans mes scripts.<\/p>\n<p>Vous pouvez directement t\u00e9l\u00e9charger le binaire \u00e0 partir de <a href=\"https:\/\/www.whiler.com\/freewares\/download?generateversionfile.exe\">ce lien<\/a>, <a href=\"https:\/\/www.whiler.com\/freewares\/download?generateversionfile.exe\">GenerateVersionFile<\/a>.<\/p>\n<p>Si vous pr\u00e9f\u00e9rez le code source, il est en <a href=\"\/whiler\/2010\/11\/25\/recuperation-version-fichier\/2\/\">seconde page<\/a>.<br \/>\n<!--nextpage--><\/p>\n<div class=\"codecolorer-container delphi dawn\" style=\"overflow:auto;white-space:nowrap;width:480px;height:300px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>45<br \/>46<br \/>47<br \/>48<br \/>49<br \/>50<br \/>51<br \/>52<br \/>53<br \/>54<br \/>55<br \/>56<br \/>57<br \/>58<br \/>59<br \/>60<br \/>61<br \/>62<br \/>63<br \/>64<br \/>65<br \/>66<br \/>67<br \/>68<br \/>69<br \/>70<br \/>71<br \/>72<br \/>73<br \/>74<br \/>75<br \/>76<br \/>77<br \/>78<br \/>79<br \/>80<br \/>81<br \/>82<br \/>83<br \/>84<br \/>85<br \/>86<br \/>87<br \/>88<br \/>89<br \/>90<br \/>91<br \/>92<br \/>93<br \/>94<br \/>95<br \/>96<br \/>97<br \/>98<br \/>99<br \/>100<br \/>101<br \/>102<br \/>103<br \/>104<br \/>105<br \/>106<br \/>107<br \/>108<br \/>109<br \/>110<br \/>111<br \/>112<br \/>113<br \/>114<br \/>115<br \/>116<br \/>117<br \/>118<br \/>119<br \/>120<br \/>121<br \/>122<br \/>123<br \/>124<br \/>125<br \/>126<br \/>127<br \/>128<br \/>129<br \/>130<br \/>131<br \/>132<br \/>133<br \/>134<br \/>135<br \/>136<br \/>137<br \/>138<br \/>139<br \/>140<br \/>141<br \/>142<br \/>143<br \/>144<br \/>145<br \/>146<br \/>147<br \/>148<br \/>149<br \/>150<br \/>151<br \/>152<br \/>153<br \/>154<br \/>155<br \/>156<br \/>157<br \/>158<br \/>159<br \/>160<br \/>161<br \/><\/div><\/td><td><div class=\"delphi codecolorer\"><span class=\"kw1\">program<\/span> GenerateVersionFile<span class=\"sy1\">;<\/span><br \/>\n<br \/>\n<span class=\"co2\">{$APPTYPE CONSOLE}<\/span><br \/>\n<br \/>\n<span class=\"kw1\">uses<\/span><br \/>\n&nbsp; SysUtils<span class=\"sy1\">,<\/span> Windows<span class=\"sy1\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">type<\/span><br \/>\n&nbsp; TFileVersionInfo <span class=\"sy3\">=<\/span> <span class=\"kw1\">record<\/span><br \/>\n&nbsp; &nbsp; fCompanyName<span class=\"sy1\">,<\/span><br \/>\n&nbsp; &nbsp; fFileDescription<span class=\"sy1\">,<\/span><br \/>\n&nbsp; &nbsp; fFileVersion<span class=\"sy1\">,<\/span><br \/>\n&nbsp; &nbsp; fInternalName<span class=\"sy1\">,<\/span><br \/>\n&nbsp; &nbsp; fLegalCopyRight<span class=\"sy1\">,<\/span><br \/>\n&nbsp; &nbsp; fLegalTradeMark<span class=\"sy1\">,<\/span><br \/>\n&nbsp; &nbsp; fOriginalFileName<span class=\"sy1\">,<\/span><br \/>\n&nbsp; &nbsp; fProductName<span class=\"sy1\">,<\/span><br \/>\n&nbsp; &nbsp; fProductVersion<span class=\"sy1\">,<\/span><br \/>\n&nbsp; &nbsp; fComments &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy1\">:<\/span> <span class=\"kw4\">string<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; fMajor<span class=\"sy1\">,<\/span><br \/>\n&nbsp; &nbsp; fMinor<span class=\"sy1\">,<\/span><br \/>\n&nbsp; &nbsp; fRelease<span class=\"sy1\">,<\/span><br \/>\n&nbsp; &nbsp; fBuild &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy1\">:<\/span> <span class=\"kw4\">Word<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n<span class=\"co2\">{$R *.res}<\/span><br \/>\n<br \/>\n<span class=\"kw1\">procedure<\/span> GetAppVersionInfo<span class=\"br0\">&#40;<\/span>sAppNamePath<span class=\"sy1\">:<\/span> <span class=\"kw4\">string<\/span><span class=\"sy1\">;<\/span> <span class=\"kw1\">var<\/span> aFileVersionInfo<span class=\"sy1\">:<\/span> TFileVersionInfo<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">var<\/span><br \/>\n&nbsp; iVerSize &nbsp; &nbsp; <span class=\"sy1\">:<\/span> <span class=\"kw4\">Integer<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; pcVerBuf &nbsp; &nbsp; <span class=\"sy1\">:<\/span> <span class=\"kw4\">PChar<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; pVerBufValue <span class=\"sy1\">:<\/span> <span class=\"kw4\">Pointer<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"co2\">{$IFDEF Delphi3Below}<\/span><br \/>\n&nbsp; iVerHandle &nbsp; <span class=\"sy1\">:<\/span> <span class=\"kw4\">Integer<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; iVerBufLen &nbsp; <span class=\"sy1\">:<\/span> <span class=\"kw4\">Integer<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"co2\">{$ELSE}<\/span><br \/>\n&nbsp; iVerHandle &nbsp; <span class=\"sy1\">:<\/span> <span class=\"kw4\">Cardinal<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; iVerBufLen &nbsp; <span class=\"sy1\">:<\/span> <span class=\"kw4\">Cardinal<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"co2\">{$ENDIF}<\/span><br \/>\n&nbsp; sVerKey &nbsp; &nbsp; &nbsp;<span class=\"sy1\">:<\/span> <span class=\"kw4\">string<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n&nbsp; <span class=\"kw1\">function<\/span> GetInfo<span class=\"br0\">&#40;<\/span>ThisKey<span class=\"sy1\">:<\/span> <span class=\"kw4\">string<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">:<\/span> <span class=\"kw4\">string<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; Result &nbsp;<span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"st0\">''<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; sVerKey <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"st0\">'\\StringFileInfo\\'<\/span> <span class=\"sy3\">+<\/span> <span class=\"kw3\">IntToHex<\/span><span class=\"br0\">&#40;<\/span>loword<span class=\"br0\">&#40;<\/span><span class=\"kw4\">integer<\/span><span class=\"br0\">&#40;<\/span>pVerBufValue<span class=\"sy2\">^<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">,<\/span> <span class=\"nu0\">4<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy3\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw3\">IntToHex<\/span><span class=\"br0\">&#40;<\/span>hiword<span class=\"br0\">&#40;<\/span><span class=\"kw4\">integer<\/span><span class=\"br0\">&#40;<\/span>pVerBufValue<span class=\"sy2\">^<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">,<\/span> <span class=\"nu0\">4<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy3\">+<\/span> <span class=\"st0\">'\\'<\/span> <span class=\"sy3\">+<\/span> ThisKey<span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; <span class=\"kw1\">if<\/span> VerQueryValue<span class=\"br0\">&#40;<\/span>pcVerBuf<span class=\"sy1\">,<\/span> <span class=\"kw4\">PChar<\/span><span class=\"br0\">&#40;<\/span>sVerKey<span class=\"br0\">&#41;<\/span><span class=\"sy1\">,<\/span> pVerBufValue<span class=\"sy1\">,<\/span> iVerBufLen<span class=\"br0\">&#41;<\/span> <span class=\"kw1\">then<\/span><br \/>\n&nbsp; &nbsp; &nbsp; Result <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"kw3\">StrPas<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw4\">PChar<\/span><span class=\"br0\">&#40;<\/span>pVerBufValue<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n&nbsp; <span class=\"kw1\">function<\/span> QueryValue<span class=\"br0\">&#40;<\/span>ThisValue<span class=\"sy1\">:<\/span> <span class=\"kw4\">string<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">:<\/span> <span class=\"kw4\">string<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; Result <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"st0\">''<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; <span class=\"kw1\">if<\/span> GetFileVersionInfo<span class=\"br0\">&#40;<\/span><span class=\"kw4\">PChar<\/span><span class=\"br0\">&#40;<\/span>sAppNamePath<span class=\"br0\">&#41;<\/span><span class=\"sy1\">,<\/span> iVerHandle<span class=\"sy1\">,<\/span> iVerSize<span class=\"sy1\">,<\/span> pcVerBuf<span class=\"br0\">&#41;<\/span> <span class=\"kw1\">and<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; VerQueryValue<span class=\"br0\">&#40;<\/span>pcVerBuf<span class=\"sy1\">,<\/span> <span class=\"st0\">'\\VarFileInfo\\Translation'<\/span><span class=\"sy1\">,<\/span> pVerBufValue<span class=\"sy1\">,<\/span> iVerBufLen<span class=\"br0\">&#41;<\/span> <span class=\"kw1\">then<\/span><br \/>\n&nbsp; &nbsp; &nbsp; Result <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> GetInfo<span class=\"br0\">&#40;<\/span>ThisValue<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n&nbsp; <span class=\"kw1\">function<\/span> <span class=\"kw3\">GetFileVersion<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw1\">const<\/span> FileName<span class=\"sy1\">:<\/span> TFileName<span class=\"br0\">&#41;<\/span><span class=\"sy1\">:<\/span> <span class=\"kw4\">boolean<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ Returns True on success and False on failure.<\/span><br \/>\n&nbsp; <span class=\"kw1\">var<\/span><br \/>\n&nbsp; &nbsp; lwSize<span class=\"sy1\">,<\/span> lwLen <span class=\"sy1\">:<\/span> <span class=\"kw4\">LongWord<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; hFile &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy1\">:<\/span> <span class=\"kw4\">THandle<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; pcBuffer &nbsp; &nbsp; &nbsp;<span class=\"sy1\">:<\/span> <span class=\"kw4\">PChar<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; pInfo &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy1\">:<\/span> <span class=\"sy2\">^<\/span>VS_FIXEDFILEINFO<span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; Result <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"kw2\">False<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; lwSize <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> GetFileVersionInfoSize<span class=\"br0\">&#40;<\/span><span class=\"kw4\">Pointer<\/span><span class=\"br0\">&#40;<\/span>FileName<span class=\"br0\">&#41;<\/span><span class=\"sy1\">,<\/span> hFile<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">if<\/span> lwSize &gt; <span class=\"nu0\">0<\/span> <span class=\"kw1\">then<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw3\">GetMem<\/span><span class=\"br0\">&#40;<\/span>pcBuffer<span class=\"sy1\">,<\/span> lwSize<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> GetFileVersionInfo<span class=\"br0\">&#40;<\/span><span class=\"kw4\">Pointer<\/span><span class=\"br0\">&#40;<\/span>FileName<span class=\"br0\">&#41;<\/span><span class=\"sy1\">,<\/span> <span class=\"nu0\">0<\/span><span class=\"sy1\">,<\/span> lwSize<span class=\"sy1\">,<\/span> pcBuffer<span class=\"br0\">&#41;<\/span> <span class=\"kw1\">then<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> VerQueryValue<span class=\"br0\">&#40;<\/span>pcBuffer<span class=\"sy1\">,<\/span> <span class=\"st0\">'\\'<\/span><span class=\"sy1\">,<\/span> <span class=\"kw4\">pointer<\/span><span class=\"br0\">&#40;<\/span>pInfo<span class=\"br0\">&#41;<\/span><span class=\"sy1\">,<\/span> lwLen<span class=\"br0\">&#41;<\/span> <span class=\"kw1\">then<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; aFileVersionInfo<span class=\"sy1\">.<\/span><span class=\"me1\">fMajor<\/span> &nbsp; <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> HiWord<span class=\"br0\">&#40;<\/span>pInfo<span class=\"sy1\">.<\/span><span class=\"me1\">dwFileVersionMS<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; aFileVersionInfo<span class=\"sy1\">.<\/span><span class=\"me1\">fMinor<\/span> &nbsp; <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> LoWord<span class=\"br0\">&#40;<\/span>pInfo<span class=\"sy1\">.<\/span><span class=\"me1\">dwFileVersionMS<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; aFileVersionInfo<span class=\"sy1\">.<\/span><span class=\"me1\">fRelease<\/span> <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> HiWord<span class=\"br0\">&#40;<\/span>pInfo<span class=\"sy1\">.<\/span><span class=\"me1\">dwFileVersionLS<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; aFileVersionInfo<span class=\"sy1\">.<\/span><span class=\"me1\">fBuild<\/span> &nbsp; <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> LoWord<span class=\"br0\">&#40;<\/span>pInfo<span class=\"sy1\">.<\/span><span class=\"me1\">dwFileVersionLS<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Result &nbsp;<span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"kw2\">True<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw3\">FreeMem<\/span><span class=\"br0\">&#40;<\/span>pcBuffer<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">begin<\/span><br \/>\n&nbsp; <span class=\"kw1\">if<\/span> sAppNamePath <span class=\"sy3\">=<\/span> <span class=\"st0\">''<\/span> <span class=\"kw1\">then<\/span><br \/>\n&nbsp; &nbsp; Exit<span class=\"sy1\">;<\/span><br \/>\n<br \/>\n&nbsp; <span class=\"kw3\">GetFileVersion<\/span><span class=\"br0\">&#40;<\/span>sAppNamePath<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; iVerSize <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> GetFileVersionInfoSize<span class=\"br0\">&#40;<\/span><span class=\"kw4\">PChar<\/span><span class=\"br0\">&#40;<\/span>sAppNamePath<span class=\"br0\">&#41;<\/span><span class=\"sy1\">,<\/span> iVerHandle<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; pcVerBuf <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"kw3\">AllocMem<\/span><span class=\"br0\">&#40;<\/span>iVerSize<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">try<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">with<\/span> aFileVersionInfo <span class=\"kw1\">do<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; fCompanyName &nbsp; &nbsp; &nbsp;<span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> QueryValue<span class=\"br0\">&#40;<\/span><span class=\"st0\">'CompanyName'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; fFileDescription &nbsp;<span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> QueryValue<span class=\"br0\">&#40;<\/span><span class=\"st0\">'FileDescription'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; fFileVersion &nbsp; &nbsp; &nbsp;<span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> QueryValue<span class=\"br0\">&#40;<\/span><span class=\"st0\">'FileVersion'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; fInternalName &nbsp; &nbsp; <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> QueryValue<span class=\"br0\">&#40;<\/span><span class=\"st0\">'InternalName'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; fLegalCopyRight &nbsp; <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> QueryValue<span class=\"br0\">&#40;<\/span><span class=\"st0\">'LegalCopyRight'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; fLegalTradeMark &nbsp; <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> QueryValue<span class=\"br0\">&#40;<\/span><span class=\"st0\">'LegalTradeMark'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; fOriginalFileName <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> QueryValue<span class=\"br0\">&#40;<\/span><span class=\"st0\">'OriginalFileName'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; fProductName &nbsp; &nbsp; &nbsp;<span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> QueryValue<span class=\"br0\">&#40;<\/span><span class=\"st0\">'ProductName'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; fProductVersion &nbsp; <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> QueryValue<span class=\"br0\">&#40;<\/span><span class=\"st0\">'ProductVersion'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; fComments &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> QueryValue<span class=\"br0\">&#40;<\/span><span class=\"st0\">'Comments'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">finally<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw3\">FreeMem<\/span><span class=\"br0\">&#40;<\/span>pcVerBuf<span class=\"sy1\">,<\/span> iVerSize<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">var<\/span><br \/>\n&nbsp; sSource<span class=\"sy1\">,<\/span> sTarget <span class=\"sy1\">:<\/span> TFileName<span class=\"sy1\">;<\/span><br \/>\n&nbsp; fvi &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy1\">:<\/span> TFileVersionInfo<span class=\"sy1\">;<\/span><br \/>\n&nbsp; tfTarget &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy1\">:<\/span> <span class=\"kw4\">TextFile<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">begin<\/span><br \/>\n&nbsp; <span class=\"kw1\">case<\/span> ParamCount <span class=\"kw1\">of<\/span><br \/>\n&nbsp; &nbsp; <span class=\"nu0\">2<\/span><span class=\"sy1\">:<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; sSource <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"kw3\">ParamStr<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; sTarget <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"kw3\">ParamStr<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu0\">2<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"kw3\">FileExists<\/span><span class=\"br0\">&#40;<\/span>sSource<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"kw1\">then<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"kw3\">DirectoryExists<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw3\">ExtractFilePath<\/span><span class=\"br0\">&#40;<\/span>sTarget<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"kw1\">then<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; GetAppVersionInfo<span class=\"br0\">&#40;<\/span>sSource<span class=\"sy1\">,<\/span> fvi<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>fvi<span class=\"sy1\">.<\/span><span class=\"me1\">fFileVersion<\/span> &lt;&gt; <span class=\"st0\">''<\/span><span class=\"br0\">&#41;<\/span> <span class=\"kw1\">then<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw3\">AssignFile<\/span><span class=\"br0\">&#40;<\/span>tfTarget<span class=\"sy1\">,<\/span> sTarget<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw3\">Rewrite<\/span><span class=\"br0\">&#40;<\/span>tfTarget<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">Write<\/span><span class=\"br0\">&#40;<\/span>tfTarget<span class=\"sy1\">,<\/span> fvi<span class=\"sy1\">.<\/span><span class=\"me1\">fFileVersion<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw3\">Flush<\/span><span class=\"br0\">&#40;<\/span>tfTarget<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw3\">Close<\/span><span class=\"br0\">&#40;<\/span>tfTarget<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw3\">Writeln<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">''<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw3\">Writeln<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">''<\/span><span class=\"st0\">''<\/span> <span class=\"sy3\">+<\/span> <span class=\"kw3\">ExtractFileName<\/span><span class=\"br0\">&#40;<\/span>sTarget<span class=\"br0\">&#41;<\/span> <span class=\"sy3\">+<\/span> <span class=\"st0\">''<\/span><span class=\"st0\">' updated with value: '<\/span> <span class=\"sy3\">+<\/span> fvi<span class=\"sy1\">.<\/span><span class=\"me1\">fFileVersion<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">end<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">else<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw3\">Writeln<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'File Version is emmpty!'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">end<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">else<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw3\">Writeln<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'Folder '<\/span> <span class=\"sy3\">+<\/span> <span class=\"kw3\">ExtractFilePath<\/span><span class=\"br0\">&#40;<\/span>sTarget<span class=\"br0\">&#41;<\/span> <span class=\"sy3\">+<\/span> <span class=\"st0\">' doesn'<\/span><span class=\"st0\">'t exist!'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">end<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">else<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw3\">Writeln<\/span><span class=\"br0\">&#40;<\/span>sSource <span class=\"sy3\">+<\/span> <span class=\"st0\">' doesn'<\/span><span class=\"st0\">'t exist!'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">else<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw3\">Writeln<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'This program expects 2 parameters!'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">end<\/span><span class=\"sy1\">.<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u00ab\u00a0Peut-on r\u00e9cup\u00e9rer le num\u00e9ro de version ?\u00a0\u00bb<br \/>\nPersonnellement, je me suis fait un programme (application console) qui me g\u00e9n\u00e8re un fichier texte qui contient le num\u00e9ro de build d\u2019un ex\u00e9cutable et que j\u2019inclue dans mes scripts&#8230;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_links_to":"","_links_to_target":""},"categories":[7,6],"tags":[27,154,44,93,108],"class_list":["post-1816","post","type-post","status-publish","format-standard","hentry","category-delphi","category-dev","tag-coloration-syntaxique","tag-delphi","tag-embarcadero","tag-freeware","tag-script"],"_links":{"self":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/posts\/1816","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/comments?post=1816"}],"version-history":[{"count":0,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/posts\/1816\/revisions"}],"wp:attachment":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/media?parent=1816"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/categories?post=1816"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/tags?post=1816"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}