Windows-Server-2012

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

  • November 19, 2014

文件中的<component>元素unattend.xml——用於提供全自動 Windows 安裝所需的資訊——通常帶有許多屬性,例如:

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

<!-- ... -->

</component>

雖然nameprocessorArchitecture是相當不言自明的,並且language暗示它可能引入了特定於語言環境的設置,但我無法找到任何關於這些屬性的任何文件。

特別是,什麼是versionScopepublicKeyToken?目前它們似乎是“神奇的常數”。

要回答這個問題,我們首先需要更多關於這些屬性來自何處的資訊。@Evan Anderson 的評論是正確的:我們可能永遠無法訪問官方 XSD,但是我們可以根據它們的用法推斷其含義。

首先要了解的是,此架構最初並不是為這些無人值守的答案文件設計的。Microsof 只是簡單地重用了 WMIConfig 模式;您可以在許多地方找到它,但最主要的地方之一是與 Windows 更新包一起使用的“清單”文件。有關範例,請參見此處。

在這個原始用途中,屬性的值引用了它們所附帶的更新包,這使我們能夠更清楚地理解它們。例如,language可以採用此處列出的任何值。但這與無人看管的答案文件有什麼關係?您對存在特定於語言環境的設置的想法很接近。請記住,無人值守文件不僅可以傳達“配置指令”,而且還可以部署包 - 修補程序、語言包等。我們可以在系統映像管理器中看到這一點。

SIM 包

查看其中一些包,特別是語言包,我們可以看到確實使用了語言屬性:

SIM 屬性

由於這些屬性主要用於描述無人參與文件附帶的包,而不是其中包含的配置指令,因此很容易看出為什麼它們對這些指令沒有太大意義,以及為什麼它們看起來如此,因為你說,“神奇的常數”。當這些屬性出現在配置指令中時,Microsoft 只是為這些屬性使用了通用值,因為任何其他值都不是真正適用的。

因此,要深入了解 Language、VersionScope 和 PublicKey Token 的含義,我們需要在它們描述的包的上下文中查看它們。顯然Language描述了特定於地方的包的適用性。Microsoft在此處PublicKey Token將其定義為“簽署程序集的公鑰的 SHA-1 雜湊的最後 8 個字節”。

至於VersionScope,雖然微軟沒有提供具體的定義,但我們可以假設這與所討論的包是否使用 Windows 組件儲存和並排 (SxS) 程序集有關。如果您不是程序員,這實際上意味著什麼可能會有點令人困惑,但請查看有關該主題的Wikipedia文章。

希望這能對這個話題有所啟發!

引用自:https://serverfault.com/questions/644793