Схема расширения диспетчера сервера - это инструмент, позволяющий изготовителям оборудования (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 |
нет |
И ссылки справки, и задачи в своей основе предназначены для одного и того же: выполнение какого-либо действия при щелчке ссылки пользователем. Для обеспечения максимальной гибкости обе эти ссылки смогут запускать действие в виде:
Если указано более одного конечного объекта справки, конечный объект выбирается в порядке, определяемом маркированным списком, приведенным в предыдущем абзаце. Например, если имеются как раздел справки, так и 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.
- Текущая культура пользовательского интерфейса:
%WINDIR%\system32\oem\en-US\Resource.dll.
- Текущая нейтральная культура пользовательского интерфейса:
%WINDIR%\system32\oem\en\Resource.dll.
- Независимые от языка ресурсы:
%WINDIR%\system32\oem\Resource.dll.