unattend.xml文件中的<component>元素 – 用于提供完全自动化的Windows安装所需的信息 – 通常具有许多属性,例如:
<component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> <!-- ... --> </component>
虽然name和processorArchitecture结构相当明显, language表明, 也许它引入了特定于语言环境的设置,但是我还没有find任何有关这些属性的任何文档。
特别是什么是versionScope和publicKeyToken ? 目前他们似乎是“不可思议的常量”。
要回答这个问题,我们首先需要更多关于这些属性来自何处的信息。 埃文·安德森(Evan Anderson)的评论很明显:我们可能永远无法访问官方的XSD,但是我们可以根据它们的用法来推断含义。
首先要了解的是,这个模式最初并不是为这些无人参与的答案文件而devise的。 Microsof只是重用了WMIConfig模式; 你可以在很多地方find它,但其中最主要的是在Windows更新包中使用的“清单”文件。 看这里的例子。
在这个最初的使用中,属性的值被引用到它们所附带的更新包中,这使得我们可以更多地理解它们。 例如, language可以采取这里列出的任何值。 但是,这与无人参与的答案文件有什么关系呢? 你已经接近了这个想法,即有特定于语言环境的设置。 请记住,无人值守文件不仅可以传达“configuration指令”,还可以部署软件包 – 修补程序,语言包等。我们可以在System Image Manager中看到这一点。

看一下这些包,特别是语言包,我们可以看到语言属性的确被利用了:

由于这些属性主要是为了描述伴随无人参与文件的软件包而不是包含在其中的configuration指令,因此很容易明白为什么它们与这些指令没有太大关系,以及为什么它们看起来像你说,“魔法常数”。 当这些属性出现在configuration指令中时,Microsoft只是使用这些属性的通用值,因为任何其他值都不适用。
因此,要深入了解Language,VersionScope和PublicKey Token的含义,我们需要在所描述的包的上下文中查看它们。 很明显, Language描述了一个特定地区的软件包的适用性。 PublicKey Token 在这里被微软定义为“程序集签名的公钥的SHA-1散列的最后8个字节”。
至于VersionScope ,虽然没有Microsoft提供的具体定义,但我们可以认为这与所讨论的包是否使用Windows组件存储和并行(SxS)程序集有关。 如果你不是一个程序员,这实际上会带来一些混乱,但请查看关于这个主题的维基百科文章。
希望这可以让我们了解这个话题!