I am currently studying the VersionInfo Resource(s) for Windows.
It is kind of confusing that you can have multiple VS_VERSIONINFO/VS_FIXEDFILEINFO
structures within a VS_VERSION_INFO
Resource.
As far as I get it, you can have multiple RT_VERSION->VS_VERSION_INFO
Resources with different language ids. (Just as shown as in the picture)
These 2 language ids (0 and 1031
) have actually 2 different VS_VERSIONINFO/VS_FIXEDFILEINFO
in each.
0
is a neutral language and seems to be prioritized than your actual local language id (which is 1031
).
To me this seems to be kind of a mess and confusing.
How is it possible to have multiple VS_VERSIONINFO
structures within a VS_VERSION_INFO
resource and what is the point? How does Windows interpret multiple Resources,Structures?
And how is it possible to get only one piece of buffer when you call GetFileVersionInfo
?
It all makes little sense to me and I can't find much documentation about it.
I assume that the explorer just shows the first text block and also doesn't prefer a specific one. Just use a text editor and exchange the blocks in the resource file. But maybe the resource compiler reorders them.
To access the separate parts: - VerQueryValue with "\" gives you the fixed version info block VS_FIXEDFILEINFO - VerQueryValue with "\VarFileInfo\Translation" gives you a list of translations - with "\StringFileInfo\langId_charset\keyname" you get the specific string parts
You find this information in the MSDN