文件中的<component>
元素unattend.xml
——用于提供全自动 Windows 安装所需的信息——通常带有许多属性,例如:
<component
name="Microsoft-Windows-International-Core-WinPE"
processorArchitecture="amd64"
publicKeyToken="31bf3856ad364e35"
language="neutral"
versionScope="nonSxS">
<!-- ... -->
</component>
虽然name
和processorArchitecture
是相当不言自明的,并且language
暗示它可能引入了特定于语言环境的设置,但我无法找到任何关于这些属性的任何文档。
特别是,什么是versionScope
和publicKeyToken
?目前它们似乎是“神奇的常数”。
要回答这个问题,我们首先需要更多关于这些属性来自何处的信息。@Evan Anderson 的评论是正确的:我们可能永远无法访问官方 XSD,但是我们可以根据它们的用法推断其含义。
首先要了解的是,此架构最初并不是为这些无人值守的答案文件设计的。Microsof 只是简单地重用了 WMIConfig 模式;您可以在许多地方找到它,但最主要的地方之一是与 Windows 更新包一起使用的“清单”文件。有关示例,请参见此处。
在这个原始用途中,属性的值引用了它们所附带的更新包,这使我们能够更清楚地理解它们。例如,
language
可以采用此处列出的任何值。但这与无人看管的答案文件有什么关系?您对存在特定于语言环境的设置的想法很接近。请记住,无人值守文件不仅可以传达“配置指令”,而且还可以部署包 - 修补程序、语言包等。我们可以在系统映像管理器中看到这一点。查看其中一些包,特别是语言包,我们可以看到确实使用了语言属性:
由于这些属性主要用于描述无人参与文件附带的包,而不是其中包含的配置指令,因此很容易看出为什么它们对这些指令没有太大意义,以及为什么它们看起来如此,因为你说,“神奇的常数”。当这些属性出现在配置指令中时,Microsoft 只是为这些属性使用了通用值,因为任何其他值都不是真正适用的。
因此,要深入了解 Language、VersionScope 和 PublicKey Token 的含义,我们需要在它们描述的包的上下文中查看它们。显然
Language
描述了特定于地方的包的适用性。Microsoft在此处PublicKey Token
将其定义为“签署程序集的公钥的 SHA-1 哈希的最后 8 个字节”。至于
VersionScope
,虽然微软没有提供具体的定义,但我们可以假设这与所讨论的包是否使用 Windows 组件存储和并排 (SxS) 程序集有关。如果您不是程序员,这实际上意味着什么可能会有点令人困惑,但请查看有关该主题的Wikipedia文章。希望这能对这个话题有所启发!