5

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".

larsks
  • 41,276
  • 13
  • 117
  • 170
  • Duplicate of: http://serverfault.com/questions/465847/where-can-i-find-the-latest-unattended-xml-schema-xsd – Evan Anderson Nov 19 '14 at 20:07
  • It's not a duplicate at all. That question is primarily about schema validation. The schema will helpfully tell you that the `publicKeyToken` attribute is "a string" (``). This is great if you're trying to validate an XML file, but doesn't provide any information about what the attribute is for. – larsks Nov 19 '14 at 20:21
  • I can't actually vote-to-close because you've got an open bounty on the question. I tend to think that since the people who answered on that question weren't able to find an official XSD that it's pretty unlikely that this is documented outside of Microsoft. (Sure, sure-- I understand the different between validating the XML schema and understanding the semantic meaning of the attributes-- I just think that if MSFT isn't publishing an XSD you're not going to get any semantic documentation either...) – Evan Anderson Nov 19 '14 at 20:24

1 Answers1

4

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.

SIM Packages

Taking a look at some of these packages, specifically the language packs, we can see that the language attribute is indeed utilized:

SIM Attributes

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!

tfrederick74656
  • 1,442
  • 1
  • 12
  • 29