The <component>
element in an unattend.xml
file -- used to provide information required by fully automated Windows installs -- is generally presented with a number of attributes, for example:
<component
name="Microsoft-Windows-International-Core-WinPE"
processorArchitecture="amd64"
publicKeyToken="31bf3856ad364e35"
language="neutral"
versionScope="nonSxS">
<!-- ... -->
</component>
While name
and processorArchitecture
are fairly self-explanatory, and language
suggests that maybe it introduces locale-specific settings, I have not been able to find any documentation on any of these attributes.
In particular, what are versionScope
and publicKeyToken
? At the moment they seem to be "magical constants".
To answer this question, we first need a bit more information about where these attributes come from. @Evan Anderson's comment is spot on: we'll probably never have access to the official XSD, however we can infer meaning based on their usage.
The first thing to understand is that this schema wasn't originally designed for these unattended answer files. Microsof simply reused the WMIConfig schema; you can find it in a number of places, but one of the most predominant is in the "manifest" files used alongside Windows update packages. See here for an example.
In this original use, the values of the attributes referred to the update package they accompanied, which allows us to make a bit more sense out of them. For example,
language
could take any of the values listed here. But what does this have to do with unattended answer files? You were close with the idea that there are locale-specific settings. Remember that not only can unattend files convey "configuration directives", but they can also deploy packages - hotfixes, language packs, etc. We can see this in System Image Manager.Taking a look at some of these packages, specifically the language packs, we can see that the language attribute is indeed utilized:
Since these attributes are primarily intended to describe packages accompanying the unattend file rather than configuration directives contained within, it's easy to see why they don't make a whole lot of sense in relation to these directives, and also why they appear to be, as you say, "magical constants". Microsoft simply used generic values for these attributes when they appear on configuration directives because any other values are not really applicable.
So to dig in to what Language, VersionScope, and PublicKey Token mean, we need to look at them in the context of the packages they describe. Obviously
Language
describes the applicability of a locality-specific package.PublicKey Token
is defined by Microsoft here as "the last 8 bytes of the SHA-1 hash of the public key under which the assembly is signed."As for
VersionScope
, while there is no concrete definition offered by Microsoft, we can assume this has to do with whether the package in question utilizes the Windows Component Store and Side by Side (SxS) assemblies. If you're not a programmer, what this actually entails can be a bit confusing, but check out the Wikipedia article on the topic.Hopefully this sheds some light on the topic!