Справочник по схеме шаблонов приложений для UE-V 2.x

Обновлено: Август 2015 г.

Назначение: User Experience Virtualization 1.0, User Experience Virtualization 1.0 SP1, User Experience Virtualization 2.0, User Experience Virtualization 2.1

Microsoft User Experience Virtualization (UE-V) 2.0версии 2.1 и 2.1 с пакетом обновления 1 (SP1) используют XML-шаблоны расположений параметров для определения параметров настольных приложений и параметров Windows, которые записываются и применяются UE-V. UE-V включает набор шаблонов расположений параметров по умолчанию. Кроме того, настраиваемые шаблоны расположений параметров можно создавать, редактировать и проверять с помощью генератора UE-V.

Опытный пользователь может настроить XML-файл для шаблона расположений параметров. В этом разделе подробно описывается структура XML шаблонов расположений параметров UE-V 2.1 с пакетом обновления 1 (SP1) и 2.0, а также приводятся рекомендации по изменению этих файлов.

В этом разделе подробно описана структура XML шаблона расположений параметров в UE-V 2.1 и 2.1 с пакетом обновления 1 (SP1) и приведены рекомендации по изменению этого файла.

Обязательный: Верно

Тип: строковый параметр;

В декларации XML необходимо указать атрибут XML версии 1.0 (<?xml version="1.0">). Шаблоны расположений параметров, созданные генератором UE-V, сохраняются в кодировке UTF-8, несмотря на то что кодировка не указана явно. Рекомендуется включать атрибут encoding="UTF-8" в этот элемент. Во всех шаблонах, входящих в состав продукта, этот тег также указан (для справки см. документы в каталоге %ProgramFiles%\Microsoft Virtualization\Templates). Пример:

<?xml version="1.0" encoding="UTF-8"?>

Обязательный: Верно

Тип: строковый параметр;

UE-V использует пространство имен http://schemas.microsoft.com/UserExperienceVirtualization/2012/SettingsLocationTemplate для всех приложений. SettingsLocationTemplate является корневым элементом и содержит все остальные элементы. Укажите SettingsLocationTemplate во всех шаблонах с помощью следующего тега:

<SettingsLocationTemplate xmlns='http://schemas.microsoft.com/UserExperienceVirtualization/2012/SettingsLocationTemplate'>

Ниже приведены типы данных для схемы шаблона приложения UE-V.

GUID
Идентификатор GUID описывает регулярное выражение стандартного глобального уникального идентификатора в виде "\{[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}\}". Он используется в элементе Filesetting\Root\KnownFolder для проверки форматирования хорошо известных каталогов.

FilenameString
FilenameString ссылается на имя файла отслеживаемого процесса. Его значения ограничены по регулярному выражению [^ \\\? \ * \|<> /:] + (то есть не могут содержать символ обратной косой черты, подстановочные символы звездочки или вопросительного знака, символ вертикальной черты, символы «больше» или «меньше», символ косой черты и двоеточия).

IDString
IDString ссылается на значение идентификатора элементов приложения, SettingsLocationTemplate и общие элементы (используются для описания наборов приложений, которые совместно используют общие параметры). Он ограничен тем же регулярным выражением, что и параметр FilenameString ([^ \\\? \ * \|<> /:]+).

TemplateVersion
TemplateVersion является целочисленным значением, используемым для описания версии шаблона расположений параметров. Его значение может быть задано в диапазоне от 0 до 2 147 483 647.

Empty
Empty ссылается на значение NULL. Он используется в Process\ShellProcess для указания отсутствия процесса для отслеживания. Это значение не должно использоваться в шаблонах приложений.

Author
Тип данных Author — сложный тип, который определяет автора шаблона. Он содержит два дочерних элемента: Name и Email. Для типа данных Author Name является обязательным, а Email не является обязательным. Этот тип более подробно описан в описании элемента SettingsLocationTemplate.

Range
Range определяет целочисленный класс, состоящий из двух дочерних элементов: Minimum и Maximum. Этот тип данных реализуется в типе данных ProcessVersion. Если он указан, необходимо включить оба значения Minimum и Maximum.

ProcessVersion
ProcessVersion определяет тип с четырьмя дочерними элементами: Major, Minor, Build и Patch. Этот тип данных используется элементом Process для записи значений ProductVersion и FileVersion. Данные для этого типа имеют тип Range. Дочерний элемент Major является обязательным, остальные необязательны.

Архитектура
Architecture перечисляет два возможных значения: Win32 и Win64. Эти значения используются для указания архитектуры процесса.

Process
Тип данных Process представляет собой контейнер, используемый для описания процессов, которые должны отслеживаться UE-V. Он содержит шесть дочерних элементов: Filename, Architecture, ProductName, FileDescription, ProductVersion и FileVersion. В этой таблице подробно описаны типы данных каждого элемента.

 

Элемент

Тип данных

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

Filename

FilenameString

Верно

Архитектура

Архитектура

False

ProductName

строковый параметр;

False

FileDescription

строковый параметр;

False

ProductVersion

ProcessVersion

False

FileVersion

ProcessVersion

False

Processes
Тип данных Processes представляет контейнер для коллекции из одного или нескольких элементов Process. В типе последовательности Processes поддерживаются два дочерних элемента: Process и ShellProcess. Process является элементом типа Process, и ShellProcess является элементом типа Empty. Необходимо определить хотя бы один элемент в последовательности.

Путь
Путь используется RegistrySetting и FileSetting для ссылки на реестр и пути к файлам. Этот элемент поддерживает два необязательных атрибута: Recursive и DeleteIfNotFound. Оба атрибута устанавливаются в default="False".

Recursive означает, что путь и все вложенные каталоги включаются для параметров файла или что все дочерние разделы реестра включаются для параметров реестра. В обоих случаях в собранные данные включаются все элементы на текущем уровне. Для объекта FileSettings все файлы в указанном каталоге будут включены в данные, собранные UE-V, но каталоги включены не будут. Для путей реестра собираются все значения в текущем пути, но дочерние разделы реестра не собираются. В обоих случаях следует соблюдать осторожность во избежание сбора больших наборов данных или большого числа элементов.

Атрибут DeleteIfNotFound удаляет параметр из данных пути хранения параметров пользователя. Это может быть полезно в случаях, когда удаление этих параметров из пакета позволит освободить большой объем дискового пространства на файловом сервере путей хранения параметров.

FileMask
FileMask указывает только определенные типы файлов для каталога, определяемого Path. Например, Path может быть равным C:\users\username\files, а FileMask может быть равной *.txt для включения только текстовых файлов.

RegistrySetting
RegistrySetting представляет контейнер для разделов реестра и значений и соответствующего ожидаемого поведения со стороны агента UE-V. В этом типе определены четыре дочерних элемента: Path, Name, Exclude и последовательность значений Path и Name.

FileSetting
FileSetting содержит параметры, связанные с файлами и путями файлов. Определяются четыре дочерних элемента: Root, Path, FileMask и Exclude. Root является обязательным, остальные необязательны.

Settings
Settings — это контейнер для всех параметров, которые применяются к конкретному шаблону. Он содержит экземпляры параметров Registry, File, SystemParameter и CustomAction, описанные выше. Кроме того, он также может содержать следующие дочерние элементы с описанным поведением:

 

Элемент

Описание

Asynchronous

Асинхронные параметры пакетов применяются без блокирования запуска приложения, чтобы запуск приложения продолжался с применением параметров. Это полезно для параметров, которые могут быть применены асинхронно, таких как get/set через API, например SystemParameterSetting.

PreventOverlappingSynchronization

По умолчанию UE-V сохраняет параметры для приложения только при закрытии последнего экземпляра приложения, использующего шаблон. Если этот элемент имеет значение false, UE-V экспортирует параметры, даже если выполняются другие экземпляры приложения. Подходящие шаблоны — те, которые имеют раздел элемента Common, — поставляемые с UE-V, используют этот флаг, чтобы включить экспорт общих параметров при каждом закрытии приложения, при этом исключив из экспорта параметры, специфичные для приложения, до закрытия последнего экземпляра.

AlwaysApplySettings

(представлен в версии 2.1)

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

Обязательный: Верно

Тип: строковый параметр;

Name определяет уникальное имя для шаблона расположений параметров. Используется для отображения при ссылке на шаблон в WMI, PowerShell, средстве просмотра событий и журналах отладки. В целом следует избегать ссылок на сведения о версии, так как их можно получить из элемента ProductVersion. Например, при указании <Name>My Application</Name> вместо <Name>My Application 1.1</Name>.

noteПримечание
UE-V не ссылается на внешние DTD, поэтому невозможно использовать именованные объекты в шаблоне расположений параметров. Например, не используйте &reg; для ссылки на обозначение зарегистрированной торговой марки ®. Вместо этого используйте канонические нумерованные ссылки для включения этих типов специальных символов, например &#174 для символа ®. Это правило применяется для всех строковых значений в этом документе.

На странице http://www.w3.org/TR/xhtml1/dtds.html приведен полный список сущностей знаков. Документы в кодировке UTF-8 могут напрямую включать символы Юникода. При сохранении шаблонов через генератор UE-V сущности знаков автоматически преобразуются в их представление в Юникоде.

Обязательный: Верно

Тип: строковый параметр;

ID заполняет уникальный идентификатор для определенного шаблона. Этот тег становится основным идентификатором, который агент UE-V использует для ссылки на шаблон во время выполнения (например, см. вывод командлетов PowerShell Get-UevTemplate и Get-UevTemplateProgram). По соглашению этот тег должен не содержать пробелы, что упрощает написание скриптов. В этом элементе должны быть указаны номера версий для легкой идентификации шаблона, например <ID>MicrosoftCalculator6</ID> или <ID>MicrosoftOffice2010Win64</ID>.

Обязательный: Верно

Тип: Целое число

Минимальное значение: 0

Максимальное значение: 2 147 483 647

Version определяет версию шаблона расположений параметров для администрирования отслеживания изменений. Генератор UE-V автоматически увеличивает этот номер на единицу каждый раз при сохранении шаблона. Обратите внимание, что в этом поле должно указываться целое число; дробные значения, такие как <Version>2.5</Version>, не допускаются.

Подсказка. Сведения об изменениях версий можно сохранить с помощью тегов комментария XML <!-- -->, например:

  <!--
     Version History

     Version 1 Jul 05, 2012 Initial template created by Generator - Denise@Contoso.com
     Version 2 Jul 31, 2012 Added support for app.exe v2.1.3 - Mark@Contoso.com
     Version 3 Jan 01, 2013 Added font settings support - Mark@Contoso.com
     Version 4 Jan 31, 2013 Added support for plugin settings - Tony@Contoso.com
   -->
  <Version>4</Version>
ImportantВажно
Это значение опрашивается, чтобы определить, должна ли применяться новая версия шаблона к существующему шаблону в следующих случаях:

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

  • при выполнении командлета PowerShell Update-UevTemplate;

  • при вызове метода microsoft\uev:SettingsLocationTemplate Update посредством инструментария WMI.

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

Тип: строковый параметр;

Элемент Author идентифицирует автора шаблона расположений параметров. Поддерживаются два дополнительных дочерних элемента: Name и Email. Оба атрибута являются необязательными, однако если дочерний элемент Email указан, то нужно указать и Name. Элемент Author содержит полное имя контактного лица для шаблона расположений параметров, а указанный адрес электронной почты должен принадлежать автору. Рекомендуется включать эту информацию в шаблоны, распространяемые публично, например в Коллекции шаблонов UE-V.

Обязательный: Верно

Тип: Элемент

Processes содержит не менее одного элемента <Process>, который, в свою очередь, содержит следующие дочерние элементы: Filename, Architecture, ProductName, FileDescription, ProductVersion и FileVersion. Дочерний элемент Filename является обязательным, а другие необязательны. Полностью заполненный элемент содержит теги по аналогии с этим примером:

    <Process>
      <Filename>MyApplication.exe</Filename>
      <Architecture>Win64</Architecture>
      <ProductName> MyApplication </ProductName>
      <FileDescription>MyApplication.exe</FileDescription>
      <ProductVersion>
        <Major Minimum="2" Maximum="2" />
        <Minor Minimum="0" Maximum="0" />
        <Build Minimum="0" Maximum="0" />
        <Patch Minimum="5" Maximum="5" />
      </ProductVersion>
      <FileVersion>
        <Major Minimum="2" Maximum="2" />
        <Minor Minimum="0" Maximum="0" />
        <Build Minimum="0" Maximum="0" />
        <Patch Minimum="5" Maximum="5" />
      </FileVersion>
    </Process>

Обязательный: Верно

Тип: строковый параметр;

Filename указывает действительное имя исполняемого файла так, как оно отображается в файловой системе. Этот элемент задает основной критерий, с помощью которого UE-V определяет, применяется ли шаблон к процессу или нет. Этот элемент должен быть указан в шаблоне расположений параметров XML.

Допустимые имена файлов не должны соответствовать регулярному выражению [^ \\\? \ * \|<> /:]+, то есть не могут содержать символ обратной косой черты, подстановочные символы звездочки или вопросительного знака, символ вертикальной черты, знаки «больше» или «меньше», символ косой черты и двоеточия (символы \ ? * | < > / и :).

Подсказка. Для проверки строки на соответствие этому регулярному выражению используйте окно командной строки PowerShell и замените имя вашего исполняемого файла на YourFileName:

"YourFileName.exe" -match "[\\\?\*\|<>/:]+"

Значение True означает, что строка содержит недопустимые символы. Ниже приведены некоторые примеры недопустимых значений.

  • \\server\share\program.exe

  • Program*.exe

  • PRO?RAM.exe

  • Program<1>.exe

noteПримечание
Генератор UE-V кодирует знаки «больше» и «меньше» как символы &gt; и &lt; соответственно.

В редких случаях значение FileName не будет включать расширение .exe, но в общем случае расширение нужно указывать как часть значения. Например, <Filename>MyApplictication.exe</Filename> должно быть указано вместо <Filename>MyApplictication</Filename>. Во втором примере не будет применяться шаблон для процесса, если фактическое имя исполняемого файла — MyApplication.exe.

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

Тип: Architecture (строка)

Architecture ссылается на архитектуру процессора, для которой был скомпилирован целевой исполняемый файл. Допустимые значения: Win32 для 32-разрядных приложений или Win64 для 64-разрядных приложений. При наличии этот тег ограничивает возможность применения шаблона расположений параметров конкретной архитектурой приложения. В качестве примера сравните файлы %ProgramFiles%\Microsoft User Experience Virtualization\templates\MicrosoftOffice2010Win32.xml и MicrosoftOffice2010Win64.xml, входящие в UE-V. Это удобно, если относительные пути для разных версий исполняемого файла были изменены или при переходе от одной архитектуры процессора к другой были добавлены или удалены параметры.

Если этот элемент отсутствует, шаблон расположений параметров игнорирует архитектуру процесса и применяется и к 32-разрядным, и к 64-разрядным процессам, если применяются имя файла и другие атрибуты.

noteПримечание
UE-V в этой версии не поддерживает процессоры ARM.

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

Тип: строковый параметр;

ProductName — этот необязательный элемент используется для идентификации продукта для административных целей или отчетов. ProductName отличается от Filename в том, что его значение не ограничивается регулярным выражением. Это позволяет сделать более понятным описание процесса, в котором имя исполняемого файла может быть не очевидным. Пример:

    <Process>
      <Filename>MyApplication.exe</Filename>
      <ProductName>My Application 6.x by Contoso.com</ProductName>
      <ProductVersion>
        <Major Minimum="6" Maximum="6" />
      </ProductVersion>
    </Process>

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

Тип: строковый параметр;

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

Например, в наборе приложений с его помощью удобно описать функции двух исполняемых файлов (MyApplication.exe и MyApplicationHelper.exe), как показано ниже:

<Processes>
 
   <Process>
      <Filename>MyApplication.exe</Filename>
      <FileDescription>My Application Main Engine</ FileDescription>
      <ProductVersion>
        <Major Minimum="6" Maximum="6" />
      </ProductVersion>
    </Process>
    <Process>
      <Filename>MyApplicationHelper.exe</Filename>
      <FileDescription>My Application Background Process Executable</FileDescription>
      <ProductVersion>
        <Major Minimum="6" Maximum="6" />
      </ProductVersion>
    </Process>
</Processes>

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

Тип: строковый параметр;

ProductVersion ссылается на основной и вспомогательный номера версии файла, а также сборку и уровень обновления. ProductVersion является необязательным элементом, но, если указан, он должен содержать по крайней мере один дочерний элемент Major. Значение необходимо указать в виде диапазона Minimum="X" Maximum="Y", где X и Y — целые числа. Значения Minimum и Maximum могут быть одинаковыми.

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

Пример 1.

Версия продукта: в UE-V указана 1.0, генератор создает следующий XML:

      <ProductVersion>
        <Major Minimum="1" Maximum="1" />
        <Minor Minimum="0" Maximum="0" />
      </ProductVersion>

Пример 2.

Версия файла: в UE-V указана 5.0.2.1000, генератор создает следующий XML:

      <FileVersion>
        <Major Minimum="5" Maximum="5" />
        <Minor Minimum="0" Maximum="0" />
        <Build Minimum="2" Maximum="2" />
        <Patch Minimum="1000" Maximum="1000" />
      </FileVersion>

Неверный пример 1 — неполный диапазон.

Присутствует только атрибут Minimum. В диапазон также должен быть включен атрибут Maximum.

      <ProductVersion>
        <Major Minimum="2" />
      </ProductVersion>

Неверный пример 2 — элемент Minor указан без элемента Major:

Присутствует только элемент Minor. Также необходимо указать элемент Major.

      <ProductVersion>
        <Minor Minimum="0" Maximum="0" />
      </ProductVersion>

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

Тип: строковый параметр;

FileVersion различается для опубликованного приложения и внутренних сведений о сборке исполняемого файла. Для большинства коммерческих приложений эти числа совпадают. Там, где они отличаются, версия продукта файла указывает на общую версию файла, а версия файла указывает на конкретную сборку файла (например, для исправления или обновления). Этот элемент определяет файлы уникальным образом без нарушения логики обнаружения.

Чтобы определить версию продукта и версию файла определенного исполняемого файла, щелкните правой кнопкой мыши файл в Проводнике, выберите «Свойства», затем откройте вкладку «Сведения».

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

Дочерние элементы и правила синтаксиса для элемента FileVersion идентичны ProductVersion.

      <Process>
        <Filename>MSACCESS.EXE</Filename>
        <Architecture>Win32</Architecture>
        <ProductVersion>
          <Major Minimum="14" Maximum="14" />
          <Minor Minimum="0" Maximum="0" />
        </ProductVersion>
        <FileVersion>
          <Major Minimum="14" Maximum="14" />
          <Minor Minimum="0" Maximum="0" />
        </FileVersion>
      </Process>

Application — это контейнер для параметров, которые применяются к конкретному приложению. Это коллекция следующих полей и типов.

 

Поле и тип

Описание

Имя

Указывает уникальное имя для шаблона расположений параметров. Используется для отображения при ссылке на шаблон в WMI, PowerShell, средстве просмотра событий и журналах отладки. Более подробные сведения см. в разделе Элемент Name.

ID

Заполняет уникальный идентификатор для определенного шаблона. Этот тег становится основным идентификатором, который агент UE-V использует для ссылки на шаблон во время выполнения. Более подробные сведения см. в разделе Элемент ID.

Описание

Необязательное описание шаблона.

LocalizedNames

Необязательное имя, которое отображается в пользовательском интерфейсе, локализованном для языкового стандарта.

LocalizedDescriptions

Необязательное описание шаблона, локализованное для языкового стандарта.

Версия

Определяет версию шаблона расположений параметров для администрирования отслеживания изменений. Более подробные сведения см. в разделе Элемент Version.

DeferToMSAccount

Определяет, включен ли этот шаблон в сочетании с учетной записью Майкрософт. Этот шаблон автоматически отключается, если для пользователя на компьютере включена синхронизация MSA.

DeferToOffice365

Аналогично MSA этот параметр определяет, включен ли шаблон в сочетании с Office 365. Если Office 365 используется для синхронизации параметров, этот шаблон будет автоматически отключен.

FixedProfile (появился в версии 2.1)

Указывает, что этот шаблон может быть связан только с профилем, указанным в этом элементе, и не может быть изменен посредством WMI или PowerShell.

Processes

Контейнер для коллекции из одного или нескольких элементов Process. Более подробные сведения см. в разделе Элементы Processes и Process.

Settings

Контейнер для всех параметров, которые применяются к конкретному шаблону. Он содержит экземпляры параметров Registry, File, SystemParameter и CustomAction. Дополнительные сведения см. в разделе Параметры в Типы данных.

Элемент Common похож на элемент Application, но он всегда связан с двумя или более элементами Application. Раздел Common представляет набор параметров, которые являются общими для этих экземпляров Application. Это коллекция следующих полей и типов.

 

Поле и тип

Описание

Имя

Указывает уникальное имя для шаблона расположений параметров. Используется для отображения при ссылке на шаблон в WMI, PowerShell, средстве просмотра событий и журналах отладки. Более подробные сведения см. в разделе Элемент Name.

ID

Заполняет уникальный идентификатор для определенного шаблона. Этот тег становится основным идентификатором, который агент UE-V использует для ссылки на шаблон во время выполнения. Более подробные сведения см. в разделе Элемент ID.

Описание

Необязательное описание шаблона.

LocalizedNames

Необязательное имя, которое отображается в пользовательском интерфейсе, локализованном для языкового стандарта.

LocalizedDescriptions

Необязательное описание шаблона, локализованное для языкового стандарта.

Версия

Определяет версию шаблона расположений параметров для администрирования отслеживания изменений. Более подробные сведения см. в разделе Элемент Version.

DeferToMSAccount

Определяет, включен ли этот шаблон в сочетании с учетной записью Майкрософт. Этот шаблон автоматически отключается, если для пользователя на компьютере включена синхронизация MSA.

DeferToOffice365

Аналогично MSA этот параметр определяет, включен ли шаблон в сочетании с Office 365. Если Office 365 используется для синхронизации параметров, этот шаблон будет автоматически отключен.

FixedProfile (появился в версии 2.1)

Указывает, что этот шаблон может быть связан только с профилем, указанным в этом элементе, и не может быть изменен посредством WMI или PowerShell.

Settings

Контейнер для всех параметров, которые применяются к конкретному шаблону. Он содержит экземпляры параметров Registry, File, SystemParameter и CustomAction. Дополнительные сведения см. в разделе Параметры в Типы данных.

Этот элемент определяет параметры для одного приложения или набора приложений.

 

Поле и тип

Описание

Имя

Указывает уникальное имя для шаблона расположений параметров. Используется для отображения при ссылке на шаблон в WMI, PowerShell, средстве просмотра событий и журналах отладки. Более подробные сведения см. в разделе Элемент Name.

ID

Заполняет уникальный идентификатор для определенного шаблона. Этот тег становится основным идентификатором, который агент UE-V использует для ссылки на шаблон во время выполнения. Более подробные сведения см. в разделе Элемент ID.

Описание

Необязательное описание шаблона.

LocalizedNames

Необязательное имя, которое отображается в пользовательском интерфейсе, локализованном для языкового стандарта.

LocalizedDescriptions

Необязательное описание шаблона, локализованное для языкового стандарта.

Ниже приведен файл SettingsLocationTemplate.xsd с элементами, дочерними элементами, атрибутами и параметрами.

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="UevSettingsLocationTemplate"
  targetNamespace="http://schemas.microsoft.com/UserExperienceVirtualization/2013A/SettingsLocationTemplate"
  elementFormDefault="qualified"
  xmlns="http://schemas.microsoft.com/UserExperienceVirtualization/2013A/SettingsLocationTemplate"
  xmlns:mstns="http://schemas.microsoft.com/UserExperienceVirtualization/2013A/SettingsLocationTemplate"
  xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <xs:simpleType name="Guid">
        <xs:restriction base="xs:string">
            <xs:pattern value="\{[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}\}" />
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="FilenameString">
        <xs:restriction base="xs:string">
            <xs:pattern value="[^\\\?\*\|&lt;&gt;/:]+" />
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="IDString">
        <xs:restriction base="xs:string">
            <xs:pattern value="[^\\\?\*\|&lt;&gt;/:.]+" />
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="CompositeIDString">
        <xs:restriction base="xs:string">
            <xs:pattern value="[^\\\?\*\|&lt;&gt;/:.]+([.][^\\\?\*\|&lt;&gt;/:.]+)?" />
        </xs:restriction>
    </xs:simpleType>
  
    <xs:simpleType name="TemplateVersion">
        <xs:restriction base="xs:integer">
            <xs:minInclusive value="0" />
            <xs:maxInclusive value="2147483647" />
        </xs:restriction>
    </xs:simpleType>

    <xs:complexType name="Empty">
        <xs:sequence/>
    </xs:complexType>

    <xs:complexType name="LocalizedString">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="Locale" type="xs:string" use="required"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>

    <xs:complexType name="LocalizedName">
        <xs:sequence>
            <xs:element name="Name" type="LocalizedString" minOccurs="1" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="LocalizedDescription">
        <xs:sequence>
            <xs:element name="Description" type="LocalizedString" minOccurs="1" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="ReplacedTemplates">
      <xs:sequence>
        <xs:element name="ID" type="CompositeIDString" minOccurs="1" maxOccurs="unbounded" />
    </xs:sequence>
    </xs:complexType>
  
    <xs:complexType name="Author">
        <xs:all>
            <xs:element name="Name" type="xs:string" minOccurs="1" />
            <xs:element name="Email" type="xs:string" minOccurs="0" />
        </xs:all>
    </xs:complexType>

    <xs:complexType name="Range">
        <xs:attribute name="Minimum" type="xs:integer" use="required"/>
        <xs:attribute name="Maximum" type="xs:integer" use="required"/>
    </xs:complexType>

    <xs:complexType name="ProcessVersion">
        <xs:sequence>
            <xs:element name="Major" type="Range" minOccurs="1" />
            <xs:element name="Minor" type="Range" minOccurs="0" />
            <xs:element name="Build" type="Range" minOccurs="0" />
            <xs:element name="Patch" type="Range" minOccurs="0" />
        </xs:sequence>
    </xs:complexType>

    <xs:simpleType name="Architecture">
        <xs:restriction base="xs:string">
            <xs:enumeration value="Win32"/>
            <xs:enumeration value="Win64"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:complexType name="Process">
        <xs:sequence>
            <xs:element name="Filename" type="FilenameString" minOccurs="1" />
            <xs:element name="Architecture" type="Architecture" minOccurs="0" />
            <xs:element name="ProductName" type="xs:string" minOccurs="0" />
            <xs:element name="FileDescription" type="xs:string" minOccurs="0" />
            <xs:element name="ProductVersion" type="ProcessVersion" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="FileVersion" type="ProcessVersion" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="Processes">
        <xs:sequence>
            <xs:choice minOccurs="1">
                <xs:element name="Process" type="Process" />
                <xs:element name="ShellProcess" type="Empty" />
            </xs:choice>
            <xs:element name="Process" type="Process" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="Path">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="Recursive" type="xs:boolean" default="false"/>
                <xs:attribute name="DeleteIfNotFound" type="xs:boolean" default="false"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>

    <xs:complexType name="RegistrySetting">
        <xs:sequence>
            <xs:element name="Path" type="Path" />
            <xs:element name="Name" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
            <xs:element name="Exclude" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Path" type="Path" minOccurs="0" />
                        <xs:element name="Name" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="FileSetting">
        <xs:sequence>

            <xs:element name="Root">
                <xs:complexType>
                    <xs:choice>
                        <xs:element name="KnownFolder" type="Guid" />
                        <xs:element name="RegistryEntry" type="xs:string" />
                        <xs:element name="EnvironmentVariable" type="xs:string" />
                    </xs:choice>
                </xs:complexType>
            </xs:element>

            <xs:element name="Path" minOccurs="0" type="Path" />
            <xs:element name="FileMask" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>

            <xs:element name="Exclude" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Path" type="Path" minOccurs="0" />
                        <xs:element name="FileMask" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
                    </xs:sequence>
                </xs:complexType>
            </xs:element>

        </xs:sequence>
    </xs:complexType>

    <xs:simpleType name="CustomActionSetting">
        <xs:restriction base="xs:anyURI"/>
    </xs:simpleType>

    <xs:simpleType name="SystemParameterSetting">
        <xs:restriction base="xs:string">

            <!-- Accessibility parameters -->
            <xs:enumeration value="AccessTimeout"/>
            <xs:enumeration value="AudioDescription"/>
            <xs:enumeration value="ClientAreaAnimation"/>
            <xs:enumeration value="DisableOverlappedContent"/>
            <xs:enumeration value="FilterKeys"/>
            <xs:enumeration value="FocusBorderHeight"/>
            <xs:enumeration value="FocusBorderWidth"/>
            <xs:enumeration value="HighContrast"/>
            <xs:enumeration value="MessageDuration"/>
            <xs:enumeration value="MouseClickLock"/>
            <xs:enumeration value="MouseClickLockTime"/>
            <xs:enumeration value="MouseKeys"/>
            <xs:enumeration value="MouseSonar"/>
            <xs:enumeration value="MouseVanish"/>
            <xs:enumeration value="ScreenReader"/>
            <xs:enumeration value="ShowSounds"/>
            <xs:enumeration value="SoundSentry"/>
            <xs:enumeration value="StickyKeys"/>
            <xs:enumeration value="ToggleKeys"/>

            <!-- Input parameters -->
            <xs:enumeration value="Beep"/>
            <xs:enumeration value="BlockSendInputResets"/>
            <xs:enumeration value="DefaultInputLang"/>
            <xs:enumeration value="DoubleClickTime"/>
            <xs:enumeration value="DoubleClkHeight"/>
            <xs:enumeration value="DoubleClkWidth"/>
            <xs:enumeration value="KeyboardCues"/>
            <xs:enumeration value="KeyboardDelay"/>
            <xs:enumeration value="KeyboardPref"/>
            <xs:enumeration value="KeyboardSpeed"/>
            <xs:enumeration value="Mouse"/>
            <xs:enumeration value="MouseButtonSwap"/>
            <xs:enumeration value="MouseHoverHeight"/>
            <xs:enumeration value="MouseHoverTime"/>
            <xs:enumeration value="MouseHoverWidth"/>
            <xs:enumeration value="MouseSpeed"/>
            <xs:enumeration value="MouseTrails"/>
            <xs:enumeration value="SnapToDefButton"/>
            <xs:enumeration value="WheelScrollChars"/>
            <xs:enumeration value="WheelScrollLines"/>

            <!-- Desktop parameters (limited subset) -->
            <xs:enumeration value="DeskWallpaper"/>
            <xs:enumeration value="DesktopColor"/>

        </xs:restriction>
    </xs:simpleType>

    <xs:complexType name="Settings">
        <xs:sequence>
            <xs:element name="Asynchronous" type="xs:boolean" minOccurs="0" />
            <xs:element name="PreventOverlappingSynchronization" type="xs:boolean" minOccurs="0" />
            <xs:element name="AlwaysApplySettings" type="xs:boolean" minOccurs="0" />
            <xs:choice minOccurs="0" maxOccurs="unbounded">
                <xs:element name="Registry" type="RegistrySetting" />
                <xs:element name="File" type="FileSetting" />
                <xs:element name="SystemParameter" type="SystemParameterSetting" />
                <xs:element name="CustomAction" type="CustomActionSetting" />
            </xs:choice>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="Common">
        <xs:sequence>
            <xs:element name="Name" type="xs:string" />
            <xs:element name="ID" type="IDString" />
            <xs:element name="ReplacedTemplates" type="ReplacedTemplates" minOccurs="0" />
            <xs:element name="Description" type="xs:string" minOccurs="0" />
            <xs:element name="LocalizedNames" type="LocalizedName" minOccurs="0" />
            <xs:element name="LocalizedDescriptions" type="LocalizedDescription" minOccurs="0" />
            <xs:element name="Version" type="xs:integer" />
            <xs:element name="DeferToMSAccount" type="Empty"  minOccurs="0" />
            <xs:element name="DeferToOffice365" type="Empty" minOccurs="0" />
            <xs:element name="Settings" type="Settings" />
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="Application">
        <xs:sequence>
            <xs:element name="Name" type="xs:string" />
            <xs:element name="ID" type="IDString" />
            <xs:element name="ReplacedTemplates" type="ReplacedTemplates" minOccurs="0" />
            <xs:element name="Description" type="xs:string" minOccurs="0" />
            <xs:element name="LocalizedNames" type="LocalizedName" minOccurs="0" />
            <xs:element name="LocalizedDescriptions" type="LocalizedDescription" minOccurs="0" />
            <xs:element name="Version" type="xs:integer" />
            <xs:element name="DeferToMSAccount" type="Empty"  minOccurs="0" />
            <xs:element name="DeferToOffice365" type="Empty" minOccurs="0" />
            <xs:element name="Processes" type="Processes" />
            <xs:element name="Settings" type="Settings" />
        </xs:sequence>
    </xs:complexType>


    <xs:element name="SettingsLocationTemplate">
        <xs:complexType>
            <xs:sequence>

                <xs:element name="Name" type="xs:string" />
                <xs:element name="ID" type="IDString" />
                <xs:element name="Description" type="xs:string" minOccurs="0" />
                <xs:element name="LocalizedNames" type="LocalizedName" minOccurs="0" />
                <xs:element name="LocalizedDescriptions" type="LocalizedDescription" minOccurs="0" />

                <xs:choice>

                    <!-- Single application -->
                    <xs:sequence>
                        <xs:element name="ReplacedTemplates" type="ReplacedTemplates" minOccurs="0" />
                        <xs:element name="Version" type="TemplateVersion" />
                        <xs:element name="Author" type="Author" minOccurs="0" />
                        <xs:element name="FixedProfile" type="xs:string"  minOccurs="0" />
                        <xs:element name="DeferToMSAccount" type="Empty"  minOccurs="0" />
                        <xs:element name="DeferToOffice365" type="Empty" minOccurs="0" />
                        <xs:element name="Processes" type="Processes" />
                        <xs:element name="Settings" type="Settings" />
                    </xs:sequence>

                    <!-- Suite of applications -->
                    <xs:sequence>
                        <xs:element name="ManageSuiteOnly" type="xs:boolean" minOccurs="0" />
                        <xs:element name="Author" type="Author" minOccurs="0" />
                        <xs:element name="FixedProfile" type="xs:string"  minOccurs="0" />
                        <xs:element name="Common" type="Common" />
                        <xs:element name="Application" type="Application" minOccurs="2" maxOccurs="unbounded" />
                    </xs:sequence>

                </xs:choice>

            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <!-- SettingsLocationTemplate -->

</xs:schema>

В этом разделе подробно описана структура XML шаблона расположений параметров UE-V 2.0 и приведены рекомендации по изменению этого файла.

Обязательный: Верно

Тип: строковый параметр;

В декларации XML необходимо указать атрибут XML версии 1.0 (<?xml version="1.0">). Шаблоны расположений параметров, созданные генератором UE-V, сохраняются в кодировке UTF-8, несмотря на то что кодировка не указана явно. Рекомендуется включать атрибут encoding="UTF-8" в этот элемент. Во всех шаблонах, входящих в состав продукта, этот тег также указан (для справки см. документы в каталоге %ProgramFiles%\Microsoft Virtualization\Templates). Пример:

<?xml version="1.0" encoding="UTF-8"?>

Обязательный: Верно

Тип: строковый параметр;

UE-V использует пространство имен http://schemas.microsoft.com/UserExperienceVirtualization/2012/SettingsLocationTemplate для всех приложений. SettingsLocationTemplate является корневым элементом и содержит все остальные элементы. Укажите SettingsLocationTemplate во всех шаблонах с помощью следующего тега:

<SettingsLocationTemplate xmlns='http://schemas.microsoft.com/UserExperienceVirtualization/2012/SettingsLocationTemplate'>

Ниже приведены типы данных для схемы шаблона приложения UE-V.

GUID
Идентификатор GUID описывает регулярное выражение стандартного глобального уникального идентификатора в виде "\{[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}\}". Он используется в элементе Filesetting\Root\KnownFolder для проверки форматирования хорошо известных каталогов.

FilenameString
FilenameString ссылается на имя файла отслеживаемого процесса. Его значения ограничены по регулярному выражению [^ \\\? \ * \|<> /:] + (то есть не могут содержать символ обратной косой черты, подстановочные символы звездочки или вопросительного знака, символ вертикальной черты, символы «больше» или «меньше», символ косой черты и двоеточия).

IDString
IDString ссылается на значение идентификатора элементов приложения, SettingsLocationTemplate и общие элементы (используются для описания наборов приложений, которые совместно используют общие параметры). Он ограничен тем же регулярным выражением, что и параметр FilenameString ([^ \\\? \ * \|<> /:]+).

TemplateVersion
TemplateVersion является целочисленным значением, используемым для описания версии шаблона расположений параметров. Его значение может быть задано в диапазоне от 0 до 2 147 483 647.

Empty
Empty ссылается на значение NULL. Он используется в Process\ShellProcess для указания отсутствия процесса для отслеживания. Это значение не должно использоваться в шаблонах приложений.

Author
Тип данных Author — сложный тип, который определяет автора шаблона. Он содержит два дочерних элемента: Name и Email. Для типа данных Author Name является обязательным, а Email не является обязательным. Этот тип более подробно описан в описании элемента SettingsLocationTemplate.

Range
Range определяет целочисленный класс, состоящий из двух дочерних элементов: Minimum и Maximum. Этот тип данных реализуется в типе данных ProcessVersion. Если он указан, необходимо включить оба значения Minimum и Maximum.

ProcessVersion
ProcessVersion определяет тип с четырьмя дочерними элементами: Major, Minor, Build и Patch. Этот тип данных используется элементом Process для записи значений ProductVersion и FileVersion. Данные для этого типа имеют тип Range. Дочерний элемент Major является обязательным, остальные необязательны.

Архитектура
Architecture перечисляет два возможных значения: Win32 и Win64. Эти значения используются для указания архитектуры процесса.

Process
Тип данных Process представляет собой контейнер, используемый для описания процессов, которые должны отслеживаться UE-V. Он содержит шесть дочерних элементов: Filename, Architecture, ProductName, FileDescription, ProductVersion и FileVersion. В этой таблице подробно описаны типы данных каждого элемента.

 

Элемент Тип данных Обязательный

Filename

FilenameString

Верно

Архитектура

Архитектура

False

ProductName

строковый параметр;

False

FileDescription

строковый параметр;

False

ProductVersion

ProcessVersion

False

FileVersion

ProcessVersion

False

Processes
Тип данных Processes представляет контейнер для коллекции из одного или нескольких элементов Process. В типе последовательности Processes поддерживаются два дочерних элемента: Process и ShellProcess. Process является элементом типа Process, и ShellProcess является элементом типа Empty. Необходимо определить хотя бы один элемент в последовательности.

Путь
Путь используется RegistrySetting и FileSetting для ссылки на реестр и пути к файлам. Этот элемент поддерживает два необязательных атрибута: Recursive и DeleteIfNotFound. Оба атрибута устанавливаются в default="False".

Recursive означает, что путь и все вложенные каталоги включаются для параметров файла или что все дочерние разделы реестра включаются для параметров реестра. В обоих случаях в собранные данные включаются все элементы на текущем уровне. Для объекта FileSettings все файлы в указанном каталоге будут включены в данные, собранные UE-V, но каталоги включены не будут. Для путей реестра собираются все значения в текущем пути, но дочерние разделы реестра не собираются. В обоих случаях следует соблюдать осторожность во избежание сбора больших наборов данных или большого числа элементов.

Атрибут DeleteIfNotFound удаляет параметр из данных пути хранения параметров пользователя. Это может быть полезно в случаях, когда удаление этих параметров из пакета позволит освободить большой объем дискового пространства на файловом сервере путей хранения параметров.

FileMask
FileMask указывает только определенные типы файлов для каталога, определяемого Path. Например, Path может быть равным C:\users\username\files, а FileMask может быть равной *.txt для включения только текстовых файлов.

RegistrySetting
RegistrySetting представляет контейнер для разделов реестра и значений и соответствующего ожидаемого поведения со стороны агента UE-V. В этом типе определены четыре дочерних элемента: Path, Name, Exclude и последовательность значений Path и Name.

FileSetting
FileSetting содержит параметры, связанные с файлами и путями файлов. Определяются четыре дочерних элемента: Root, Path, FileMask и Exclude. Root является обязательным, остальные необязательны.

Settings
Settings — это контейнер для всех параметров, которые применяются к конкретному шаблону. Он содержит экземпляры параметров Registry, File, SystemParameter и CustomAction, описанные выше. Кроме того, он также может содержать следующие дочерние элементы с описанным поведением:

 

Элемент Описание

Asynchronous

Асинхронные параметры пакетов применяются без блокирования запуска приложения, чтобы запуск приложения продолжался с применением параметров. Это полезно для параметров, которые могут быть применены асинхронно, таких как get/set через API, например SystemParameterSetting.

PreventOverlappingSynchronization

По умолчанию UE-V сохраняет параметры для приложения только при закрытии последнего экземпляра приложения, использующего шаблон. Если этот элемент имеет значение false, UE-V экспортирует параметры, даже если выполняются другие экземпляры приложения. Подходящие шаблоны — те, которые имеют раздел элемента Common, — поставляемые с UE-V, используют этот флаг, чтобы включить экспорт общих параметров при каждом закрытии приложения, при этом исключив из экспорта параметры, специфичные для приложения, до закрытия последнего экземпляра.

Обязательный: Верно

Тип: строковый параметр;

Name определяет уникальное имя для шаблона расположений параметров. Используется для отображения при ссылке на шаблон в WMI, PowerShell, средстве просмотра событий и журналах отладки. В целом следует избегать ссылок на сведения о версии, так как их можно получить из элемента ProductVersion. Например, при указании <Name>My Application</Name> вместо <Name>My Application 1.1</Name>.

noteПримечание
UE-V не ссылается на внешние DTD, поэтому невозможно использовать именованные объекты в шаблоне расположений параметров. Например, не используйте &reg; для ссылки на обозначение зарегистрированной торговой марки ®. Вместо этого используйте канонические нумерованные ссылки для включения этих типов специальных символов, например &#174 для символа ®. Это правило применяется для всех строковых значений в этом документе.

На странице http://www.w3.org/TR/xhtml1/dtds.html приведен полный список сущностей знаков. Документы в кодировке UTF-8 могут напрямую включать символы Юникода. При сохранении шаблонов через генератор UE-V сущности знаков автоматически преобразуются в их представление в Юникоде.

Обязательный: Верно

Тип: строковый параметр;

ID заполняет уникальный идентификатор для определенного шаблона. Этот тег становится основным идентификатором, который агент UE-V использует для ссылки на шаблон во время выполнения (например, см. вывод командлетов PowerShell Get-UevTemplate и Get-UevTemplateProgram). По соглашению этот тег должен не содержать пробелы, что упрощает написание скриптов. В этом элементе должны быть указаны номера версий для легкой идентификации шаблона, например <ID>MicrosoftCalculator6</ID> или <ID>MicrosoftOffice2010Win64</ID>.

Обязательный: Верно

Тип: Целое число

Минимальное значение: 0

Максимальное значение: 2 147 483 647

Version определяет версию шаблона расположений параметров для администрирования отслеживания изменений. Генератор UE-V автоматически увеличивает этот номер на единицу каждый раз при сохранении шаблона. Обратите внимание, что в этом поле должно указываться целое число; дробные значения, такие как <Version>2.5</Version>, не допускаются.

Подсказка. Сведения об изменениях версий можно сохранить с помощью тегов комментария XML <!-- -->, например:

  <!--
     Version History

     Version 1 Jul 05, 2012 Initial template created by Generator - Denise@Contoso.com
     Version 2 Jul 31, 2012 Added support for app.exe v2.1.3 - Mark@Contoso.com
     Version 3 Jan 01, 2013 Added font settings support - Mark@Contoso.com
     Version 4 Jan 31, 2013 Added support for plugin settings - Tony@Contoso.com
   -->
  <Version>4</Version>
ImportantВажно
Это значение опрашивается, чтобы определить, должна ли применяться новая версия шаблона к существующему шаблону в следующих случаях:

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

  • при выполнении командлета PowerShell Update-UevTemplate;

  • при вызове метода microsoft\uev:SettingsLocationTemplate Update посредством инструментария WMI.

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

Тип: строковый параметр;

Элемент Author идентифицирует автора шаблона расположений параметров. Поддерживаются два дополнительных дочерних элемента: Name и Email. Оба атрибута являются необязательными, однако если дочерний элемент Email указан, то нужно указать и Name. Элемент Author содержит полное имя контактного лица для шаблона расположений параметров, а указанный адрес электронной почты должен принадлежать автору. Рекомендуется включать эту информацию в шаблоны, распространяемые публично, например в Коллекции шаблонов UE-V.

Обязательный: Верно

Тип: Элемент

Processes содержит не менее одного элемента <Process>, который, в свою очередь, содержит следующие дочерние элементы: Filename, Architecture, ProductName, FileDescription, ProductVersion и FileVersion. Дочерний элемент Filename является обязательным, а другие необязательны. Полностью заполненный элемент содержит теги по аналогии с этим примером:

    <Process>
      <Filename>MyApplication.exe</Filename>
      <Architecture>Win64</Architecture>
      <ProductName> MyApplication </ProductName>
      <FileDescription>MyApplication.exe</FileDescription>
      <ProductVersion>
        <Major Minimum="2" Maximum="2" />
        <Minor Minimum="0" Maximum="0" />
        <Build Minimum="0" Maximum="0" />
        <Patch Minimum="5" Maximum="5" />
      </ProductVersion>
      <FileVersion>
        <Major Minimum="2" Maximum="2" />
        <Minor Minimum="0" Maximum="0" />
        <Build Minimum="0" Maximum="0" />
        <Patch Minimum="5" Maximum="5" />
      </FileVersion>
    </Process>

Обязательный: Верно

Тип: строковый параметр;

Filename указывает действительное имя исполняемого файла так, как оно отображается в файловой системе. Этот элемент задает основной критерий, с помощью которого UE-V определяет, применяется ли шаблон к процессу или нет. Этот элемент должен быть указан в шаблоне расположений параметров XML.

Допустимые имена файлов не должны соответствовать регулярному выражению [^ \\\? \ * \|<> /:]+, то есть не могут содержать символ обратной косой черты, подстановочные символы звездочки или вопросительного знака, символ вертикальной черты, знаки «больше» или «меньше», символ косой черты и двоеточия (символы \ ? * | < > / и :).

Подсказка. Для проверки строки на соответствие этому регулярному выражению используйте окно командной строки PowerShell и замените имя вашего исполняемого файла на YourFileName:

"YourFileName.exe" -match "[\\\?\*\|<>/:]+"

Значение True означает, что строка содержит недопустимые символы. Ниже приведены некоторые примеры недопустимых значений.

  • \\server\share\program.exe

  • Program*.exe

  • PRO?RAM.exe

  • Program<1>.exe

noteПримечание
Генератор UE-V кодирует знаки «больше» и «меньше» как символы &gt; и &lt; соответственно.

В редких случаях значение FileName не будет включать расширение .exe, но в общем случае расширение нужно указывать как часть значения. Например, <Filename>MyApplictication.exe</Filename> должно быть указано вместо <Filename>MyApplictication</Filename>. Во втором примере не будет применяться шаблон для процесса, если фактическое имя исполняемого файла — MyApplication.exe.

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

Тип: Architecture (строка)

Architecture ссылается на архитектуру процессора, для которой был скомпилирован целевой исполняемый файл. Допустимые значения: Win32 для 32-разрядных приложений или Win64 для 64-разрядных приложений. При наличии этот тег ограничивает возможность применения шаблона расположений параметров конкретной архитектурой приложения. В качестве примера сравните файлы %ProgramFiles%\Microsoft User Experience Virtualization\templates\MicrosoftOffice2010Win32.xml и MicrosoftOffice2010Win64.xml, входящие в UE-V. Это удобно, если относительные пути для разных версий исполняемого файла были изменены или при переходе от одной архитектуры процессора к другой были добавлены или удалены параметры.

Если этот элемент отсутствует, шаблон расположений параметров игнорирует архитектуру процесса и применяется и к 32-разрядным, и к 64-разрядным процессам, если применяются имя файла и другие атрибуты.

noteПримечание
UE-V в этой версии не поддерживает процессоры ARM.

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

Тип: строковый параметр;

ProductName — этот необязательный элемент используется для идентификации продукта для административных целей или отчетов. ProductName отличается от Filename в том, что его значение не ограничивается регулярным выражением. Это позволяет сделать более понятным описание процесса, в котором имя исполняемого файла может быть не очевидным. Пример:

    <Process>
      <Filename>MyApplication.exe</Filename>
      <ProductName>My Application 6.x by Contoso.com</ProductName>
      <ProductVersion>
        <Major Minimum="6" Maximum="6" />
      </ProductVersion>
    </Process>

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

Тип: строковый параметр;

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

Например, в наборе приложений с его помощью удобно описать функции двух исполняемых файлов (MyApplication.exe и MyApplicationHelper.exe), как показано ниже:

<Processes>
 
   <Process>
      <Filename>MyApplication.exe</Filename>
      <FileDescription>My Application Main Engine</ FileDescription>
      <ProductVersion>
        <Major Minimum="6" Maximum="6" />
      </ProductVersion>
    </Process>
    <Process>
      <Filename>MyApplicationHelper.exe</Filename>
      <FileDescription>My Application Background Process Executable</FileDescription>
      <ProductVersion>
        <Major Minimum="6" Maximum="6" />
      </ProductVersion>
    </Process>
</Processes>

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

Тип: строковый параметр;

ProductVersion ссылается на основной и вспомогательный номера версии файла, а также сборку и уровень обновления. ProductVersion является необязательным элементом, но, если указан, он должен содержать по крайней мере один дочерний элемент Major. Значение необходимо указать в виде диапазона Minimum="X" Maximum="Y", где X и Y — целые числа. Значения Minimum и Maximum могут быть одинаковыми.

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

Пример 1.

Версия продукта: в UE-V указана 1.0, генератор создает следующий XML:

      <ProductVersion>
        <Major Minimum="1" Maximum="1" />
        <Minor Minimum="0" Maximum="0" />
      </ProductVersion>

Пример 2.

Версия файла: в UE-V указана 5.0.2.1000, генератор создает следующий XML:

      <FileVersion>
        <Major Minimum="5" Maximum="5" />
        <Minor Minimum="0" Maximum="0" />
        <Build Minimum="2" Maximum="2" />
        <Patch Minimum="1000" Maximum="1000" />
      </FileVersion>

Неверный пример 1 — неполный диапазон.

Присутствует только атрибут Minimum. В диапазон также должен быть включен атрибут Maximum.

      <ProductVersion>
        <Major Minimum="2" />
      </ProductVersion>

Неверный пример 2 — элемент Minor указан без элемента Major:

Присутствует только элемент Minor. Также необходимо указать элемент Major.

      <ProductVersion>
        <Minor Minimum="0" Maximum="0" />
      </ProductVersion>

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

Тип: строковый параметр;

FileVersion различается для опубликованного приложения и внутренних сведений о сборке исполняемого файла. Для большинства коммерческих приложений эти числа совпадают. Там, где они отличаются, версия продукта файла указывает на общую версию файла, а версия файла указывает на конкретную сборку файла (например, для исправления или обновления). Этот элемент определяет файлы уникальным образом без нарушения логики обнаружения.

Чтобы определить версию продукта и версию файла определенного исполняемого файла, щелкните правой кнопкой мыши файл в Проводнике, выберите «Свойства», затем откройте вкладку «Сведения».

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

Дочерние элементы и правила синтаксиса для элемента FileVersion идентичны ProductVersion.

      <Process>
        <Filename>MSACCESS.EXE</Filename>
        <Architecture>Win32</Architecture>
        <ProductVersion>
          <Major Minimum="14" Maximum="14" />
          <Minor Minimum="0" Maximum="0" />
        </ProductVersion>
        <FileVersion>
          <Major Minimum="14" Maximum="14" />
          <Minor Minimum="0" Maximum="0" />
        </FileVersion>
      </Process>

Application — это контейнер для параметров, которые применяются к конкретному приложению. Это коллекция следующих полей и типов.

 

Поле и тип Описание

Имя

Указывает уникальное имя для шаблона расположений параметров. Используется для отображения при ссылке на шаблон в WMI, PowerShell, средстве просмотра событий и журналах отладки. Более подробные сведения см. в разделе Элемент Name.

ID

Заполняет уникальный идентификатор для определенного шаблона. Этот тег становится основным идентификатором, который агент UE-V использует для ссылки на шаблон во время выполнения. Более подробные сведения см. в разделе Элемент ID.

Описание

Необязательное описание шаблона.

LocalizedNames

Необязательное имя, которое отображается в пользовательском интерфейсе, локализованном для языкового стандарта.

LocalizedDescriptions

Необязательное описание шаблона, локализованное для языкового стандарта.

Версия

Определяет версию шаблона расположений параметров для администрирования отслеживания изменений. Более подробные сведения см. в разделе Элемент Version.

DeferToMSAccount

Определяет, включен ли этот шаблон в сочетании с учетной записью Майкрософт. Этот шаблон автоматически отключается, если для пользователя на компьютере включена синхронизация MSA.

DeferToOffice365

Аналогично MSA этот параметр определяет, включен ли шаблон в сочетании с Office 365. Если Office 365 используется для синхронизации параметров, этот шаблон будет автоматически отключен.

Processes

Контейнер для коллекции из одного или нескольких элементов Process. Более подробные сведения см. в разделе Элементы Processes и Process.

Settings

Контейнер для всех параметров, которые применяются к конкретному шаблону. Он содержит экземпляры параметров Registry, File, SystemParameter и CustomAction. Дополнительные сведения см. в разделе Параметры в Типы данных.

Элемент Common похож на элемент Application, но он всегда связан с двумя или более элементами Application. Раздел Common представляет набор параметров, которые являются общими для этих экземпляров Application. Это коллекция следующих полей и типов.

 

Поле и тип Описание

Имя

Указывает уникальное имя для шаблона расположений параметров. Используется для отображения при ссылке на шаблон в WMI, PowerShell, средстве просмотра событий и журналах отладки. Более подробные сведения см. в разделе Элемент Name.

ID

Заполняет уникальный идентификатор для определенного шаблона. Этот тег становится основным идентификатором, который агент UE-V использует для ссылки на шаблон во время выполнения. Более подробные сведения см. в разделе Элемент ID.

Описание

Необязательное описание шаблона.

LocalizedNames

Необязательное имя, которое отображается в пользовательском интерфейсе, локализованном для языкового стандарта.

LocalizedDescriptions

Необязательное описание шаблона, локализованное для языкового стандарта.

Версия

Определяет версию шаблона расположений параметров для администрирования отслеживания изменений. Более подробные сведения см. в разделе Элемент Version.

DeferToMSAccount

Определяет, включен ли этот шаблон в сочетании с учетной записью Майкрософт. Этот шаблон автоматически отключается, если для пользователя на компьютере включена синхронизация MSA.

DeferToOffice365

Аналогично MSA этот параметр определяет, включен ли шаблон в сочетании с Office 365. Если Office 365 используется для синхронизации параметров, этот шаблон будет автоматически отключен.

Settings

Контейнер для всех параметров, которые применяются к конкретному шаблону. Он содержит экземпляры параметров Registry, File, SystemParameter и CustomAction. Дополнительные сведения см. в разделе Параметры в Типы данных.

Этот элемент определяет параметры для одного приложения или набора приложений.

 

Поле и тип Описание

Имя

Указывает уникальное имя для шаблона расположений параметров. Используется для отображения при ссылке на шаблон в WMI, PowerShell, средстве просмотра событий и журналах отладки. Более подробные сведения см. в разделе Элемент Name.

ID

Заполняет уникальный идентификатор для определенного шаблона. Этот тег становится основным идентификатором, который агент UE-V использует для ссылки на шаблон во время выполнения. Более подробные сведения см. в разделе Элемент ID.

Описание

Необязательное описание шаблона.

LocalizedNames

Необязательное имя, которое отображается в пользовательском интерфейсе, локализованном для языкового стандарта.

LocalizedDescriptions

Необязательное описание шаблона, локализованное для языкового стандарта.

Ниже приведен файл SettingsLocationTemplate.xsd с элементами, дочерними элементами, атрибутами и параметрами.

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="UevSettingsLocationTemplate"
  targetNamespace="http://schemas.microsoft.com/UserExperienceVirtualization/2013/SettingsLocationTemplate"
  elementFormDefault="qualified"
  xmlns="http://schemas.microsoft.com/UserExperienceVirtualization/2013/SettingsLocationTemplate"
  xmlns:mstns="http://schemas.microsoft.com/UserExperienceVirtualization/2013/SettingsLocationTemplate"
  xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:simpleType name="Guid">
    <xs:restriction base="xs:string">
      <xs:pattern value="\{[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}\}" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="FilenameString">
    <xs:restriction base="xs:string">
      <xs:pattern value="[^\\\?\*\|&lt;&gt;/:]+" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="IDString">
    <xs:restriction base="xs:string">
      <xs:pattern value="[^\\\?\*\|&lt;&gt;/:.]+" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="TemplateVersion">
    <xs:restriction base="xs:integer">
      <xs:minInclusive value="0" />
      <xs:maxInclusive value="2147483647" />
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="Empty">
    <xs:sequence/>
  </xs:complexType>

  <xs:complexType name="LocalizedString">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="Locale" type="xs:string" use="required"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="LocalizedName">
    <xs:sequence>
      <xs:element name="Name" type="LocalizedString" minOccurs="1" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="LocalizedDescription">
    <xs:sequence>
      <xs:element name="Description" type="LocalizedString" minOccurs="1" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Author">
    <xs:all>
      <xs:element name="Name" type="xs:string" minOccurs="1" />
      <xs:element name="Email" type="xs:string" minOccurs="0" />
    </xs:all>
  </xs:complexType>

  <xs:complexType name="Range">
    <xs:attribute name="Minimum" type="xs:integer" use="required"/>
    <xs:attribute name="Maximum" type="xs:integer" use="required"/>
  </xs:complexType>

  <xs:complexType name="ProcessVersion">
    <xs:sequence>
      <xs:element name="Major" type="Range" minOccurs="1" />
      <xs:element name="Minor" type="Range" minOccurs="0" />
      <xs:element name="Build" type="Range" minOccurs="0" />
      <xs:element name="Patch" type="Range" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>

  <xs:simpleType name="Architecture">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Win32"/>
      <xs:enumeration value="Win64"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="Process">
    <xs:sequence>
      <xs:element name="Filename" type="FilenameString" minOccurs="1" />
      <xs:element name="Architecture" type="Architecture" minOccurs="0" />
      <xs:element name="ProductName" type="xs:string" minOccurs="0" />
      <xs:element name="FileDescription" type="xs:string" minOccurs="0" />
      <xs:element name="ProductVersion" type="ProcessVersion" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="FileVersion" type="ProcessVersion" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Processes">
    <xs:sequence>
      <xs:choice minOccurs="1">
        <xs:element name="Process" type="Process" />
        <xs:element name="ShellProcess" type="Empty" />
      </xs:choice>
      <xs:element name="Process" type="Process" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Path">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="Recursive" type="xs:boolean" default="false"/>
        <xs:attribute name="DeleteIfNotFound" type="xs:boolean" default="false"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="RegistrySetting">
    <xs:sequence>
      <xs:element name="Path" type="Path" />
      <xs:element name="Name" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="Exclude" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Path" type="Path" minOccurs="0" />
            <xs:element name="Name" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="FileSetting">
    <xs:sequence>

      <xs:element name="Root">
        <xs:complexType>
          <xs:choice>
            <xs:element name="KnownFolder" type="Guid" />
            <xs:element name="RegistryEntry" type="xs:string" />
            <xs:element name="EnvironmentVariable" type="xs:string" />
          </xs:choice>
        </xs:complexType>
      </xs:element>

      <xs:element name="Path" minOccurs="0" type="Path" />
      <xs:element name="FileMask" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>

      <xs:element name="Exclude" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Path" type="Path" minOccurs="0" />
            <xs:element name="FileMask" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>

    </xs:sequence>
  </xs:complexType>

  <xs:simpleType name="SystemParameterSetting">
    <xs:restriction base="xs:string">

      <!-- Accessibility parameters -->
      <xs:enumeration value="AccessTimeout"/>
      <xs:enumeration value="AudioDescription"/>
      <xs:enumeration value="ClientAreaAnimation"/>
      <xs:enumeration value="DisableOverlappedContent"/>
      <xs:enumeration value="FilterKeys"/>
      <xs:enumeration value="FocusBorderHeight"/>
      <xs:enumeration value="FocusBorderWidth"/>
      <xs:enumeration value="HighContrast"/>
      <xs:enumeration value="MessageDuration"/>
      <xs:enumeration value="MouseClickLock"/>
      <xs:enumeration value="MouseClickLockTime"/>
      <xs:enumeration value="MouseKeys"/>
      <xs:enumeration value="MouseSonar"/>
      <xs:enumeration value="MouseVanish"/>
      <xs:enumeration value="ScreenReader"/>
      <xs:enumeration value="ShowSounds"/>
      <xs:enumeration value="SoundSentry"/>
      <xs:enumeration value="StickyKeys"/>
      <xs:enumeration value="ToggleKeys"/>

      <!-- Input parameters -->
      <xs:enumeration value="Beep"/>
      <xs:enumeration value="BlockSendInputResets"/>
      <xs:enumeration value="DefaultInputLang"/>
      <xs:enumeration value="DoubleClickTime"/>
      <xs:enumeration value="DoubleClkHeight"/>
      <xs:enumeration value="DoubleClkWidth"/>
      <xs:enumeration value="KeyboardCues"/>
      <xs:enumeration value="KeyboardDelay"/>
      <xs:enumeration value="KeyboardPref"/>
      <xs:enumeration value="KeyboardSpeed"/>
      <xs:enumeration value="Mouse"/>
      <xs:enumeration value="MouseButtonSwap"/>
      <xs:enumeration value="MouseHoverHeight"/>
      <xs:enumeration value="MouseHoverTime"/>
      <xs:enumeration value="MouseHoverWidth"/>
      <xs:enumeration value="MouseSpeed"/>
      <xs:enumeration value="MouseTrails"/>
      <xs:enumeration value="SnapToDefButton"/>
      <xs:enumeration value="WheelScrollChars"/>
      <xs:enumeration value="WheelScrollLines"/>

      <!-- Desktop parameters (limited subset) -->
      <xs:enumeration value="DeskWallpaper"/>
      <xs:enumeration value="DesktopColor"/>

    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="Settings">
    <xs:sequence>
      <xs:element name="Asynchronous" type="xs:boolean" minOccurs="0" />
      <xs:element name="PreventOverlappingSynchronization" type="xs:boolean" minOccurs="0" />
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="Registry" type="RegistrySetting" />
        <xs:element name="File" type="FileSetting" />
        <xs:element name="SystemParameter" type="SystemParameterSetting" />
      </xs:choice>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Common">
    <xs:sequence>
      <xs:element name="Name" type="xs:string" />
      <xs:element name="ID" type="IDString" />
      <xs:element name="Description" type="xs:string" minOccurs="0" />
      <xs:element name="LocalizedNames" type="LocalizedName" minOccurs="0" />
      <xs:element name="LocalizedDescriptions" type="LocalizedDescription" minOccurs="0" />
      <xs:element name="Version" type="xs:integer" />
      <xs:element name="DeferToMSAccount" type="Empty"  minOccurs="0" />
      <xs:element name="Settings" type="Settings" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Application">
    <xs:sequence>
      <xs:element name="Name" type="xs:string" />
      <xs:element name="ID" type="IDString" />
      <xs:element name="Description" type="xs:string" minOccurs="0" />
      <xs:element name="LocalizedNames" type="LocalizedName" minOccurs="0" />
      <xs:element name="LocalizedDescriptions" type="LocalizedDescription" minOccurs="0" />
      <xs:element name="Version" type="xs:integer" />
      <xs:element name="DeferToMSAccount" type="Empty"  minOccurs="0" />
      <xs:element name="Processes" type="Processes" />
      <xs:element name="Settings" type="Settings" />
    </xs:sequence>
  </xs:complexType>


  <xs:element name="SettingsLocationTemplate">
    <xs:complexType>
      <xs:sequence>

        <xs:element name="Name" type="xs:string" />
        <xs:element name="ID" type="IDString" />
        <xs:element name="Description" type="xs:string" minOccurs="0" />
        <xs:element name="LocalizedNames" type="LocalizedName" minOccurs="0" />
        <xs:element name="LocalizedDescriptions" type="LocalizedDescription" minOccurs="0" />

        <xs:choice>

          <!-- Single application -->
          <xs:sequence>
            <xs:element name="Version" type="TemplateVersion" />
            <xs:element name="Author" type="Author" minOccurs="0" />
            <xs:element name="DeferToMSAccount" type="Empty"  minOccurs="0" />
            <xs:element name="Processes" type="Processes" />
            <xs:element name="Settings" type="Settings" />
          </xs:sequence>

          <!-- Suite of applications -->
          <xs:sequence>
            <xs:element name="ManageSuiteOnly" type="xs:boolean" minOccurs="0" />
            <xs:element name="Author" type="Author" minOccurs="0" />
            <xs:element name="Common" type="Common" />
            <xs:element name="Application" type="Application" minOccurs="2" maxOccurs="unbounded" />
          </xs:sequence>

        </xs:choice>

      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <!-- SettingsLocationTemplate -->

</xs:schema>

Выдвигайте предложения и голосуйте за них здесь. Ответы на вопросы, возникающие при работе с UE-V, можно найти на форуме TechNet по UE-V.

См. также

 
Показ: