Windows unattend.xml 文件中的`<component>` 元素需要哪些属性?

lar*_*sks 5 unattended windows-server-2012

文件中的<component>元素unattend.xml——用于提供完全自动化的 Windows 安装所需的信息——通常具有许多属性,例如:

<component 
  name="Microsoft-Windows-International-Core-WinPE"
  processorArchitecture="amd64"
  publicKeyToken="31bf3856ad364e35"
  language="neutral"
  versionScope="nonSxS">

<!-- ... -->

</component>
Run Code Online (Sandbox Code Playgroud)

虽然nameprocessorArchitecture相当不言自明,并language表明它可能引入了特定于语言环境的设置,但我无法找到有关这些属性中的任何一个的任何文档。

特别是,什么是versionScopepublicKeyToken?目前它们似乎是“神奇的常数”。

tfr*_*656 4

为了回答这个问题,我们首先需要更多关于这些属性从何而来的信息。@Evan Anderson 的评论很到位:我们可能永远无法访问官方 XSD,但是我们可以根据它们的用法推断含义。

首先要了解的是,该架构最初并不是为这些无人值守的应答文件设计的。Microsoft 只是简单地重用了 WMIConfig 架构;您可以在很多地方找到它,但最主要的地方之一是与 Windows 更新包一起使用的“清单”文件。请参阅此处的示例。

在最初的使用中,属性的值引用了它们附带的更新包,这使我们能够更好地理解它们。例如,可以采用此处language列出的任何值。但这与无人值守应答文件有什么关系呢?您很清楚存在特定于区域设置的设置。请记住,无人值守文件不仅可以传达“配置指令”,而且还可以部署包 - 修补程序、语言包等。我们可以在系统映像管理器中看到这一点。

SIM 套餐

查看其中一些包,特别是语言包,我们可以看到确实利用了语言属性:

SIM 卡属性

由于这些属性主要用于描述无人参与文件附带的包,而不是其中包含的配置指令,因此很容易看出为什么它们对于这些指令没有多大意义,以及为什么它们看起来如此,你说“神奇常数”。当这些属性出现在配置指令中时,Microsoft 只是使用它们的通用值,因为任何其他值并不真正适用。

因此,要深入了解 Language、VersionScope 和 PublicKey Token 的含义,我们需要在它们描述的包的上下文中查看它们。明显地Language描述了特定于本地的包的适用性。Microsoft在此PublicKey Token将其定义为“对程序集进行签名的公钥的 SHA-1 哈希值的最后 8 个字节”。

至于VersionScope,虽然 Microsoft 没有提供具体的定义,但我们可以假设这与相关包是否使用 Windows 组件存储和并排 (SxS) 程序集有关。如果您不是程序员,这实际上意味着什么可能会有点令人困惑,但请查看有关该主题的维基百科文章。

希望这能让大家对这个话题有所了解!