Схема расширения диспетчера сервера - это инструмент, позволяющий изготовителям оборудования (OEM) создавать XML-файлы расширяемости. Для повышения быстродействия XML-файл не проверяется схемой, и она не используется для десериализации XML-файла пользовательским интерфейсом во время выполнения. Если созданный XML-файл не соответствует схеме, ресурсы не будут отображены в пользовательском интерфейсе, и никакие ошибки также не будут отображены.

Элемент ServerUIExtension

Корневым элементом XML-файла является элемент ServerUIExtension. Он содержит список расширений, применяемых к типовой настройке или к домашним страницам ролей, или и к тому, и к другому.

Дочерние элементы

Расширение

Требуется

Один элемент расширения добавляется для установки и типовой настройки. Можно добавить несколько элементов расширения для каждой домашней страницы диспетчера сервера.

Атрибуты

ResourceDllPath

Обязательный

Путь к библиотеке ресурсов по умолчанию, из которой будут загружены все ресурсы для расширения пользовательского интерфейса. Библиотека должна находиться по адресу %WINDIR%\System32, чтобы предотвратить несанкционированные манипуляции с файлами.

Будут обработаны переменные среды.

Пример

Следующий пример XML-файла показывает определение схемы элемента ServerUIExtension.

<xs:element name="ServerUIExtension">
   <xs:complexType>
	<xs:sequence>
		 <xs:element name="Extension" type="ExtensionType" minOccurs="0" maxOccurs="unbounded"/>
	</xs:sequence>
		 <xs:attribute name="ResourceDllPath" type="xs:string" use="required"/>
   </xs:complexType>
</xs:element>

Элемент Extension

Элемент Extension задает новые разделы, которые будут добавлены в установку и типовую настройку.

Дочерние элементы

Раздел

Необязательный компонент

Добавляет новый раздел в конец установки и типовой настройки или новую плитку в конец домашних страниц ролей. Можно добавить только одну новую плитку, за исключением случая, когда конкретная роль разрешает несколько ролей, как, например, роль файлового сервера.

Атрибуты

Наименование

Обязательный

Имя расширения, которое нужно указать, если к установке и типовой настройке («InitConfig») или домашней странице роли применяются новая фирменная символика и новые разделы. Должно использоваться одно из следующих значений: InitConfig, ADAM, ADFS, Application, Certificate, DHCP, Directory, Fax, File, Web, Media, NAS, Print, RMS,TS, UDDI, VirtualServer, WDS, WSS или Windows® Server Update Services (WSUS).

ResourceDllPath

Необязательный компонент

Путь к библиотеке ресурсов, из которой загружаются все ресурсы для данного расширения. Если путь не указан, будет использована библиотека ресурсов по умолчанию, которая задана в корневом элементе ServerUIExtension.

Библиотека должна находиться в папке %WINDIR%\system32.

Будут обработаны переменные среды.

Пример запроса

Следующий пример XML-файла показывает определение схемы элемента Extension.

<xs:complexType name="ExtensionType">
   <xs:sequence>
	<xs:element name="Section" type="SectionType" minOccurs="0" maxOccurs="unbounded"/>
   </xs:sequence>
	<xs:attribute name="Name" type="ExtensionNameType" use="required"/>
	<xs:attribute name="ResourceDllPath" type="xs:string" use="optional"/>
	<xs:attribute name="HeaderTitleId" type="StringIdType" use="optional"/>
	<xs:attribute name="HeaderIconId" type="IconIdType" use="optional"/>
	<xs:attribute name="HeaderImageId" type="ImageIdType" use="optional"/>
	<xs:attribute name="HeaderDescriptionId" type="StringIdType" 
					use="optional"/>
</xs:complexType>

Элемент Section

Новые разделы можно добавлять под существующими как в окне «Задачи начальной настройки», так и в диспетчере сервера. В окне «Задачи начальной настройки» можно также изменять существующие разделы. При изменении существующего раздела атрибут Id определяет изменяемый раздел. Если атрибут Id не задан, будет добавлен новый раздел.

Примечание.

Для задач в окне «Задачи начальной настройки» сведения о состоянии не отображаются.

Дочерние элементы

HelpLink

Необязательный компонент

Задает сведения, необходимые для запуска раздела справки.

Task

Необязательный компонент

Указывает задачи, которые будут запущены. Для задач в окне «Задачи начальной настройки» сведения о состоянии не отображаются.

Атрибуты

TitleId

Необязательный компонент

Идентификатор в динамической библиотеке ресурсов, из которой загружается название раздела.

Id

Необязательный компонент

Идентификатор существующего раздела в окне «Задачи начальной настройки», который будет изменен. Имена разделов для идентификации разделов: «1», «2» и «3».

DescriptionId

Необязательный компонент

Идентификатор описания, которое отображается в верхней части раздела на домашней странице. Этот атрибут игнорируется в InitConfig.

BrandingImageId

Необязательный компонент

Фирменное изображение изготовителя оборудования (OEM), которое отображается в разделе. Прозрачный цвет - Color.Magenta.

Пример запроса

Следующий пример XML-файла показывает определение схемы элемента Section.

<xs:complexType name="SectionType">
   <xs:sequence>
	<xs:element name="HelpLink" type="HelpLinkType" minOccurs="0"/>
	<xs:element name="Task" type="TaskType" minOccurs="0" 
maxOccurs="unbounded"/>
	<xs:attribute name="BrandingImageId" type="ImageIdType" 
   </xs:sequence>
	<xs:attribute name="TitleId" type="StringIdType" use="optional"/>
	<xs:attribute name="Id" type="SectionIdType" use="optional"/>
</xs:complexType>

Элемент HelpLink

Элемент HelpLink - это точка запуска для предоставления поддержки пользователя изготовителем оборудования (OEM). Справку можно запустить тремя способами: используя раздел справки в CHM, URL-адрес или произвольную команду, которая откроет справку в какой-либо другой форме.

Примечание.

В разделе может находиться только один элемент HelpLink.

Атрибуты

ActionLinkAttributes

нет

И ссылки справки, и задачи в своей основе предназначены для одного и того же: выполнение какого-либо действия при щелчке ссылки пользователем. Для обеспечения максимальной гибкости обе эти ссылки смогут запускать действие в виде:

  • Раздел справки (в CHM-файле)

  • URL-адреса;

  • произвольной команды.

Если указано более одного конечного объекта справки, конечный объект выбирается в порядке, определяемом маркированным списком, приведенным в предыдущем абзаце. Например, если имеются как раздел справки, так и URL-адрес, будет открыт только раздел справки.

Пример запроса

Следующий пример XML-файла показывает определение схемы элемента HelpLink.

<xs:complexType name="HelpLinkType">
   <xs:attributeGroup ref="ActionLinkAttributes"/>
</xs:complexType> 

Элемент ActionLinkAttributes

И ссылки справки, и задачи в своей основе предназначены для одного и того же: выполнять какое-либо действие при щелчке ссылки пользователем. Для обеспечения гибкости обе эти ссылки запускают действие в виде раздела справки, URL-адреса или другой команды.

Атрибуты

LinkId

Необязательный компонент

Идентификатор строки для ссылки, загружаемой из ресурсов.

ToolTipId

Необязательный компонент

Идентификатор строки для подсказки, отображаемой для ссылки. Если он не указан, а атрибуты Url или UrlId заданы, в качестве подсказки отображается URL-адрес.

DescriptionId

Требуется для всех вариантов, кроме InitConfig

Идентификатор строки описания, которое отображается рядом со ссылкой действия на домашней странице. Этот атрибут в расширении InitConfig игнорируется.

HelpFile

Необязательный компонент

Имя файла скомпилированного HTML-файла справки (CHM). Для имени раздела внутри CHM-файла также необходимо задать атрибут HelpTopic, исключая запуск при установке и типовой настройке.

Обрабатываются переменные среды. Однако не рекомендуется вводить абсолютный путь. Программный интерфейс приложения (API) справки может автоматически выбрать CHM-файл во встроенном каталоге и выполнить локализацию.

HelpTopic

Необязательный компонент

Если задан атрибут HelpFile, атрибут HelpFile - это имя раздела внутри CHM-файла.

Команда

Необязательный компонент

Команда, которая запускается при щелчке задачи.

Обрабатываются переменные среды.

CommandArguments

Необязательный компонент

Аргументы, которые передаются выполняемой команде. Обрабатываются переменные среды.

Url

Необязательный компонент

URL-адрес, который открывается при щелчке ссылки справки. Веб-сайт отображается в браузере пользователя по умолчанию.

UrlID

Необязательный компонент

Локализуемый URL-адрес, который загружается из библиотеки ресурсов. Веб-сайт открывается в браузере пользователя по умолчанию.

Пример запроса

Следующий пример XML-файла показывает определение схемы элемента ActionLinksAttributes.

<xs:attributeGroup name="ActionLinkAttributes">
   <xs:attribute name="LinkId" type="StringIdType" use="optional"/>
   <xs:attribute name="ToolTipId" type="StringIdType" use="optional"/>
   <xs:attribute name="DescriptionId" type="StringIdType" use="optional"/>
   <xs:attribute name="HelpFile" type="xs:string" use="optional"/>
   <xs:attribute name="HelpTopic" type="xs:string" use="optional"/>
   <xs:attribute name="Command" type="xs:string" use="optional"/>
   <xs:attribute name="CommandArguments" type="xs:string" use="optional"/>
   <xs:attribute name="Url" type="xs:string" use="optional"/>
   <xs:attribute name="UrlId" type="StringIdType" use="optional"/>
</xs:attributeGroup>

Элемент Task

Элемент Task определяется соответствующей ссылкой и является разделом справки, URL-адресом либо командой, которая будет выполняться при запуске задачи.

Атрибуты

Идентификатор

Необязательный компонент

Идентификатор существующей задачи в окне «Задачи начальной настройки», которая будет изменена.

Доступны следующие идентификаторы задач: AddRoles, AddFeatures, ComputerName, EnableUpdates, Firewall, InstallUpdates, Networking, RemoteDesktop, RestoreNetwork и TimeZone.

IconId

Необязательный компонент

Идентификатор ресурса для отображаемого значка задачи. Размер значка должен быть 24x24 пикселя.

Hide

Необязательный компонент

Задает, следует ли скрывать задачу. По умолчанию отображаются все задачи.

TaskArguments

Необязательный компонент

Специализированные параметры, которые интерпретируются в зависимости от потребностей каждой задачи. В настоящее время этот аргумент использует только задача Networking.

Указывает число сетевых плат, которое выводится перед отображением фразы «Несколько сетевых плат.». По умолчанию значение равно 2. Например, команда TaskArguments="5" отобразит до 5 сетевых подключений.

Пример запроса

Следующий пример XML-файла показывает определение схемы элемента Task.

<xs:complexType name="TaskType">
   <xs:attributeGroup ref="ActionLinkAttributes"/>
   <xs:attribute name="Id" type="TaskIdType" use="optional"/>
   <xs:attribute name="IconId" type="IconIdType" use="optional"/>
   <xs:attribute name="Hide" type="xs:boolean" use="optional"/>
   <xs:attribute name="TaskArguments" type="xs:string" use="optional"/>
</xs:complexType>

Дополнительные типы

Для пояснения диапазона допустимых значений атрибутов предоставлены следующие типы.

StringID

Идентификатор, который соответствует строке в ресурсах DLL. Идентификатор должен быть неотрицательным целым числом.

ImageType

Идентификатор, который соответствует изображению в ресурсах DLL. Это просто строка, но она поясняет, когда атрибут указывает на изображение в ресурсах DLL.

IconIdType

Идентификатор ресурса для отображаемого значка задачи размером 24х24 пикселя.

ExtensionNameType

Имя, которое разрешает добавление расширения к установке и типовой настройке (называемым InitConfig) или одной из домашних страниц роли.

SectionIdTYpe

Идентификаторы разделов в окне «Задачи начальной настройки», которые могут быть изменены.

TaskIdType

Идентификаторы существующих задач в окне «Задачи начальной настройки», которые могут быть изменены.

Пример запроса

Следующий пример XML показывает дополнительные типы.

<xs:simpleType name="StringIdType">
   <xs:restriction base="xs:nonNegativeInteger"/>
</xs:simpleType>
<xs:simpleType name="ImageIdType">
   <xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="IconIdType">
   <xs:restriction base="xs:integer"/>
</xs:simpleType>
<xs:simpleType name="ExtensionNameType">
   <xs:restriction base="xs:string">
	<xs:enumeration value="InitConfig"/>
	<xs:enumeration value="ServerManagerHome"/>
	<xs:enumeration value="ManageRolesHome"/>
	<xs:enumeration value="AdamRole"/>
	<xs:enumeration value="ActiveDirectoryFederationServerRole"/>
	<xs:enumeration value="ApplicationServerRole"/>
	<xs:enumeration value="CertificateServerRole"/>
	<xs:enumeration value="DhcpServerRole"/>
	<xs:enumeration value="DnsServerRole"/>
	<xs:enumeration value="DomainControllerRole"/>
	<xs:enumeration value="FaxServerRole"/>
	<xs:enumeration value="FileServerRole"/>
	<xs:enumeration value="MediaServicesRole"/>
	<xs:enumeration value="NetworkAccessServicesRole"/>
	<xs:enumeration value="PrintServerRole"/>
	<xs:enumeration value="RightsManagementServicesRole"/>

	<xs:enumeration value="TerminalServicesRole"/>
	<xs:enumeration value="WindowsDeploymentServicesRole"/>
<xs:enumeration value-"virtualizationRole?>
<xs:enumeration value="WsusRole/>
	<xs:enumeration value="WebServerRole"/>
   </xs:restriction>
</xs:simpleType>
<xs:simpleType name="SectionIdType">
   <xs:restriction base="xs:string">
	<xs:enumeration value="1"/>
	<xs:enumeration value="2"/>
	<xs:enumeration value="3"/>
   </xs:restriction>
</xs:simpleType>
<xs:simpleType name="TaskIdType">
   <xs:restriction base="xs:string">
	<xs:enumeration value="AddRoles"/>
	<xs:enumeration value="AddFeatures"/>
	<xs:enumeration value="ComputerName"/>
	<xs:enumeration value="EnableUpdates"/>
	<xs:enumeration value="Firewall"/>
	<xs:enumeration value="InstallUpdates"/>
	<xs:enumeration value="Networking"/>
	<xs:enumeration value="RemoteDesktop"/>
	<xs:enumeration value="RestoreNetwork"/>
	<xs:enumeration value="TimeZone"/>
   </xs:restriction>
</xs:simpleType>

Ошибки и условия

Существует ряд ошибок, с которыми пользовательский интерфейс может столкнуться при инициализации данных изготовителя оборудования (OEM). Во всех таких случаях пользовательский интерфейс игнорирует ошибки и не отображает сообщений о них.

Подробное сообщение об ошибке записывается в файл журнала, чтобы помочь изготовителям оборудования (OEM) диагностировать проблемы при создании расширений. Файл журнала расположен в особой папке AppData каталога \Microsoft\Windows\ServerManager\ в файле ServerUIExtensionErrors.log. Например, полный путь в системе Windows Server® 2008 может выглядеть следующим образом:

C:\users\MyUserName\AppData\Roaming\Microsoft\Windows\ServerManager\ServerUIExtensionErrors.log

Особый пользовательский интерфейс не будет загружен, если имеет место одно из следующих условий:

  • раздел реестра не найден;

  • раздел реестра указывает на файл, который не существует;

  • XML-файл не удается разобрать.

  • XML указывает на недействительную библиотеку ресурсов.

Если ни одно из перечисленных выше условий не соблюдается, выполняются следующие условия:

  • если ресурс строки названия раздела не загружается, в данном разделе не загружается ничего;

  • если ресурс строки справки не загружается, ссылка справки не добавляется;

  • если строка справки не определяет ни одного дополнительного атрибута ссылки действия, ссылка справки не добавляется из-за отсутствия конечного объекта;

  • если ресурс строки задачи не загружается, задача не добавляется;

  • если задача не указывает хотя бы один дополнительный атрибут ссылки действия, задача не добавляется;

  • если дополнительный атрибут указан и должен быть загружен из ресурсов, эти ресурсы должны его содержать. Если это не так, ссылка справки или задача будут пропущены;

  • расширение игнорируется, если его имя совпадает с именем расширения, которое уже было загружено;

  • расширение игнорируется, если его имя не совпадает с одним из имен в списке ExtensionNameType.

Локализованное содержимое

Чтобы предоставить локализованные версии пользовательских ресурсов, укажите в XML-файле путь к базовой библиотеке с помощью атрибута ResourceDllPath.

Ресурсы для конкретного языка необходимо установить в подкаталогах с названием соответствующего этим ресурсам культуры. Динамическая ресурсов проверяется в порядке, определенном в следующем нумерованном списке. В этом примере ResourceDllPath="%WINDIR%\system32\oem\Resource.dll": - библиотека DLL, которая указана в XML.

  1. Текущая культура пользовательского интерфейса: %WINDIR%\system32\oem\en-US\Resource.dll.

  2. Текущая нейтральная культура пользовательского интерфейса: %WINDIR%\system32\oem\en\Resource.dll.

  3. Независимые от языка ресурсы: %WINDIR%\system32\oem\Resource.dll.

См. также