Где я могу найти последнюю схему unattended.xml (xsd)?
Я работаю с Windows Server 2012, службой развертывания Windows (WDS) и комплектом средств оценки и развертывания Windows (ADK). Я создал базовый файл unattended.xml. Когда я иду редактировать в редакторе xml, это на самом деле немного раздражает, так как у меня нет xsd.
По сути, мне было интересно, есть ли схема (xsd) для файла unattended.xml. Я знаю, что могу легко перейти на сайт Microsoft TechNet: автоматическая установка Windows, но я обнаружил две проблемы с этим:
Я не могу найти атрибуты, доступные для каждого узла.
Например... Я знаю, что Microsoft-Windows-Setup допускает такие атрибуты, какpublicKeyToken
,language
,versionScope
, а такжеprocessorArchitecture
просто посмотрев на файл unattended.xml по умолчанию, который у меня есть; но на странице я не вижу этих атрибутов в списке... только резюме и какие узлы могут быть размещены в этом узле.Это не увеличивает скорость и не облегчает редактирование XML-файла в моем редакторе XML.
Опять же, просто ищу, где я могу найти xsd, независимо от того, является ли это загрузкой Microsoft или находится ли она в определенной папке с загрузкой Microsoft или даже с чьей-то учетной записи Sky Drive, если она была сделана вручную.
3 ответа
Согласно этому вопросу ( ссылка), вы можете сгенерировать его
xsd.exe unattend.xml
Я сделал поиск по ключевым словам для всех файлов xsd в MDT, после совпадения файлов publicKeyToken
, language
, а также processorArchitecture
(но нет versionScope
)
C:\Program Files\Microsoft Deployment Toolkit\Templates\Packages.xsd
Кажется, я зашел в тупик даже из документации MS. http://schemas.microsoft.com/unattend
выдает страницу ошибки (содержит другую схему MS). Пробовал использовать просмотрщик ресурсов на некоторых DLL, но не нашел ресурсов xsd. Я начинаю подозревать, что схема автоматической установки хранится как некая структура данных в инструментах MS.
Я использовал xsd.exe
против Microsoft Deployment Toolkit\Templates\Unattend_Core_x64.xml
и произвел следующий xsd. Может быть, это может помочь с вашим редактором XML. (Это не заменяет официальную схему.)
Unattend_Core_x64.xsd
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="unattend" targetNamespace="urn:schemas-microsoft-com:unattend" xmlns:mstns="urn:schemas-microsoft-com:unattend" xmlns="urn:schemas-microsoft-com:unattend" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" attributeFormDefault="qualified" elementFormDefault="qualified" xmlns:app1="http://schemas.microsoft.com/WMIConfig/2002/State">
<xs:import namespace="http://schemas.microsoft.com/WMIConfig/2002/State" schemaLocation="Unattend_Core_x64_app1.xsd" />
<xs:element name="unattend" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="settings">
<xs:complexType>
<xs:sequence>
<xs:element name="component" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="ComputerName" type="xs:string" minOccurs="0" msdata:Ordinal="1" />
<xs:element name="ProductKey" type="xs:string" minOccurs="0" msdata:Ordinal="2" />
<xs:element name="RegisteredOrganization" type="xs:string" minOccurs="0" msdata:Ordinal="3" />
<xs:element name="RegisteredOwner" type="xs:string" minOccurs="0" msdata:Ordinal="4" />
<xs:element name="DoNotCleanTaskBar" type="xs:string" minOccurs="0" msdata:Ordinal="5" />
<xs:element name="TimeZone" type="xs:string" minOccurs="0" msdata:Ordinal="6" />
<xs:element name="InputLocale" type="xs:string" minOccurs="0" msdata:Ordinal="7" />
<xs:element name="SystemLocale" type="xs:string" minOccurs="0" msdata:Ordinal="8" />
<xs:element name="UILanguage" type="xs:string" minOccurs="0" msdata:Ordinal="9" />
<xs:element name="UserLocale" type="xs:string" minOccurs="0" msdata:Ordinal="10" />
<xs:element name="UserAccounts" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="AdministratorPassword" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Value" type="xs:string" minOccurs="0" />
<xs:element name="PlainText" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="AutoLogon" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Enabled" type="xs:string" minOccurs="0" />
<xs:element name="Username" type="xs:string" minOccurs="0" />
<xs:element name="Domain" type="xs:string" minOccurs="0" />
<xs:element name="LogonCount" type="xs:string" minOccurs="0" />
<xs:element name="Password" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Value" type="xs:string" minOccurs="0" />
<xs:element name="PlainText" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="RunSynchronous" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="RunSynchronousCommand" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Description" type="xs:string" minOccurs="0" msdata:Ordinal="0" />
<xs:element name="Order" type="xs:string" minOccurs="0" msdata:Ordinal="1" />
<xs:element name="Path" type="xs:string" minOccurs="0" msdata:Ordinal="2" />
</xs:sequence>
<xs:attribute ref="app1:action" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Identification" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="JoinDomain" type="xs:string" minOccurs="0" />
<xs:element name="JoinWorkgroup" type="xs:string" minOccurs="0" />
<xs:element name="MachineObjectOU" type="xs:string" minOccurs="0" />
<xs:element name="Credentials" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Username" type="xs:string" minOccurs="0" />
<xs:element name="Domain" type="xs:string" minOccurs="0" />
<xs:element name="Password" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="SetupUILanguage" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="UILanguage" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ImageInstall" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="OSImage" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="WillShowUI" type="xs:string" minOccurs="0" />
<xs:element name="InstallTo" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="DiskID" type="xs:string" minOccurs="0" />
<xs:element name="PartitionID" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="InstallFrom" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Path" type="xs:string" minOccurs="0" />
<xs:element name="MetaData" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Key" type="xs:string" minOccurs="0" />
<xs:element name="Value" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Display" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="ColorDepth" type="xs:string" minOccurs="0" />
<xs:element name="HorizontalResolution" type="xs:string" minOccurs="0" />
<xs:element name="RefreshRate" type="xs:string" minOccurs="0" />
<xs:element name="VerticalResolution" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="FirstLogonCommands" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="SynchronousCommand" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="CommandLine" type="xs:string" minOccurs="0" msdata:Ordinal="0" />
<xs:element name="Description" type="xs:string" minOccurs="0" msdata:Ordinal="1" />
<xs:element name="Order" type="xs:string" minOccurs="0" msdata:Ordinal="2" />
</xs:sequence>
<xs:attribute ref="app1:action" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="OOBE" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="HideEULAPage" type="xs:string" minOccurs="0" />
<xs:element name="NetworkLocation" type="xs:string" minOccurs="0" />
<xs:element name="ProtectYourPC" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ComplianceCheck" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="DisplayReport" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="UserData" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="AcceptEula" type="xs:string" minOccurs="0" />
<xs:element name="ProductKey" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Key" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="DriverPaths" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="PathAndCredentials" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Path" type="xs:string" minOccurs="0" msdata:Ordinal="0" />
</xs:sequence>
<xs:attribute ref="app1:keyValue" />
<xs:attribute ref="app1:action" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="name" form="unqualified" type="xs:string" />
<xs:attribute name="processorArchitecture" form="unqualified" type="xs:string" />
<xs:attribute name="publicKeyToken" form="unqualified" type="xs:string" />
<xs:attribute name="language" form="unqualified" type="xs:string" />
<xs:attribute name="versionScope" form="unqualified" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="pass" form="unqualified" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
Для проверки есть скрипт powershell:
https://gist.github.com/davidwallis3101/48454cb6c17c988de43b5ea17089ea6f
Внутри него я нашел описание того, где находится схема и как ее извлечь по следующему URL:
https://schneegans.de/windows/unattend-schema/
Это кодировка base64 в каком-то компоненте ADK:
Имя файлаmicrosoft.componentstudio.componentplatforminterface.dll
и путь к ресурсу:Microsoft.ComponentStudio.ComponentPlatformInterface.MyResources.resources
Поскольку он называется просто MyResources, я предполагаю, что он был создан в условиях нехватки времени, и, возможно, именно поэтому ни у кого не было возможности выпустить его. Я полагаю, что для того, чтобы выпустить его в более доступной форме, понадобится кто-то, у кого есть хорошие друзья в Microsoft.
Если у вас установлен WAIK 8, перейдите в каталог, в который вы его установили. Найдите файл Microsoft.ComponentStudio.ComponentPlatformInterface.dll и откройте его в своем любимом декомпиляторе, чтобы узнать, как это делает Microsoft.
Основным методом, на который стоит обратить внимание, является Validate()
метод, и когда вы смотрите на него, он проходит различные этапы (проходы) и проверяет их один за другим. ValidateXml()
полезно и стоит посмотреть, как и DoLoad()
Это в основном берет некоторые из файлов XSD, которые установлены с WAIK и использует их:
"C: \ Program Files \ Microsoft Deployment Toolkit \ Templates \ Drivers.xsd"
"C: \ Program Files \ Microsoft Deployment Toolkit \ Templates \ Groups.xsd"
"C: \ Program Files \ Microsoft Deployment Toolkit \ Templates \ InstallerComponents.xsd"
"C: \ Program Files \ Microsoft Deployment Toolkit \ Templates \ LinkedDeploymentShares.xsd"
"C: \ Program Files \ Microsoft Deployment Toolkit \ Templates \ Medias.xsd"
"C: \ Program Files \ Microsoft Deployment Toolkit \ Templates \ OperatingSystems.xsd"
"C: \ Program Files \ Microsoft Deployment Toolkit \ Templates \ Packages.xsd"
"C: \ Program Files \ Microsoft Deployment Toolkit \ Templates \ SelectionProfiles.xsd"
"C: \ Program Files \ Microsoft Deployment Toolkit \ Templates \ TaskSeptions.xsd"
"C: \ Program Files \ Microsoft Deployment Toolkit \ Templates \ Applications.xsd"