windows - Visual c ++ programatisk få filversionsnummer i selve filen

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg ved, at jeg kan ringe GetFileVersionInfo() Windows API for at hente filversionsoplysninger.


Er der en nemmere måde at bestemme versionsinformation fra, inden for selve programmet?


Antag for eksempel, at jeg skriver koder til Foo.dll, og indenfor Foo.dll, vil jeg støtte en versionsfunktion, siger GetFooVersion(), som rapporterer versionsnummeret på Foo.dll.


Hvis jeg skal bruge GetFileVersionInfo(), så skal jeg søge som Foo.dll i den vej, der er linket (dynamisk) og anvende GetFileVersionInfo(). Det er kedeligt og fejlagtigt.


Målet Visual Studio-versionen er VS2012.

Bedste reference


Der er desværre ingen GetFileVersionInfoByHandle eller GetFileVersionInfoFromModule.


Du kan bruge FindResource osv. På dit eget modul, men du skal så parse versionsinformationen selv, fordi GetFileVersionInfo ikke altid henter de rå ressourcedata (den kan oversættes til/fra Unicode osv.).


En anden mulighed er at sætte version #defines i en .h-fil, som din funktion og din resource.rc kan bruge, så du kun skal opdatere en enkelt fil, når versionen ændres.