Библиотека XML-элементов

В этой статье описываются XML-элементы и вспомогательные функции, которые можно использовать для создания миграции .xml файлов для использования с помощью средства миграции пользовательской среды (USMT). В этой статье предполагается базовое знание XML.

В дополнение к XML-элементам и вспомогательным функциям, эта статья:

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

Элементы и вспомогательные функции

В следующей таблице описаны XML-элементы и вспомогательные функции, которые можно использовать с USMT.

Элементы A–K Элементы L–Z Вспомогательные функции
<addObjects>
<Атрибуты>
<Байт>
<commandLine>
<Компонент>
<Состояние>
<Условия>
<Содержимого>
<contentModify>
<Описание>
<destinationCleanup>
<Обнаружить>
<Обнаруживает>
<Обнаружения>
<Displayname>
<Среды>
<Исключить>
<excludeAttributes>
<Расширения>
<Расширение>
<externalProcess>
<icon>
<include>
<includeAttribute>
<Библиотека>
<Расположение>
<locationModify>
<_locDefinition>
<Производителя>
<Объединить>
<Миграции>
<namedElements>
<Объекта>
<objectSet>
<Путь>
<Пути>
<шаблон>
<Обработки>
<Плагин>
<Роль>
<Правила>
<Сценарий>
<Текст>
<unconditionalExclude>
<Переменной>
<Версия>
<windowsObjects>
<Функции условий>
<функции содержимого>
<функции contentModify>
<включить> и <исключить> функции фильтрации
<Функции locationModify>
<Функции слияния>
<функции скрипта>
Внутренние функции USMT

<addObjects>

Элемент <addObjects> имитирует существование одного или нескольких объектов на исходном компьютере. Дочерние <элементы объекта> предоставляют сведения о эмулированных объектах. Если содержимое является элементом <скрипта> , результатом вызова является массив объектов.

Синтаксис:

<addObjects>
</addObjects>

Следующий пример из MigApp.xml файла:

<addObjects>
   <object>
      <location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [UpgradeVersion]</location>
      <attributes>DWORD</attributes>
      <bytes>0B000000</bytes>
   </object>
   <object>
      <location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [Lang]</location>
      <attributes>DWORD</attributes>
      <bytes>00000000</bytes>
   </object>
</addObjects>

<Атрибуты>

Элемент <attributes> определяет атрибуты для раздела реестра или файла.

  • Количество вхождений: один раз для каждого <объекта>

  • Родительские элементы:<object>

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

Синтаксис:

<attributes>Content</attributes>
Параметр Обязательно? Значение
Содержимое Да Содержимое зависит от типа указанного объекта.
  • Для файлов содержимое может быть строкой, содержащей любой из следующих атрибутов, разделенных запятыми:
    • Archive
    • Только чтение
    • System
    • Hidden (Скрыто)
  • Для разделов реестра содержимое может быть одного из следующих типов:
    • Нет
    • Строка
    • ExpandString
    • Двоичный
    • Dword
    • REG_SZ

Следующий пример из MigApp.xml файла:

<object>
   <location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [Lang]</location>
   <attributes>DWORD</attributes>
   <bytes>00000000</bytes>
</object> 

<Байт>

Элемент <bytes> можно указать только для файлов, так как если <расположение> соответствует разделу реестра или каталогу, <байты> игнорируются.

  • Количество вхождений: ноль или одно

  • Родительские элементы:<object>

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

Синтаксис:

<bytes string="Yes|No" expand="Yes|No">Content</bytes>
Параметр Обязательно? Значение
string Нет, по умолчанию — Нет. Определяет, следует ли интерпретировать содержимое как строку или как байт.
expand Нет (по умолчанию = Да Если параметр expand имеет значение Да, содержимое <элемента bytes> сначала разворачивается в контексте исходного компьютера, а затем интерпретируется.
Содержимое Да Зависит от значения строки.
  • Если строка имеет значение Да, содержимое <элемента bytes> интерпретируется как строка.
  • Если строка имеет значение No, содержимое <элемента bytes> интерпретируется как байт. Каждые два символа представляют шестнадцатеричное значение байта. Например, 616263 является представлением для abc строки ANSI. Полное представление строки abc ЮНИКОДа, включая терминатор строки, будет следующим: 6100620063000000.

Следующий пример из MigApp.xml файла:

<object>
   <location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [Lang]</location>
   <attributes>DWORD</attributes>
   <bytes>00000000</bytes>
</object> 

<commandLine>

Элемент <commandLine> можно использовать для запуска или остановки службы или приложения до или после запуска средств ScanState и LoadState .

  • Число вхождений: не ограничено

  • Родительские элементы:<externalProcess>

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

Синтаксис:

<commandLine>CommandLineString</commandLine>
Параметр Обязательно? Значение
CommandLineString Да Допустимая командная строка.

<Компонент>

Элемент <компонента> является обязательным в пользовательском .xml файле. Этот элемент определяет основную конструкцию файла .xmlмиграции . Например, в MigApp.xml файле Microsoft Office 2016 является компонентом, который содержит другой компонент, Microsoft Office Access 2016. Для определения компонента можно использовать дочерние элементы.

Компонент может быть вложен в другой компонент; то есть <элемент компонента> может быть дочерним элементом <элемента роли> в элементе <компонента> в двух случаях:

  1. Когда родительский <элемент компонента> является контейнером
  2. Значение , если дочерний <элемент компонента> имеет ту же роль, что и родительский <элемент компонента> .

Синтаксис:

<component type="System|Application|Device|Documents" context="User|System|UserAndSystem" defaultSupported="TRUE|FALSE|YES|NO"
hidden="Yes|No">
</component>
Параметр Обязательно? Значение
type Да Следующие элементы можно использовать для группировки параметров и определения типа компонента.
  • Системы: Параметры операционной системы. Все компоненты Windows определяются этим типом.
    Если type="System" и defaultSupported="FALSE", параметры не переносятся, если в файлах.xml нет эквивалентного компонента, указанного в командной LoadState.exe строке. Например, файл по умолчанию MigSys.xml содержит компоненты с type="System" и defaultSupported="FALSE". Если этот файл указан в командной строке ScanState.exe , он также должен быть указан в командной LoadState.exe строке для переноса параметров. Файл должен быть указан, LoadState.exe так как средство должно обнаружить эквивалентный компонент. То есть компонент должен иметь одинаковый URL-адрес миграции файла.xml и идентичное отображаемое имя. В противном случае средство LoadState не переносит эти параметры из хранилища. Этот параметр полезен, так как хранилище можно использовать для конечных компьютеров, которые имеют ту же или другую версию Windows, что и исходный компьютер.
  • Приложения: Параметры приложения.
  • Устройства: Параметры устройства.
  • Документы: Указывает файлы.
Контексте Нет
По умолчанию = UserAndSystem
Определяет область этого параметра, т. е. следует ли обрабатывать этот компонент в контексте конкретного пользователя, во всей операционной системе или в обоих случаях.
Наибольший возможный область задается элементом <компонента>. Например, если <элемент компонента> имеет контекст User , а <элемент rules> имеет контекст UserAndSystem, элемент <rules> будет действовать так, как будто он имеет контекст User. Если элемент rules> имеет контекст System, он будет действовать так, как будто элемента rules<>< нет.
  • Пользователь: вычисляет компонент для каждого пользователя.
  • Система. Оценивает компонент только один раз для системы.
  • UserAndSystem: оценивает компонент для всей операционной системы и каждого пользователя.
defaultSupported Нет
(по умолчанию = TRUE)
Может иметь значение TRUE, FALSE, ДА или НЕТ. Если этот параметр имеет значение FALSE (или NO), компонент не переносится, если на целевом компьютере нет эквивалентного компонента.
Если type="System" и defaultSupported="FALSE", параметры не переносятся, если в .xml файлах, указанных LoadState.exe в командной строке, нет эквивалентного компонента. Например, файл по умолчанию MigSys.xml содержит компоненты с type="System" и defaultSupported="FALSE". Если этот файл указан в командной строке ScanState.exe , он также должен быть указан в командной LoadState.exe строке для переноса параметров. Файл должен быть указан в обеих командных строках, так как средство LoadState должно обнаружить эквивалентный компонент. То есть компонент должен иметь тот же URL-адрес миграции файла.xml и идентичное отображаемое имя, иначе средство LoadState не переносит эти параметры из хранилища. Этот параметр полезен, так как хранилище можно использовать для конечных компьютеров, которые имеют ту же или другую версию Windows, что и исходный компьютер.
Скрытые Этот параметр предназначен только для внутреннего использования USMT.

Пример см. в любом из файлов миграции по умолчанию.xml.

<Состояние>

<Хотя элемент condition> в <элементах detect>, <objectSet> и <addObjects> по-прежнему поддерживается, корпорация Майкрософт рекомендует больше не использовать <элемент condition>, так как он может быть нерекомендуем в будущих версиях USMT. <Если элемент condition> является устаревшим, потребуется перезаписать все скрипты, использующие <элемент condition>. Вместо этого, если условие необходимо использовать в <элементах objectSet> и <addObjects> , корпорация Майкрософт рекомендует использовать более мощный <элемент conditions> . Элемент <conditions> позволяет формулировать сложные логические инструкции.

Элемент <condition> имеет логический результат. Этот элемент можно использовать для указания условий, в которых вычисляется родительский элемент. Если какое-либо из указанных условий возвращает значение FALSE, родительский элемент не вычисляется.

  • Число вхождений: неограниченно.

  • Родительские элементы:<conditions>, <detect>, <objectSet>, <addObjects>

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

  • Вспомогательные функции: С этим элементом можно использовать следующие <функции условия>: DoesOSMatch, , IsNative64Bit(), IsOSLaterThan, IsOSEarlierThanDoesObjectExist, DoesFileVersionMatch, IsFileVersionAbove, , IsFileVersionBelow, IsSystemContext, DoesStringContentEqual, DoesStringContentContain, IsSameObject, IsSameContentи IsSameStringContent.

Синтаксис:

<condition negation="Yes|No">ScriptName</condition>
Параметр Обязательно? Значение
Отрицание Нет
По умолчанию = Нет
Значение "Да" отменяет значение True или False условия.
ScriptName Да Скрипт, определенный в этом разделе миграции.

Например, в следующем примере <кода элементы условия>A и B объединяются оператором AND , так как находятся в отдельных <разделах условий> :

<detection>
   <conditions>
      <condition>A</condition>
   </conditions>
   <conditions operation="AND">
      <condition>B</condition>
   </conditions>
</detection>

Однако в следующем примере <кода элементы условия>A и B объединяются оператором OR , так как находятся в одном <разделе условий> .

<detection>
   <conditions>
      <condition>A</condition>
      <condition>B</condition>
   </conditions>
</detection>

<Функции условий>

Функции <условия> возвращают логическое значение. Эти элементы можно использовать в <условиях addObjects> .

Функции версии операционной системы

  • DoesOSMatch

    Все совпадения не учитывают регистр.

    Синтаксис: DoesOSMatch("OSType","OSVersion")

    Параметр Обязательно? Значение
    OSType Да Единственное допустимое значение для этого параметра — NT. Однако этот параметр необходимо задать, чтобы функции условий> работали< правильно.
    OSVersion Да Основная версия, дополнительная версия, номер сборки и исправленная версия дискеты службы разделены точками. Например, 5.0.2600.Service Pack 1. Частичная спецификация версии также может быть указана с помощью шаблона, 5.0.*например .

    Пример:

    <condition>MigXmlHelper.DoesOSMatch("NT","\*")</condition>
    
  • IsNative64Bit

    Функция IsNative64Bit возвращает значение TRUE , если процесс миграции выполняется как собственный 64-разрядный процесс; то есть процесс, выполняемый в 64-разрядной системе без Windows в Windows (WOW). В противном случае возвращается значение FALSE.

  • IsOSLaterThan

    Все сравнения не учитывают регистр.

    Синтаксис: IsOSLaterThan("OSType","OSVersion")

    Параметр Обязательно? Значение
    OSType Да Может быть 9x или NT. Если ТИП OSType не соответствует типу текущей операционной системы, возвращается значение FALSE. Например, если текущая операционная система основана на Windows NT, а osType"9x", результатом будет ЛОЖЬ.
    OSVersion Да Основная версия, дополнительная версия, номер сборки и исправленная версия дискеты службы разделены точками. Например, 5.0.2600.Service Pack 1. Можно также указать частичную спецификацию версии, но шаблон не допускается, например 5.0.

    Функция IsOSLaterThan возвращает значение TRUE , если текущая операционная система позже или равна OSVersion.

    Пример:

    <condition negation="Yes">MigXmlHelper.IsOSLaterThan("NT","6.0")</condition>
    
  • IsOSEarlierThan

    Все сравнения не учитывают регистр.

    Синтаксис: IsOSEarlierThan("OSType","OSVersion")

    Параметр Обязательно? Значение
    OSType Да Может быть 9x или NT. Если ТИП OSType не соответствует типу текущей операционной системы, возвращается значение FALSE. Например, если текущая операционная система основана на Windows NT, а OSType"9x", результатом будет FALSE.
    OSVersion Да Основная версия, дополнительная версия, номер сборки и исправленная версия дискеты службы разделены точками. Например, 5.0.2600.Service Pack 1. Можно также указать частичную спецификацию версии, но шаблон не допускается, например 5.0.

    Функция IsOSEarlierThan возвращает значение TRUE , если текущая операционная система находится раньше , чем OSVersion.

Функции содержимого объектов

  • DoesObjectExist

    Функция DoesObjectExist возвращает значение TRUE , если существует какой-либо объект, соответствующий шаблону расположения. В противном случае возвращается значение FALSE. Шаблон расположения развертывается перед попыткой перечисления.

    Синтаксис: DoesObjectExist("ObjectType","EncodedLocationPattern")

    Параметр Обязательно? Значение
    Objecttype Да Определяет тип объекта. Может быть файлом или реестром.
    EncodedLocationPattern Да Шаблон расположения. Переменные среды разрешены.

    Пример этого элемента см. в MigApp.xml файле .

  • DoesFileVersionMatch

    Шаблон проверка не учитывает регистр.

    Синтаксис: DoesFileVersionMatch("EncodedFileLocation","VersionTag","VersionValue")

    Параметр Обязательно? Значение
    EncodedFileLocation Да Шаблон расположения для проверяемого файла. Переменные среды разрешены.
    VersionTag Да Значение тега версии , которое проверяется.
    VersionValue Да Шаблон строки. Например, "Microsoft*".

    Пример:

    <condition>MigXmlHelper.DoesFileVersionMatch("%MSNMessengerInstPath%\\msnmsgr.exe","ProductVersion","6.\*")</condition>   <condition>MigXmlHelper.DoesFileVersionMatch("%MSNMessengerInstPath%\\msnmsgr.exe","ProductVersion","7.\*")</condition>
    
  • IsFileVersionAbove

    Функция IsFileVersionAbove возвращает значение TRUE , если версия файла выше VersionValue.

    Синтаксис: IsFileVersionAbove("EncodedFileLocation","VersionTag","VersionValue")

    Параметр Обязательно? Значение
    EncodedFileLocation Да Шаблон расположения для проверяемого файла. Переменные среды разрешены.
    VersionTag Да Значение тега версии , которое проверяется.
    VersionValue Да Сравниваемое значение. Невозможно указать шаблон.
  • IsFileVersionBelow

    Синтаксис: IsFileVersionBelow("EncodedFileLocation","VersionTag","VersionValue")

    Параметр Обязательно? Значение
    EncodedFileLocation Да Шаблон расположения для проверяемого файла. Переменные среды разрешены.
    VersionTag Да Значение тега версии , которое проверяется.
    VersionValue Да Сравниваемое значение. Невозможно указать шаблон.
  • IsSystemContext

    Функция IsSystemContext возвращает значение TRUE , если текущий контекст имеет значение System. В противном случае возвращается значение FALSE.

    Синтаксис: IsSystemContext()

  • DoesStringContentEqual

    Функция DoesStringContentEqual возвращает значение TRUE , если строковое представление данного объекта идентично StringContent.

    Синтаксис: DoesStringContentEqual("ObjectType","EncodedLocation","StringContent")

    Параметр Обязательно? Значение
    Objecttype Да Определяет тип объекта . Может быть файлом или реестром.
    EncodedLocationPattern Да Закодированное расположение проверяемого объекта. Переменные среды можно указать.
    StringContent Да Строка, с которым выполняется проверка.

    Пример:

    <condition negation="Yes">MigXmlHelper.DoesStringContentEqual("File","%USERNAME%","")</condition>
    
  • DoesStringContentContain

    Функция DoesStringContentContain возвращает значение TRUE , если в строковом представлении объекта имеется хотя бы одно вхождение StrToFind .

    Синтаксис: DoesStringContentContain("ObjectType","EncodedLocation","StrToFind")

    Параметр Обязательно? Значение
    Objecttype Да Определяет тип объекта . Может быть файлом или реестром.
    EncodedLocationPattern Да Закодированное расположение проверяемого объекта. Переменные среды можно указать.
    StrToFind Да Строка, которая выполняется в содержимом заданного объекта.
  • IsSameObject

    Функция IsSameObject возвращает значение TRUE , если заданные закодированные расположения разрешаются в один и тот же физический объект. В противном случае возвращается значение FALSE.

    Синтаксис: IsSameObject("ObjectType","EncodedLocation1","EncodedLocation2")

    Параметр Обязательно? Значение
    Objecttype Да Определяет тип объекта . Может быть файлом или реестром.
    EncodedLocation1 Да Закодированное расположение для первого объекта. Переменные среды можно указать.
    EncodedLocation2 Да Закодированное расположение для второго объекта. Переменные среды можно указать.

    Пример:

    <objectSet>
       <condition negation="Yes">MigXmlHelper.IsSameObject("File","%CSIDL_FAVORITES%","%CSIDL_COMMON_FAVORITES%")</condition>
       <pattern type="File">%CSIDL_FAVORITES%\* [*]</pattern>
    </objectSet>
    
  • IsSameContent

    Функция IsSameContent возвращает значение TRUE , если заданные объекты имеют одинаковое содержимое. В противном случае возвращается значение FALSE. Содержимое сравнивается по байтам.

    Синтаксис: IsSameContent("ObjectType1","EncodedLocation1","ObjectType2","EncodedLocation2")

    Параметр Обязательно? Значение
    ObjectType1 Да Определяет тип первого объекта. Может быть файлом или реестром.
    EncodedLocation1 Да Закодированное расположение для первого объекта. Переменные среды можно указать.
    ObjectType2 Да Определяет тип второго объекта. Может быть файлом или реестром.
    EncodedLocation2 Да Закодированное расположение для второго объекта. Переменные среды можно указать.
  • IsSameStringContent

    Функция IsSameStringContent возвращает значение TRUE , если заданные объекты имеют одинаковое содержимое. В противном случае возвращается значение FALSE. Содержимое интерпретируется как строка.

    Синтаксис: IsSameStringContent("ObjectType1","EncodedLocation1","ObjectType2","EncodedLocation2")

    Параметр Обязательно? Значение
    ObjectType1 Да Определяет тип первого объекта. Может быть файлом или реестром.
    EncodedLocation1 Да Закодированное расположение для первого объекта. Переменные среды можно указать.
    ObjectType2 Да Определяет тип второго объекта. Может быть файлом или реестром.
    EncodedLocation2 Да Закодированное расположение для второго объекта. Переменные среды можно указать.

<Условия>

Элемент <conditions> возвращает логический результат, который используется для указания условий, в которых вычисляется родительский элемент. USMT оценивает дочерние элементы, а затем объединяет их результаты с помощью операторов AND или OR в соответствии с параметром операции.

Синтаксис:

<conditions operation="AND|OR">
</conditions>
Параметр Обязательно? Значение
Операции Нет, по умолчанию = AND Определяет логическую операцию, выполняемую с результатами, полученными из дочерних элементов.

Следующий пример из MigApp.xml файла:

<environment name="GlobalEnv">
   <conditions>
      <condition negation="Yes">MigXmlHelper.IsNative64Bit()</condition>
   </conditions>
   <variable name="HklmWowSoftware">
   <text>HKLM\Software</text>
   </variable>
</environment>

<Содержимого>

Элемент <content> можно использовать для указания списка шаблонов объектов для получения набора объектов с исходного компьютера. Вычисляется каждый <objectSet> в элементе <содержимого> . Для каждого результирующего списка шаблонов объектов перечисляются соответствующие ему объекты, а их содержимое фильтруется по параметру фильтра. Результирующий строковый массив является выходными данными для элемента содержимого<>. Скрипт фильтра возвращает массив расположений. Родительский <элемент objectSet> может содержать несколько дочерних <элементов содержимого> .

  • Число вхождений: не ограничено

  • Родительские элементы:<objectSet>

  • Дочерние элементы:<objectSet>

  • Вспомогательные функции: С этим элементом можно использовать следующие <функции содержимого>: ExtractSingleFile, ExtractMultipleFilesи ExtractDirectory.

Синтаксис:

<content filter="ScriptInvocation">
</content>
Параметр Обязательно? Значение
filter Да Скрипт, за которым следует любое количество строковых аргументов, разделенных запятой и заключенных в круглые скобки. Например, MyScripts.AScript ("Arg1","Arg2").
Скрипт вызывается для каждого объекта, который перечисляется наборами объектов в правиле <включения> . Скрипт фильтра возвращает логическое значение. Если возвращаемое значение равно TRUE, объект переносится. Если имеет значение FALSE, он не переносится.

<функции содержимого>

Следующие функции создают шаблоны из содержимого объекта . Эти функции вызываются для каждого объекта, перечисляемого родительским <элементом ObjectSet> .

  • ExtractSingleFile

    Если значение реестра — MULTI-SZ, обрабатывается только первый сегмент. Возвращаемый шаблон — это закодированное расположение для файла, который должен существовать в системе. Если спецификация указана правильно в значении реестра, но файл не существует, эта функция возвращает значение NULL.

    Синтаксис: ExtractSingleFile(Separators,PathHints)

    Параметр Обязательно? Значение
    Разделители Да Список возможных разделителей, которые могут соответствовать спецификации файла в этом имени значения реестра. Например, если содержимое — "C:\Windows\Notepad.exe-2", разделитель — запятая. Можно указать значение NULL.
    PathHints Да Список дополнительных путей, разделенных двоеточием (;), где функция ищет файл, соответствующий текущему содержимому. Например, если содержимое — "Notepad.exe", а путь — это переменная среды %Path%, функция находит Notepad.exe в %windir% и возвращает "c:\Windows [Notepad.exe]". Можно указать значение NULL.

    Пример:

    <content filter="MigXmlHelper.ExtractSingleFile(',','%system%')">
    

    и

    <content filter="MigXmlHelper.ExtractSingleFile(NULL,'%CSIDL_COMMON_FONTS%')">
    
  • ExtractMultipleFiles

    Функция ExtractMultipleFiles возвращает несколько шаблонов, по одному для каждого файла, который находится в содержимом заданного значения реестра. Если значение реестра — MULTI-SZ, разделитель MULTI-SZ по умолчанию считается разделителем. Поэтому для MULTI-SZ<аргумент Разделители> должен иметь значение NULL.

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

    Синтаксис: ExtractMultipleFiles(Separators,PathHints)

    Параметр Обязательно? Значение
    Разделители Да Список возможных разделителей, которые могут соответствовать спецификации файла в этом имени значения реестра. Например, если содержимое — "C:\Windows\Notepad.exe-2", разделитель — запятая. Этот параметр должен иметь значение NULL при обработке значений реестра MULTI-SZ .
    PathHints Да Список дополнительных путей, разделенных двоеточием (;), где функция ищет файл, соответствующий текущему содержимому. Например, если содержимое — "Notepad.exe", а путь — это переменная среды %Path%, функция находит Notepad.exe в %windir% и возвращает "c:\Windows [Notepad.exe]". Можно указать значение NULL.
  • ExtractDirectory

    Функция ExtractDirectory возвращает шаблон, который является закодированным расположением для каталога, который должен существовать на исходном компьютере. Если спецификация указана правильно в значении реестра, но каталог не существует, эта функция возвращает значение NULL. При обработке значения реестра, которое является MULTI-SZ, обрабатывается только первый сегмент.

    Синтаксис: ExtractDirectory(Separators,LevelsToTrim,PatternSuffix)

    Параметр Обязательно? Значение
    Разделители Нет Список возможных разделителей, которые могут соответствовать спецификации файла в этом имени значения реестра. Например, если содержимое — "C:\Windows\Notepad.exe-2", разделитель — запятая. При обработке значений реестра MULTI-SZ необходимо указать значение NULL.
    LevelsToTrim Да Количество уровней, удаляемых из конца спецификации каталога. Используйте эту функцию для извлечения корневого каталога при наличии значения реестра, указывающего внутри этого корневого каталога в известном расположении.
    PatternSuffix Да Шаблон, добавляемый в спецификацию каталога. Например, * [*].

    Пример:

    <objectSet>
       <content filter='MigXmlHelper.ExtractDirectory (NULL, "1")'>
            <objectSet>
                 <pattern type="Registry">%HklmWowSoftware%\Classes\Software\RealNetworks\Preferences\DT_Common []</pattern>
            </objectSet>
       </content>
    </objectSet>
    

<contentModify>

Элемент <contentModify> изменяет содержимое объекта перед записью объекта на целевой компьютер. Для каждого <элемента contentModify> может быть несколько <элементов objectSet> . Этот элемент возвращает новое содержимое обрабатываемого объекта.

  • Количество вхождений: Неограниченное

  • Родительские элементы:<правила>

  • Обязательные дочерние элементы:<objectSet>

  • Вспомогательные функции. С этим элементом можно использовать следующие <функции contentModify>: ConvertToDWORD, ConvertToString, ConvertToBinary, KeepExisting, OffsetValue, SetValueByTable, MergeMultiSzContent и MergeDelimitedContent.

Синтаксис:

<contentModify script="ScriptInvocation">
</contentModify>
Параметр Обязательно? Значение
Сценарий Да Скрипт, за которым следует любое количество строковых аргументов, разделенных запятой и заключенных в круглые скобки. Например MyScripts.AScript ("Arg1","Arg2").

Скрипт вызывается для каждого объекта, который перечисляется наборами объектов в правиле включения. Скрипт фильтра возвращает логическое значение. Если возвращаемое значение равно TRUE, объект переносится. Если имеет значение FALSE, он не переносится.

<функции contentModify>

Следующие функции изменяют содержимое объектов по мере их переноса. Эти функции вызываются для каждого объекта, перечисляемого родительским <элементом ObjectSet> .

  • ConvertToDWORD

    Функция ConvertToDWORD преобразует содержимое значений реестра, перечисляемых родительским <элементом ObjectSet> , в DWORD. Например, ConvertToDWORD преобразует строку "1" в DWORD 0x00000001. Если преобразование завершается ошибкой, применяется значение DefaultValueOnError .

    Синтаксис: ConvertToDWORD(DefaultValueOnError)

    Параметр Обязательно? Значение
    DefaultValueOnError Нет Значение, которое записывается в имя значения в случае сбоя преобразования. Значение NULL можно указать, и 0 записывается в случае сбоя преобразования.
  • ConvertToString

    Функция ConvertToString преобразует содержимое значений реестра, которые соответствуют родительскому <элементу ObjectSet> , в строку. Например, он преобразует DWORD 0x00000001 в строку "1". Если преобразование завершается ошибкой, применяется значение DefaultValueOnError .

    Синтаксис: ConvertToString(DefaultValueOnError)

    Параметр Обязательно? Значение
    DefaultValueOnError Нет Значение, которое записывается в имя значения в случае сбоя преобразования. Значение NULL можно указать, и 0 записывается в случае сбоя преобразования.

    Пример:

    <contentModify script="MigXmlHelper.ConvertToString('1')">
       <objectSet>
            <pattern type="Registry">HKCU\Control Panel\Desktop [ScreenSaveUsePassword]</pattern>
       </objectSet>
    </contentModify>
    
  • ConvertToBinary

    Функция ConvertToBinary преобразует содержимое значений реестра, которые соответствуют родительскому <элементу ObjectSet> , в двоичный тип.

    Синтаксис: ConvertToBinary ()

  • OffsetValue

    Функция OffsetValue добавляет значение или вычитает значение из значения перенесенного объекта, а затем записывает результат обратно в значение реестра на конечном компьютере. Например, если перенесенный объект является DWORD со значением 14, а значение"-2", значение реестра будет находиться 12 на конечном компьютере.

    Синтаксис: OffsetValue(Value)

    Параметр Обязательно? Значение
    Значение Да Строковое представление числового значения. Он может быть положительным или отрицательным. Например, OffsetValue(2).
  • SetValueByTable

    Функция SetValueByTable сопоставляет значение исходного компьютера с исходной таблицей. Если значение имеется, применяется эквивалентное значение в целевой таблице. Если значение отсутствует или целевая таблица не имеет эквивалентного значения, применяется значение DefaultValueOnError .

    Синтаксис: SetValueByTable(SourceTable,DestinationTable,DefaultValueOnError)

    Параметр Обязательно? Значение
    SourceTable Да Список значений, разделенных запятыми, которые возможны для исходных значений реестра.
    DestinationTable Нет Список переведенных значений, разделенных запятыми.
    DefaultValueOnError Нет Значение, применяемое к конечному компьютеру, если
    1. Значение исходного компьютера не совпадает с SourceTable.
    2. DestinationTable не имеет эквивалентного значения.

    Если defaultValueOnError имеет значение NULL, значение не изменяется на конечном компьютере.
  • KeepExisting

    Функцию KeepExisting можно использовать при возникновении конфликтов на конечном компьютере. Эта функция сохраняет (не перезаписывает) указанные атрибуты для объекта, который находится на конечном компьютере.

    Синтаксис: KeepExisting("OptionString","OptionString","OptionString",…)

    Параметр Обязательно? Значение
    OptionString Да OptionString может иметь значение Security, TimeFields или FileAttrib:Letter. Можно указать один из каждого типа OptionStrings . Не указывайте несколько OptionStrings с одинаковым значением. Если указано несколько объектов OptionStrings с одинаковым значением, сохраняется самый правый параметр этого типа. Например, не указывайте ("FileAttrib:H", "FileAttrib:R"), так как вычисляется только для чтения. Вместо этого укажите ("FileAttrib:HR"), а на конечном компьютере хранятся как скрытые, так и только для чтения атрибуты.
    • Безопасность: сохраняет дескриптор безопасности целевого объекта, если он существует.
    • TimeFields: сохраняет метки времени целевого объекта. Этот параметр предназначен только для файлов.
    • FileAttrib:<Letter>: сохраняет значение атрибута целевого объекта ( ON или OFF) для указанного набора атрибутов файла. Этот параметр предназначен только для файлов. Ниже приведены значения без учета регистра, но USMT игнорирует все значения, которые являются недопустимыми, повторяющимися или если после FileAttrib:есть пробел. Можно указать любое сочетание следующих атрибутов:
      • A = Archive
      • C = сжатый
      • E = Зашифровано
      • H = скрытый
      • I = не индексировано содержимого
      • O = в автономном режиме
      • R = Read-Only
      • S = System
      • T = временный
  • MergeMultiSzContent

    Функция MergeMultiSzContent объединяет содержимое MULTI-SZ значений реестра, перечисляемых родительским <элементом ObjectSet> , с содержимым эквивалентных значений реестра, которые уже существуют на конечном компьютере. Instruction и String либо удалить, либо добавить содержимое в результирующий MULTI-SZ. Повторяющиеся элементы удаляются.

    Синтаксис: MergeMultiSzContent (Instruction,String,Instruction,String,…)

    Параметр Обязательно? Значение
    Инструкции Да Может иметь одно из следующих значений:
    • Добавить. Добавляет соответствующую строку в результирующий объект MULTI-SZ, если его еще нет.
    • Удалить. Удаляет соответствующую строку из результирующего MULTI-SZ.
    Строка Да Добавляемая или удаляемая строка.
  • MergeDelimitedContent

    Функция MergeDelimitedContent объединяет содержимое значений реестра, перечисленных родительским <элементом ObjectSet> , с содержимым эквивалентных значений реестра, которые уже существуют на конечном компьютере. Содержимое считается списком элементов, разделенных одним из символов в параметре Разделители. Повторяющиеся элементы удаляются.

    Синтаксис: MergeDelimitedContent(Delimiters,Instruction,String,…)

    Параметр Обязательно? Значение
    Разделители Да Один символ, используемый для разделения содержимого обрабатываемого объекта. Содержимое рассматривается как список элементов, разделенных разделителями.
    Например, "." разделяет строку на основе точки.
    Инструкции Да Может иметь одно из следующих значений:
    • Добавить: добавляет string в результирующий MULTI-SZ, если он еще не существует.
    • Удалить. Удаляет строку из полученного multi-SZ.
    Строка Да Добавляемая или удаляемая строка.

<Описание>

Элемент <description> определяет описание компонента, но не влияет на миграцию.

  • Количество вхождений: ноль или одно

  • Родительские элементы:<component>

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

Синтаксис:

<description>ComponentDescription</description>
Параметр Обязательно? Значение
ComponentDescription Да Описание компонента.

В следующем примере кода показано, как <элемент description> определяет описание "Мой настраиваемый компонент".

<description>My custom component<description>

<destinationCleanup>

Элемент <destinationCleanup> удаляет объекты, такие как файлы и разделы реестра, с конечного компьютера перед применением объектов с исходного компьютера. Этот элемент вычисляется только при запуске средства LoadState на конечном компьютере. То есть этот элемент игнорируется средством ScanState .

Важно.

Используйте этот параметр с особой осторожностью, так как он удалит объекты с конечного компьютера.

Для каждого <элемента destinationCleanup> может быть несколько <элементов objectSet> . Обычно этот элемент используется, если на исходном компьютере отсутствует раздел реестра, но компонент по-прежнему требуется перенести. В этом случае все разделы реестра компонента можно удалить перед переносом исходных разделов реестра. Удаление всех разделов реестра компонента гарантирует, что если на исходном компьютере отсутствует ключ, он также будет отсутствовать на конечном компьютере.

  • Количество вхождений: Неограниченное

  • Родительские элементы:<правила>

  • Дочерние элементы:<objectSet> (конечный компьютер удаляет все дочерние элементы.)

Синтаксис:

<destinationCleanup filter=ScriptInvocation>
</destinationCleanup>
Параметр Обязательно? Значение
filter Да Скрипт, за которым следует любое количество строковых аргументов, разделенных запятой и заключенных в круглые скобки. Например, MyScripts.AScript ("Arg1","Arg2").

Скрипт вызывается для каждого объекта, который перечисляется наборами объектов в правиле включения. Скрипт фильтра возвращает логическое значение. Если возвращаемое значение равно TRUE, объект переносится. Если имеет значение FALSE, он не переносится.

Пример:

<destinationCleanup>
   <objectSet>
      <pattern type="Registry">HKCU\Software\Lotus\123\99.0\DDE Preferences\* [*]</pattern>
      <pattern type="Registry">HKCU\Software\Lotus\123\99.0\Find Preferences\* [*]</pattern>
   </objectSet>
</destinationCleanup>

<Обнаружить>

Хотя элемент detect> по-прежнему< поддерживается, корпорация Майкрософт рекомендует больше не использовать <элемент detect>, так как он может быть нерекомендуем в будущих версиях USMT. <Если элемент detect> является устаревшим, потребуется перезаписать все скрипты, использующие <элемент detect>. Вместо этого корпорация Майкрософт рекомендует использовать <элемент обнаружения> . Элемент <обнаружения> позволяет более четко сформулировать сложные логические инструкции.

Элемент <detect> можно использовать для определения наличия компонента в системе. Если все дочерние <элементы обнаружения> в элементе <обнаружения> разрешаются в TRUE, то <элемент detect> разрешается в TRUE. Если какие-либо дочерние <элементы обнаружения> разрешаются в FALSE, то их родительский <элемент обнаружения> разрешается в FALSE. Если раздел элемента обнаружения> отсутствует<, USMT предполагает наличие компонента.

Для каждого <элемента обнаружения> может быть несколько дочерних <элементов условия> или <objectSet> , которые логически соединены оператором OR . Если хотя бы один <элемент condition> или <objectSet> имеет значение TRUE, то <элемент detect> будет иметь значение TRUE.

  • Число вхождений: не ограничено

  • Родительские элементы:<detects>, <namedElements>

  • Обязательные дочерние элементы:<condition>

  • Необязательные дочерние элементы:<objectSet>

Синтаксис:

<detect name="ID" context="User|System|UserAndSystem">
</detect>
Параметр Обязательно? Значение
name Да, если <свойство detect> является дочерним элементом для< именованныхЭлементов>
Нет, если <обнаружение> является дочерним объектом для <обнаружения>
Если указан идентификатор , все дочерние элементы не обрабатываются. Вместо этого обрабатываются любые другие <элементы обнаружения> с тем же именем, объявленные в элементе <namedElements> .
Контексте Нет
(по умолчанию = UserAndSystem)
Определяет область этого параметра, который определяет, следует ли обрабатывать этот компонент в контексте конкретного пользователя, во всей операционной системе или в обоих случаях.
Наибольший возможный область задается элементом компонента. Например, если <элемент компонента> имеет контекст User, а <элемент rules> имеет контекст UserAndSystem, то <элемент rules> будет действовать так, как если бы он имел контекст User. Если элемент rules> имеет контекст System, он будет действовать так, как если бы элемента rules не< было.><
  • Пользователь: вычисляет переменные для каждого пользователя.
  • Система. Оценивает переменные только один раз для системы.
  • UserAndSystem: вычисляет переменные для всей операционной системы и каждого пользователя.

Примеры см. в примерах для <обнаружения>.

<Обнаруживает>

Хотя элемент detects> по-прежнему< поддерживается, корпорация Майкрософт рекомендует больше не использовать <элемент detects>, так как он может быть нерекомендуем в будущих версиях USMT. <Если элемент detects> является устаревшим, потребуется перезаписать все скрипты, использующие <элемент detects>. Вместо этого корпорация Майкрософт рекомендует использовать <элемент обнаружения> , если родительский элемент является <role> или <namedElements>, или использовать <элемент conditions> , если родительский элемент является <rules>. Элемент <обнаружения> позволяет более четко формулировать сложные логические инструкции, а <элемент conditions> позволяет формулировать сложные логические инструкции.

Элемент <detects> — это контейнер для одного или нескольких <элементов обнаружения> . Если все дочерние <элементы обнаружения> в элементе< detect разрешаются> в TRUE, то <обнаруживает> разрешение в TRUE. Если какой-либо из дочерних <элементов обнаружения> разрешается в FALSE, то <обнаруживает> значение FALSE. Чтобы предотвратить <запись элемента detects> в компоненте, создайте <элемент detects> в элементе <namedElements> , а затем сослаться на него. Если раздел элемента detects> отсутствует<, USMT предполагает наличие компонента. Результаты каждого <элемента detects> объединяются оператором OR для формирования правила, используемого для обнаружения родительского элемента.

Синтаксис:

<detects name="ID" context="User|System|UserAndSystem">
</detects>
  • Количество вхождений: Неограниченное.

  • Родительские элементы:<role>, <rules>, <namedElements>

  • Обязательные дочерние элементы:<detect>

Параметр Обязательно? Значение
name Да, если <определяет> является дочерним элементом для< namedElements>
Нет, если <определяет> является дочерним элементом роли<> или <правил>
При указании идентификатора дочерние <элементы обнаружения> не обрабатываются. Вместо этого обрабатываются любые другие <элементы обнаружения> с тем же именем, объявленные в элементе <namedElements> .
Контексте Нет
(по умолчанию = UserAndSystem)
Определяет область этого параметра: следует ли обрабатывать этот компонент в контексте конкретного пользователя, во всей операционной системе или в обоих случаях.
Наибольший возможный область задается элементом<> компонента. Например, если <элемент компонента> имеет контекст User , а <элемент rules> имеет контекст UserAndSystem, то <элемент rules> будет действовать так, как если бы он имел контекст User. Если элемент rules> имеет контекст System, он будет действовать так, как если бы элемента rules не< было.><
  • Пользователь: вычисляет переменные для каждого пользователя.
  • Система. Оценивает переменные только один раз для системы.
  • UserAndSystem: вычисляет переменные для всей операционной системы и каждого пользователя.

Параметр контекста игнорируется для <обнаружения> элементов, которые находятся внутри <элементов правил> .

Следующий пример из MigApp.xml файла.

<detects>
   <detect>
      <condition>MigXmlHelper.DoesFileVersionMatch("%Lotus123InstPath%\123w.exe","ProductVersion","9.*")</condition>
   </detect>
   <detect>
      <condition>MigXmlHelper.DoesFileVersionMatch("%SmartSuiteInstPath%\smartctr.exe","ProductVersion","99.*")</condition>
   </detect>
</detects>

<Обнаружения>

Элемент <обнаружения> является контейнером для одного <элемента условий> . Результат дочерних <элементов условия> , расположенных под элементом <conditions> , определяет результат этого элемента. Например, если все дочерние <элементы> в элементе <обнаружения> разрешаются в TRUE, то <элемент обнаружения> разрешается в TRUE. Если какой-либо из дочерних< элементов условий> разрешается в FALSE, то <элемент обнаружения> разрешается в FALSE.

Кроме того, результаты каждого <раздела обнаружения> в элементе <role> объединяются оператором OR для формирования правила обнаружения родительского элемента. То есть, если один из <разделов обнаружения> разрешается в TRUE, то <обрабатывается элемент role> . В противном <случае элемент role> не обрабатывается.

<Используйте элемент обнаружения> в элементе <namedElements>, чтобы не записывать данные в компоненте. Затем добавьте раздел обнаружения> соответствия< в <элемент роли>, чтобы определить, переносится ли компонент. Если для компонента нет <раздела обнаружения> , USMT предполагает наличие компонента.

  • Количество вхождений: Неограниченное.

  • Родительские элементы:<role>, <namedElements>

  • Дочерние элементы:<условия>

Синтаксис:

<detection name="ID" context="User|System|UserAndSystem">
</detection>
Параметр Обязательно? Значение
name
  • Да, при объявлении< обнаружения> в именованныхЭлементах<>
  • Необязательный параметр при объявлении в роли<>
При объявлении содержимое <элемента обнаружения> игнорируется, а содержимое <элемента обнаружения> с тем же именем, которое объявлено в элементе <namedElements> , оценивается.
Контексте Нет, по умолчанию = UserAndSystem Определяет область этого параметра: следует ли обрабатывать этот компонент в контексте конкретного пользователя, во всей операционной системе или в обоих случаях.
  • Пользователь: вычисляет компонент для каждого пользователя.
  • Система. Оценивает компонент только один раз для системы.
  • UserAndSystem: оценивает компонент для всей операционной системы и каждого пользователя.

Пример:

<detection name="AdobePhotoshopCS">
   <conditions>
      <condition>MigXmlHelper.DoesObjectExist("Registry","HKCU\Software\Adobe\Photoshop\8.0")</condition>
      <condition>MigXmlHelper.DoesFileVersionMatch("%PhotoshopSuite8Path%\Photoshop.exe","FileVersion","8.*")</condition>
   </conditions>
</detection>

и

<role role="Settings">
   <detection>
      <conditions>
         <condition>MigXmlHelper.DoesFileVersionMatch("%QuickTime5Exe%","ProductVersion","QuickTime 5.*")</condition>
         <condition>MigXmlHelper.DoesFileVersionMatch("%QuickTime5Exe%","ProductVersion","QuickTime 6.*")</condition>
      </conditions>
   </detection>

<Displayname>

Элемент <displayName> является обязательным полем в каждом <элементе компонента> .

  • Количество вхождений: один раз для каждого компонента

  • Родительские элементы:<component>

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

Синтаксис:

<displayName _locID="ID">ComponentName</displayName>
Параметр Обязательно? Значение
locID Нет Этот параметр предназначен для внутреннего использования USMT. Не используйте этот параметр.
Имя компонента Да Имя компонента.

Пример:

<displayName>Command Prompt settings</displayName>

<Среды>

Элемент <среды> — это контейнер для <переменных> элементов, в котором переменные могут быть определены для использования в файле.xml . Все переменные среды, определенные таким образом, являются закрытыми. То есть они доступны только для своих дочерних компонентов и компонента, в котором они были определены. Два примера сценариев см. в разделе Примеры.

Синтаксис:

<environment name="ID" context="User|System|UserAndSystem">
</environment>
Параметр Обязательно? Значение
name Да, если <среда> является дочерним элементом <объекта namedElements>
Нет, если <среда> является дочерним <элементом роли> или <компонента>
При объявлении в качестве дочернего <элемента роли> или <компонента> , если объявлен идентификатор , USMT игнорирует содержимое <элемента среды> и обрабатывается содержимое <элемента среды> с тем же именем, объявленным в <элементе nameElements> .
Контексте Нет
(по умолчанию = UserAndSystem)
Определяет область этого параметра: следует ли обрабатывать этот компонент в контексте конкретного пользователя, во всей операционной системе или в обоих случаях.
Наибольший возможный область задается элементом <компонента>. Например, если <элемент компонента> имеет контекст User , а <элемент rules> имеет контекст UserAndSystem, то <элемент rules> будет действовать так, как если бы он имел контекст User. Если бы элемент rules> имел контекст System, он действовал бы так, как будто правил там< нет.><
  • Пользователь: вычисляет переменные для каждого пользователя.
  • Система. Оценивает переменные только один раз для системы.
  • UserAndSystem: вычисляет переменные для всей операционной системы и каждого пользователя.

Примеры:

Пример сценария 1

В этом сценарии создайте расположение объектов во время выполнения в зависимости от конфигурации конечного компьютера. Например, если приложение записывает данные в каталог, в котором установлено приложение, и пользователи могут установить приложение в любом месте компьютера. Если приложение записывает значение hklm\software\companyname\install [path\] реестра, а затем обновляет это значение с указанием расположения, в котором установлено приложение, то единственный способ правильно перенести необходимые данные — определить переменную среды. Пример:

<environment>
   <variable name="INSTALLPATH">
      <script>MigXmlHelper.GetStringContent("Registry","\software\companyname\install [path]")</script>
   </variable>
</environment>

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

<include>
   <objectSet>
      <pattern type="File">%INSTALLPATH%\ [*.xyz]</pattern>
   </objectSet>
</include>

Во-вторых, значения реестра можно отфильтровать, чтобы они содержали необходимые данные. В следующем примере первая строка (перед разделителем ",") извлекается из значения реестра Hklm\software\companyname\application\ [Path\].

<environment>
   <variable name="APPPATH">
        <objectSet>
           <content filter='MigXmlHelper.ExtractDirectory (",", "1")'>
             <objectSet>
                <pattern type="Registry">Hklm\software\companyname\application\ [Path]</pattern>
              </objectSet>
            </content>
        </objectSet>
    </variable>
</environment>

Пример сценария 2

В этом сценарии пять файлов с именем File1.txt, File2.txtи т. д. необходимо перенести из %SYSTEMDRIVE%\data\userdata\dir1\dir2\. Чтобы перенести эти файлы, в файле .xml должно быть следующее <правило включения>:

<include>
   <objectSet>
      <pattern type="File">%SYSTEMDRIVE%\data\userdata\dir1\dir2 [File1.txt]</pattern>
      <pattern type="File">%SYSTEMDRIVE%\data\userdata\dir1\dir2 [File2.txt]</pattern>
      <pattern type="File">%SYSTEMDRIVE%\data\userdata\dir1\dir2 [File3.txt]</pattern>
      <pattern type="File">%SYSTEMDRIVE%\data\userdata\dir1\dir2 [File4.txt]</pattern>
      <pattern type="File">%SYSTEMDRIVE%\data\userdata\dir1\dir2 [File5.txt]</pattern>
   </objectSet>
</include>

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

<environment>
   <variable name="DATAPATH">
      <text>%SYSTEMDRIVE%\data\userdata\dir1\dir2 </text>
      </variable>
</environment>

Затем укажите переменную в правиле <включения> следующим образом:

<include>
   <objectSet>
      <pattern type="File">%DATAPATH% [File1.txt]</pattern>
      <pattern type="File">%DATAPATH% [File2.txt]</pattern>
      <pattern type="File">%DATAPATH% [File3.txt]</pattern>
      <pattern type="File">%DATAPATH% [File4.txt]</pattern>
      <pattern type="File">%DATAPATH% [File5.txt]</pattern>
   </objectSet>
</include>

<exclude>

Элемент <exclude> определяет, какие объекты не переносятся, если нет более конкретного <элемента include> , который переносит объект. Если для одного и того же объекта есть <элемент include> и <exclude> , объект включается. Для каждого <элемента exclude> может быть несколько дочерних <элементов objectSet> .

  • Количество вхождений: Неограниченное

  • Родительские элементы:<правила>

  • Дочерние элементы:<objectSet>

  • Вспомогательные функции: С этим элементом можно использовать следующие <функции фильтра exclude>: CompareStringContent, IgnoreIrrelevantLinks, AnswerNo, NeverRestoreи SameRegContent.

Синтаксис:

<exclude filter="ScriptInvocation">
</exclude>
Параметр Обязательно? Значение
filter Нет
(по умолчанию = Нет)
Скрипт, за которым следует любое количество строковых аргументов, разделенных запятой и заключенных в круглые скобки. Например, MyScripts.AScript ("Arg1","Arg2").

Скрипт вызывается для каждого объекта, который перечисляется наборами объектов в правиле включения. Скрипт фильтра возвращает логическое значение. Если возвращаемое значение равно TRUE, объект переносится. Если имеет значение FALSE, он не переносится.

Например, из MigUser.xml файла:

<exclude>
   <objectSet>
      <pattern type="File">%CSIDL_MYMUSIC%\* [*]</pattern>
      <pattern type="File">%CSIDL_MYPICTURES%\* [*]</pattern>
      <pattern type="File">%CSIDL_MYVIDEO%\* [*]</pattern>
   </objectSet>
</exclude>

<excludeAttributes>

Элемент <excludeAttributes> можно использовать, чтобы определить, какие параметры, связанные с объектом, не переносятся. При наличии конфликтов между элементами <includeAttributes> и <excludeAttributes> наиболее конкретный шаблон определяет шаблоны, которые не переносятся. Если у объекта нет <элемента includeAttributes> или <excludeAttributes> , переносятся все его параметры.

  • Количество вхождений: Неограниченное

  • Родительские элементы:<правила>

  • Дочерние элементы:<objectSet>

Синтаксис:

<excludeAttributes attributes="Security|TimeFields|Security,TimeFields">
</excludeAttributes>
Параметр Обязательно? Значение
Атрибуты Да Указывает атрибуты, которые необходимо исключить. Можно указать один из следующих вариантов или оба варианта. При указании обоих значений они должны быть разделены кавычками. Например, "Security","TimeFields":
  • Безопасность может быть владельцем, группой, DACL или SACL.
  • TimeFields может быть одним из элементов CreationTime, LastAccessTime и LastWrittenTime.

Пример.

<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/miguser">
<!-- This component migrates the files in the Video folder -->
   <component type="System" context="System">
      <displayName>System Data</displayName>
         <role role="Data">
            <rules>
<!-- Include all of the text files, which are immediately in the drive where the operating system is installed -->
               <include>
                  <objectSet>
                     <pattern type="File">%SYSTEMDRIVE%\ [*.txt]</pattern>
                  </objectSet>
               </include>
<!-- Exclude the time stamps from the text file starting with the letter a -->
               <excludeAttributes attributes="TimeFields">
                  <objectSet>
                     <pattern type="File">%SYSTEMDRIVE%\ [a*.txt]</pattern>
                  </objectSet>
               </excludeAttributes>
<!-- include the time stamps from the text file aa.txt -->
               <includeAttributes attributes="TimeFields">
                  <objectSet>
                     <pattern type="File">%SYSTEMDRIVE%\ [aa.txt]</pattern>
                  </objectSet>
               </includeAttributes>
<!-- Logoff the user after LoadState successfully completed. -->
               <externalProcess when="post-apply">
                  <commandLine>
                     logoff
                  </commandLine>
               </externalProcess>
         </rules>
   </role>
<!-- Migrate 
   all doc files from the system
   all power point files
   all visio design files 
   all my c++ program files -->
   <extensions>
      <extension>DOC</extension>
      <extension>PPT</extension>
      <extension>VXD</extension>
      <extension>PST</extension>
      <extension>CPP</extension>
   </extensions>
</component>
</migration>

<Расширения>

Элемент <extensions> — это контейнер для одного или нескольких <элементов расширения> .

  • Количество вхождений: ноль или одно

  • Родительские элементы:<component>

  • Обязательные дочерние элементы:<extension>

Синтаксис:

<extensions>
</extensions>

<Расширение>

Элемент <extension> можно использовать для указания документов определенного расширения.

  • Число вхождений: не ограничено

  • Родительские элементы:<расширения>

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

Синтаксис:

<extension>FilenameExtension</extension>
Параметр Обязательно? Значение
FilenameExtension Да Расширение имени файла.

Например, чтобы перенести все файлы *.doc с исходного компьютера, указав следующий код в элементе <компонента> :

<extensions> 
        <extension>doc</extension> 
<extensions> 

аналогично указанию следующего кода под элементом <rules> :

<include> 
        <objectSet> 
                <script>MigXmlHelper.GenerateDrivePatterns ("* [*.doc]", "Fixed")</script> 
        </objectSet> 
</include>

Еще один пример использования <элемента расширения> см. в примере для <excludeAttributes>.

<externalProcess>

Элемент <externalProcess> можно использовать для запуска командной строки во время процесса миграции. Например, после завершения процесса LoadState может потребоваться выполнить команду.

  • Количество вхождений: Неограниченное

  • Родительские элементы:<правила>

  • Обязательные дочерние элементы:<commandLine>

Синтаксис:

<externalProcess when="pre-scan|scan-success|post-scan|pre-apply|apply-success|post-apply">
</externalProcess>
Параметр Обязательно? Значение
Когда Да Указывает, когда следует запустить командную строку. Это значение может быть одним из следующих значений:
  • предварительная проверка перед началом процесса сканирования.
  • Проверка успешно завершена после успешного завершения процесса сканирования.
  • после завершения сканирования, независимо от того, успешно ли это было выполнено.
  • предварительно примените перед началом процесса применения.
  • успешное применение после успешного завершения процесса применения.
  • после применения после завершения процесса применения, независимо от того, был ли он успешным или нет.

Пример использования <элемента externalProcess> см. в примере для <excludeAttributes>.

<icon>

Этот элемент является внутренним элементом USMT. Не используйте этот элемент.

<include>

Элемент <include> определяет, что следует перенести, если нет более конкретного <правила исключения> . Можно указать скрипт, чтобы он был более конкретным, чтобы расширить определение того, что требуется собрать. Для каждого <элемента include> может быть несколько <элементов objectSet> .

  • Количество вхождений: Неограниченное

  • Родительские элементы:<правила>

  • Обязательный дочерний элемент:<objectSet>

  • Вспомогательные функции: С этим элементом можно использовать следующие <> функции фильтра: CompareStringContent, IgnoreIrrelevantLinks, AnswerNo, и NeverRestore.

Синтаксис:

<include filter="ScriptInvocation">
</include>
Параметр Обязательно? Значение
filter Нет.
Если этот параметр не указан, обрабатываются все шаблоны, которые находятся внутри дочернего <элемента objectSet> .
Скрипт, за которым следует любое количество строковых аргументов, разделенных запятой и заключенных в круглые скобки. Например, MyScripts.AScript ("Arg1","Arg2").
Скрипт вызывается для каждого объекта, который перечисляется наборами объектов в правиле <включения> . Скрипт фильтра возвращает логическое значение. Если возвращаемое значение равно TRUE, объект переносится. Если имеет значение FALSE, он не переносится.

Следующий пример из MigUser.xml файла:

<component type="Documents" context="User">
   <displayName _locID="miguser.myvideo">My Video</displayName>
      <paths>
         <path type="File">%CSIDL_MYVIDEO%</path>
      </paths>
      <role role="Data">
         <detects>           
            <detect>
               <condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_MYVIDEO%")</condition>
            </detect>
         </detects>
         <rules>
               <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
                  <objectSet>
                     <pattern type="File">%CSIDL_MYVIDEO%\* [*]</pattern>
                  </objectSet>
               </include>
               <merge script="MigXmlHelper.DestinationPriority()">
                  <objectSet>
                     <pattern type="File">%CSIDL_MYVIDEO% [desktop.ini]</pattern>
                  </objectSet>
            </merge>
         </rules>
      </role>
    </component>

<включить> и <исключить> функции фильтрации

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

  • AnswerNo

    Этот фильтр всегда возвращает значение FALSE.

    Синтаксис: AnswerNo ()

  • CompareStringContent

    Синтаксис: CompareStringContent("StringContent","CompareType")

    Параметр Обязательно? Значение
    StringContent Да Строка для проверка.
    CompareType Да Строка. Используйте одно из следующих значений:
    • Равно (без учета регистра). Функция возвращает значение TRUE , если строковое представление текущего объекта, обрабатываемого подсистемой миграции, идентично StringContent.
    • NULLили любое другое значение. Функция возвращает значение TRUE , если строковое представление текущего объекта, обрабатываемого подсистемой миграции, не соответствует StringContent.
  • IgnoreIrrelevantLinks

    Этот фильтр отображает файлы .lnk , указывающие на недопустимый объект на конечном компьютере. Проверка выполняется на конечном компьютере, поэтому все .lnk файлы сохраняются в хранилище во время ScanState. Затем они отображаются при запуске средства LoadState .

    Синтаксис: IgnoreIrrelevantLinks ()

    Пример:

    <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
         <objectSet>
              <pattern type="File">%CSIDL_COMMON_VIDEO%\* [*]</pattern>
         </objectSet>
    </include>
    
  • NeverRestore

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

    Синтаксис: NeverRestore()

    В следующем примере HKCU\панель управления\International [locale] включен в хранилище, но не переносится на конечный компьютер:

    <include filter="MigXmlHelper.NeverRestore()">
       <objectSet>
          <pattern type="Registry">HKCU\Control Panel\International [Locale]</pattern>
       </objectSet>
    </include>
    

<includeAttributes>

Элемент <includeAttributes> можно использовать для определения того, переносятся ли определенные параметры, связанные с объектом, вместе с самим объектом. При наличии конфликтов между элементами <includeAttributes> и <excludeAttributes> наиболее конкретный шаблон определяет, какие параметры переносятся. Если у объекта нет <элемента includeAttributes> или <excludeAttributes> , переносятся все его параметры.

  • Число вхождений: не ограничено

  • Родительские элементы:<правила>

  • Дочерние элементы:<objectSet>

Синтаксис:

<includeAttributes attributes="Security|TimeFields|Security,TimeFields">
</includeAttributes>
Параметр Обязательно? Значение
Атрибуты Да Указывает атрибуты, которые будут включены в перенесенный объект. Можно указать один из следующих вариантов или оба варианта. При указании обоих значений они должны быть разделены кавычками. Например, "Security","TimeFields":
  • Безопасность может иметь одно из следующих значений:
    • Владелец: владелец объекта (SID).
    • Группа: основная группа для объекта (SID).
    • DACL (дискреционный список управления доступом). Список управления доступом, контролируемый владельцем объекта и указывающий, какой доступ к объекту могут иметь определенные пользователи или группы.
    • SACL (список управления доступом системы). Список ACL, который управляет созданием сообщений аудита для попыток доступа к защищаемому объекту. Возможность получения или задания SACL объекта контролируется привилегией, обычно предоставляемой только системными администраторами.
  • TimeFields может иметь одно из следующих значений:
    • CreationTime: указывает, когда был создан файл или каталог.
    • LastAccessTime: указывает, когда файл в последний раз считывается, записывается в или для исполняемых файлов выполняется.
    • LastWrittenTime: указывает, когда файл записывается в последний раз, усечен или перезаписан.

Пример использования <элемента includeAttributes> см. в примере для< excludeAttributes>.

<Библиотека>

Этот элемент является внутренним элементом USMT. Не используйте этот элемент.

<Расположение>

Элемент <location> определяет расположение <элемента объекта> .

  • Количество вхождений: один раз для каждого <объекта>

  • Родительские элементы:<object>

  • Дочерние элементы:<script>

Синтаксис:

<location type="typeID">ObjectLocation</location>
Параметр Обязательно? Значение
type Да TypeID может быть реестром или файлом.
Объектолокация Да Расположение объекта.

Следующий пример из MigApp.xml файла:

<addObjects>
   <object>
      <location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [UpgradeVersion]</location>
      <attributes>DWORD</attributes>
      <bytes>0B000000</bytes>
   </object>
   <object>
      <location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [Lang]</location>
      <attributes>DWORD</attributes>
      <bytes>00000000</bytes>
   </object>
</addObjects>

<locationModify>

Элемент <locationModify> можно использовать для изменения расположения и имени объекта перед переносом объекта на целевой компьютер. Элемент <locationModify> обрабатывается только при запуске средства LoadState на конечном компьютере. Другими словами, этот элемент игнорируется средством ScanState . Элемент <locationModify> создает соответствующую папку на конечном компьютере, если он еще не существует.

Количество вхождений: Неограниченное

  • Родительские элементы:<правила>

  • Обязательный дочерний элемент:<objectSet>

  • Вспомогательные функции: С этим элементом можно использовать следующие <функции locationModify>: ExactMove, RelativeMoveи Move.

Синтаксис:

<locationModify script="ScriptInvocation">
</locationModify>
Параметр Обязательно? Значение
Сценарий Да Скрипт, за которым следует любое количество строковых аргументов, разделенных запятой и заключенных в круглые скобки. Например, MyScripts.AScript ("Arg1","Arg2").

Скрипт вызывается для каждого объекта, который перечисляется наборами объектов в правиле включения. Скрипт фильтра возвращает логическое значение. Если возвращаемое значение равно TRUE, объект переносится. Если имеет значение FALSE, он не переносится.

Следующий пример из MigApp.xml файла:

<locationModify script="MigXmlHelper.RelativeMove('%CSIDL_APPDATA%\Microsoft\Office','%CSIDL_APPDATA%')">
   <objectSet>
      <pattern type="File">%CSIDL_APPDATA%\Microsoft\Office\ [Access10.pip]</pattern>
   </objectSet>
</locationModify>

<Функции locationModify>

Следующие функции изменяют расположение объектов при их переносе <при использовании элемента locationModify> . Эти функции вызываются для каждого объекта, перечисляемого родительским <элементом objectSet> . Элемент <locationModify> создает соответствующую папку на конечном компьютере, если он еще не существует.

  • ExactMove

    Функция ExactMove перемещает все объекты, соответствующие родительскому <элементу objectSet> , в заданное объект ObjectEncodedLocation. Эту функцию можно использовать для перемещения одного файла в другое расположение на конечном компьютере. Если конечным расположением является узел, все соответствующие исходные объекты записываются в узел без подкаталогов. Если целевое расположение является конечным, подсистема миграции переносит все соответствующие исходные объекты в одно и то же расположение. Если возникает конфликт, применяются обычные алгоритмы.

    Синтаксис: ExactMove(ObjectEncodedLocation)

    Параметр Обязательно? Значение
    ObjectEncodedLocation Да Целевое расположение для всех исходных объектов.

    Пример:

    <locationModify script="MigXmlHelper.ExactMove('HKCU\Keyboard Layout\Toggle [HotKey]')">
       <objectSet>
            <pattern type="Registry">HKCU\Keyboard Layout\Toggle []</pattern>
       </objectSet>
    </locationModify>
    
  • Переместить

    Функция Переместить перемещает объекты в другое расположение на конечном компьютере. Кроме того, эта функция создает подкаталоги, которые были выше самого длинного CSIDL в имени исходного объекта.

    Синтаксис: Move(DestinationRoot)

    Параметр Обязательно? Значение
    DestinationRoot Да Расположение, в котором перемещаются исходные объекты. При необходимости эта функция создает все подкаталоги, которые были выше самого длинного CSIDL в имени исходного объекта.
  • RelativeMove

    Функцию RelativeMove можно использовать для сбора и перемещения данных. Переменные среды можно использовать в исходных и целевых корнях, но они могут быть определены по-разному на исходном и целевом компьютерах.

    Синтаксис: RelativeMove(SourceRoot,DestinationRoot)

    Параметр Обязательно? Значение
    SourceRoot Да Расположение, из которого перемещаются объекты. Все исходные объекты, перечисляемые родительским <элементом objectSet> , которые не находятся в этом расположении, не перемещаются.
    DestinationRoot Да Расположение, куда перемещаются исходные объекты на конечном компьютере. При необходимости эта функция создает все подкаталоги, которые были выше SourceRoot.

Пример:

<include>
   <objectSet>
      <pattern type="File">%CSIDL_COMMON_FAVORITES%\* [*]</pattern>
   <objectSet>
</include>
<locationModify script="MigXmlHelper.RelativeMove('%CSIDL_COMMON_FAVORITES%','%CSIDL_COMMON_FAVORITES%')">
     <objectSet>
          <pattern type="File">%CSIDL_COMMON_FAVORITES%\* [*]</pattern>
     </objectSet>
</locationModify>

<_locDefinition>

Этот элемент является внутренним элементом USMT. Не используйте этот элемент.

<Производителя>

Элемент <manufacturer> определяет производителя компонента, но не влияет на миграцию.

  • Количество вхождений: ноль или одно

  • Родительские элементы:<component>

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

Синтаксис:

<manufacturer>Name</manufacturer>
Параметр Обязательно? Значение
Имя Да Имя производителя компонента.

<Объединить>

Элемент <merge> определяет, что происходит при столкновении. Конфликт возникает, когда переносимый объект уже присутствует на конечном компьютере. Если этот элемент не указан, по умолчанию для реестра исходный объект перезаписывает целевой объект. Поведение по умолчанию для файлов — переименование исходного файла в OriginalFileName(1).OriginalExtension. Этот элемент указывает только то, что следует сделать при возникновении конфликта. Он не включает объекты. Поэтому для миграции <объектов необходимо указать правила включения> вместе с элементом <merge> . При обработке объекта и обнаружении конфликта USMT выбирает наиболее конкретное правило слияния. Затем он применяет правило для разрешения конфликта. Например, если <для правила слияния> задано значение <sourcePriority>, а <для правила слияния><destinationPriority>, USMT будет использовать <правило destinationPriority>, так как оно является более конкретным.C:\subfolder\* [*]C:\* [*]

Пример этого элемента см. в разделе Конфликты и приоритет.

  • Количество вхождений: Неограниченное

  • Родительские элементы:<правила>

  • Обязательный дочерний элемент:<objectSet>

  • Вспомогательные функции: С этим элементом можно использовать следующие <функции слияния>: SourcePriority, , DestinationPriority, FindFilePlaceByPatternLeafPattern, NewestVersion, HigherValue()и LowerValue().

Синтаксис:

<merge script="ScriptInvocation">
</merge>
Параметр Обязательно? Значение
Сценарий Да Скрипт, за которым следует любое количество строковых аргументов, разделенных запятой и заключенных в круглые скобки. Например, MyScripts.AScript ("Arg1","Arg2").

Скрипт вызывается для каждого объекта, который перечисляется наборами объектов в правиле <включения> . Скрипт фильтра возвращает логическое значение. Если возвращаемое значение равно TRUE, объект переносится. Если имеет значение FALSE, он не переносится.

Следующий пример из MigUser.xml файла:

<rules>
   <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
      <objectSet>
         <pattern type="File">%CSIDL_MYVIDEO%\* [*]</pattern>
      </objectSet>
   </include>
   <merge script="MigXmlHelper.DestinationPriority()">
      <objectSet>
         <pattern type="File">%CSIDL_MYVIDEO% [desktop.ini]</pattern>
      </objectSet>
   </merge>
</rules>

<Функции слияния>

Эти функции управляют разрешением конфликтов.

  • DestinationPriority

    Указывает, что объект, который находится на конечном компьютере, не переносится с исходного компьютера.

    Пример:

    <merge script="MigXmlHelper.DestinationPriority()">
         <objectSet>
              <pattern type="Registry">HKCU\Software\Microsoft\Office\16.0\PhotoDraw\ [MyPictures]</pattern>
              <pattern type="Registry">HKCU\Software\Microsoft\Office\16.0\PhotoDraw\Settings\ [PicturesPath]</pattern>
              <pattern type="Registry">HKCU\Software\Microsoft\Office\16.0\PhotoDraw\Settings\ [AdditionalPlugInPath]</pattern>
         </objectSet>
    </merge>
    
  • FindFilePlaceByPattern

    Функция FindFilePlaceByPattern сохраняет файлы с добавочным счетчиком при возникновении конфликта. Это строка, которая содержит одну из каждой конструкции: <F>, <E>, <N> в любом порядке.

    Синтаксис: FindFilePlaceByPattern(FilePattern)

    Параметр Обязательно? Значение
    FilePattern Да
    • <F> заменяется исходным именем файла.
    • <N> заменяется добавочным счетчиком до тех пор, пока не будет конфликтов с объектами на конечном компьютере.
    • <E> заменяется исходным расширением имени файла.

    Например, <F> (<N>).<E> измените исходный файл MyDocument.docMyDocument (1).doc на на целевом компьютере.
  • NewestVersion

    Функция NewestVersion разрешает конфликты на конечном компьютере в зависимости от версии файла.

    Синтаксис: NewestVersion(VersionTag)

    Параметр Обязательно? Значение
    VersionTag Да Поле версии, которое проверяется. Это поле может быть FileVersion или ProductVersion. Файл с наивысшей версией VersionTag определяет, какие конфликты разрешаются на основе версии файла. Например, если Myfile.txt содержит FileVersion 1 и тот же файл на конечном компьютере содержит FileVersion 2, файл на целевом компьютере остается.
  • HigherValue()

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

  • LowerValue()

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

  • SourcePriority

    Указывает для переноса объекта с исходного компьютера и удаления объекта, который находится на конечном компьютере.

    Пример:

    <merge script="MigXmlHelper.SourcePriority()">
     <objectSet>
       <pattern type="Registry">%HklmWowSoftware%\Microsoft\Office\14.0\Common\Migration\Publisher [UpgradeVersion]</pattern>
       <pattern type="Registry">%HklmWowSoftware%\Microsoft\Office\15.0\Common\Migration\Publisher [UpgradeVersion]</pattern>
       <pattern type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Publisher [UpgradeVersion]</pattern>
     </objectSet>
    </merge>
    

<Миграции>

Элемент <миграции> является единственным корневым элементом файла .xml миграции и является обязательным. Каждый файл.xml должен иметь уникальный URL-адрес миграции. URL-идентификатор каждого файла, указанного в командной строке, должен быть уникальным. URL-идентификаторы должны быть уникальными, так как USMT использует urlid для определения компонентов в файле.

  • Количество вхождений: один

  • Родительские элементы: none

  • Обязательные дочерние элементы:<component>

  • Необязательные дочерние элементы:<library>, <namedElements>

Синтаксис:

<migration urlid="*UrlID/*Name">
</migration>
Параметр Обязательно? Значение
urlid Да UrlID — это строковый идентификатор, который однозначно идентифицирует этот .xml файл. Этот параметр должен быть без двоеточия, как определено в спецификации пространств имен XML. Каждый файл.xml миграции должен иметь уникальный url-идентификатор. Если два файла миграции.xml имеют одинаковый urlid, второй .xml файл, указанный в командной строке, не обрабатывается. Дополнительные сведения о пространствах имен XML см. в разделе Использование пространств имен XML.
Имя Нет Хотя это не обязательно, рекомендуется использовать имя .xml файла.

Следующий пример из MigApp.xml файла:

<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/migapp">
</migration>

MigXMLHelper.FileProperties

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

Вспомогаемая функция MigXMLHelper.FileProperties (property, operator, valueToCompare)
Свойство filesize, dateCreated, dateModified, dateAccessed
Оператор range, neq, lte, lt, eq, gte, gt
valueToCompare Сравниваемое значение. Пример:
Дата: "2023/05/15-2020/05/17", "2023/05/15"
Размер: число с B, КБ, МБ или ГБ в конце. "5 ГБ", "1 КБ-1 МБ"
<component context="System"  type="Application">
<displayName>File_size</displayName>
<role role="Data">

   <rules>
        <include filter='MigXmlHelper.FileProperties("dateAccessed","range","2023/05/15-2020/05/17")'>
         <objectSet>
         <pattern type="File">%SYSTEMDRIVE%\DOCS\* [*]</pattern>
         </objectSet>
      </include>
   </rules>
</role>
</component>

<namedElements>

Элемент <namedElements> можно использовать для определения именованных элементов. Эти элементы можно использовать в любом компоненте в файле.xml . Пример использования этого элемента см. в MigApp.xml файле .

Синтаксис:

<namedElements>
</namedElements>

Пример этого элемента см. в MigApp.xml файле .

<Объекта>

Элемент <object> представляет файл или раздел реестра.

  • Количество вхождений: Неограниченное

  • Родительские элементы:<addObjects>

  • Обязательные дочерние элементы:<location>, <атрибуты>

  • Необязательные дочерние элементы:<байты>

Синтаксис:

<object>
</object>

Следующий пример из MigApp.xml файла:

<addObjects>
   <object>
      <location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [UpgradeVersion]</location>
      <attributes>DWORD</attributes>
      <bytes>0B000000</bytes>
   </object>
   <object>
      <location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [Lang]</location>
      <attributes>DWORD</attributes>
      <bytes>00000000</bytes>
      </object>
</addObjects>

<objectSet>

Элемент <objectSet> содержит список шаблонов объектов, например пути к файлам, расположения реестра и т. д. Все дочерние <элементы условий> оцениваются в первую очередь. Если все дочерние< элементы условий> возвращают значение FALSE, <элемент objectSet> вычисляется как пустой набор. Для каждого родительского элемента может быть только несколько <элементов objectSet> .

Синтаксис:

<objectSet>
</objectSet>

Следующий пример из MigUser.xml файла:

<component type="Documents" context="User">
   <displayName _locID="miguser.mymusic">My Music</displayName>
      <paths>
         <path type="File">%CSIDL_MYMUSIC%</path>
      </paths>
   <role role="Data">
      <detects>           
      <detect>
         <condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_MYMUSIC%")</condition>
      </detect>
   </detects>           
   <rules>
      <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
         <objectSet>
            <pattern type="File">%CSIDL_MYMUSIC%\* [*]</pattern>
         </objectSet>
      </include>
      <merge script="MigXmlHelper.DestinationPriority()">
         <objectSet>
            <pattern type="File">%CSIDL_MYMUSIC%\ [desktop.ini]</pattern>
         </objectSet>
      </merge>
   </rules>
   </role>
</component>

<path>

Этот элемент является внутренним элементом USMT. Не используйте этот элемент.

<Пути>

Этот элемент является внутренним элементом USMT. Не используйте этот элемент.

<шаблон>

Этот элемент можно использовать для указания нескольких объектов. Для каждого <элемента objectSet> можно использовать несколько <элементов шаблона>, и они объединяются. При указании файлов корпорация Майкрософт рекомендует использовать GenerateDrivePatterns вместо этого со< скриптом>. GenerateDrivePatterns в основном то же самое, что <и правило шаблона> , без спецификации букв диска. Например, следующие две строки кода похожи:

<pattern type="File">C:\Folder\* [Sample.doc]</pattern>
<script>MigXmlHelper.GenerateDrivePatterns("\Folder\* [Sample.doc]","Fixed"</script>
  • Количество вхождений: Неограниченное

  • Родительские элементы:<objectSet>

  • Дочерние элементы: только Path [объект] должен быть допустимым.

Синтаксис:

<pattern type="typeID">Path [object]</pattern>
Параметр Обязательно? Значение
type Да typeID может иметь значение Registry, File или Ini. Если typeId имеет значение Ini, пробел между Path и объектом не допускается. Например, следующий формат является правильным, если type="Ini":
<pattern type="Ini">%WinAmp5InstPath%\Winamp.ini|WinAmp[keeponscreen]</pattern>
Путь [объект] Да Допустимый шаблон реестра или пути к файлу, за которым следует по крайней мере один пробел, а затем скобки [], содержащие переносимый объект.
  • Путь может содержать подстановочный знак звездочки (*) или быть распознаваемыми переменными среды. Вопросительный знак нельзя использовать в качестве подстановочного знака. HKCU и HKLM можно использовать для ссылки на HKEY_CURRENT_USER и HKEY_LOCAL_MACHINE соответственно.
  • Объект может содержать подстановочный знак звездочки (*). Однако вопросительный знак нельзя использовать в качестве подстановочного знака. Пример:
    C:\Folder\ [*] перечисляет все файлы в C:\Folder , но не содержит вложенных C:\Folderпапок .
    C:\Folder* [*]перечисляет все файлы и вложенные папки .C:\Folder
    C:\Folder\ [*.mp3] перечисляет все .mp3 файлы в C:\Folder.
    C:\Folder\ [Sample.doc] перечисляет только файл, расположенный Sample.doc в папке C:\Folder.
    Примечание
    При переносе файла с символом квадратной скобки ([ или ]) в имени файла, символ моркови (^) должен быть вставлен непосредственно перед скобкой, чтобы он был действителен. Например, если есть файл с именем "file].txt", <pattern type="File">c:\documents\mydocs [file^].txt]</pattern> его необходимо указать вместо <pattern type="File">c:\documents\mydocs [file].txt]</pattern>.

Пример:

  • Чтобы перенести один раздел реестра, выполните следующие действия:

    <pattern type="Registry">HKLM\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Cache [Persistent]</pattern>
    
  • Чтобы перенести папку C:\EngineeringDrafts и все вложенные папки с диска C::

    <pattern type="File">C:\EngineeringDrafts\* [*]</pattern>
    
  • Чтобы перенести с диска C: только C:\EngineeringDrafts папку, за исключением всех вложенных папок, выполните следующие действия.

    Перенаправка файлов и параметров

  • Sample.doc Перенос файла из C:\EngineeringDrafts:

    <pattern type="File"> C:\EngineeringDrafts\ [Sample.doc]</pattern>
    
  • Чтобы перенести Sample.doc файл из места, где он существует на диске C:, используйте шаблон следующим образом. Если на диске C: существует несколько файлов с одинаковыми именами, все эти файлы переносятся.

    <pattern type="File"> C:\* [Sample.doc] </pattern>
    
  • Дополнительные примеры использования этого элемента см. в разделах Исключение файлов и параметров, Перенаправка файлов и параметров, Включение файлов и параметров и Пользовательские примеры XML.

<Обработки>

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

  • Число вхождений: не ограничено

  • Родительские элементы:<правила>

  • Обязательный дочерний элемент:<script>

Синтаксис:

<processing when="pre-scan|scan-success|post-scan|pre-apply|apply-success|post-apply">
</processing>
Параметр Обязательно? Значение
Когда Да Указывает, когда должен выполняться скрипт. Это значение может быть одним из следующих значений:
  • Предварительная проверка означает до начала процесса сканирования.
  • Успешное сканирование означает успешное завершение процесса сканирования.
  • post-scan означает, что после завершения процесса сканирования, независимо от того, был ли он успешным или нет.
  • Предварительное применение означает до начала процесса применения.
  • Apply-success означает, что после успешного завершения процесса применения.
  • post-apply означает, что после завершения процесса применения, независимо от того, был ли он успешным или нет.

<Плагин>

Этот элемент является внутренним элементом USMT. Не используйте этот элемент.

<Роль>

Элемент <role> является обязательным в пользовательском файле.xml . При указании <элемента роли> можно создать конкретный компонент. Компонент определяется параметрами, указанными на <уровне компонента> , и ролью, указанной здесь.

Синтаксис:

<role role="Container|Binaries|Settings|Data">
</role>
Параметр Обязательно? Значение
Роль Да Определяет роль для компонента. Роль может быть одной из следующих:
  • Контейнер
  • Двоичные файлы
  • Параметры
  • Данные
Можно указать один из следующих элементов:
  1. До трех <элементов роли> в компоненте<> — один элемент роли Binaries, один элемент роли Settings и один элемент роли Data. Эти параметры не изменяют поведение миграции. Их единственная цель — помочь классифицировать переносимые параметры. Эти <элементы роли> могут быть вложенными, но каждый вложенный элемент должен иметь один и тот же параметр роли.
  2. Один элемент роли> Container< в элементе< компонента>. В этом случае нельзя указать какие-либо дочерние <элементы правил> , а только другие <элементы компонента> . И каждый дочерний <элемент компонента> должен иметь тот же тип, что и у родительского <элемента компонента> . Пример:
<component context="UserAndSystem" type="Application">
<displayName _locID="migapp.msoffice2016">Microsoft Office 2016</displayName>
<имя среды="GlobalEnv" />
<role="Container">
<detection name="AnyOffice2016Version" />
<detection name="Word2016" />
<!--
Общие параметры Office 2016
-->
<component context="UserAndSystem" type="Application">

Следующий пример из MigUser.xml файла. Дополнительные примеры см. в MigApp.xml файле:

<component type="System" context="User">
   <displayName _locID="miguser.startmenu">Start Menu</displayName>
   <paths>
      <path type="File">%CSIDL_STARTMENU%</path>
   </paths>
   <role role="Settings">
      <detects>           
         <detect>
            <condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_STARTMENU%")</condition>
         </detect>
      </detects>           
   <rules>
      <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
         <objectSet>
            <pattern type="File">%CSIDL_STARTMENU%\* [*]</pattern>
         </objectSet>
      </include>
      <merge script="MigXmlHelper.DestinationPriority()">
         <objectSet>
            <pattern type="File">%CSIDL_STARTMENU% [desktop.ini]</pattern>
            <pattern type="File">%CSIDL_STARTMENU%\* [*]</pattern>
         </objectSet>
      </merge>
   </rules>
   </role>
</component>

<правила>

Элемент <rules> является обязательным в пользовательском файле.xml . Этот элемент содержит правила, которые выполняются во время миграции, если выбран родительский <элемент компонента> , если дочерний <элемент условий> (если он имеется) не будет иметь значение FALSE. Для каждого <элемента rules> может быть несколько дочерних <элементов правил> .

Синтаксис:

<rules name="ID" context="User|System|UserAndSystem">
</rules>
Параметр Обязательно? Значение
name Да, если <правила> являются дочерними для <именованныхЭлементов>
Нет, если <правила> являются дочерними для любого другого элемента
Если указан идентификатор , все дочерние элементы не обрабатываются. Вместо этого обрабатываются все другие <элементы правил> с тем же именем, объявленные в <nameElements> .
Контексте Нет
(по умолчанию = UserAndSystem)
Определяет область этого параметра: следует ли обрабатывать этот компонент в контексте конкретного пользователя, во всей операционной системе или в обоих случаях.
Наибольший возможный область задается элементом компонента. Например, если <элемент компонента> имеет контекст User , а <элемент rules> имеет контекст UserAndSystem, элемент <rules> будет действовать так, как будто он имеет контекст User. Если <бы правила> имели контекст System, он действовал бы так, как будто <правил> не было.
  • Пользователь: вычисляет переменные для каждого пользователя.
  • Система. Оценивает переменные только один раз для системы.
  • UserAndSystem: вычисляет переменные для всей операционной системы и каждого пользователя.

Следующий пример из MigUser.xml файла:

<component type="Documents" context="User">
   <displayName _locID="miguser.mymusic">My Music</displayName>
      <paths>
         <path type="File">%CSIDL_MYMUSIC%</path>
      </paths>
   <role role="Data">
      <detects>           
      <detect>
         <condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_MYMUSIC%")</condition>
      </detect>
   </detects>           
   <rules>
      <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
         <objectSet>
            <pattern type="File">%CSIDL_MYMUSIC%\* [*]</pattern>
         </objectSet>
      </include>
      <merge script="MigXmlHelper.DestinationPriority()">
         <objectSet>
            <pattern type="File">%CSIDL_MYMUSIC%\ [desktop.ini]</pattern>
         </objectSet>
      </merge>
   </rules>
   </role>
</component>

<Сценарий>

Возвращаемое значение, необходимое для скрипта<>, зависит от родительского элемента.

Количество вхождений: Один раз для <переменной>, неограниченно для <objectSet> и <обработки>

Родительские элементы:<objectSet>, <переменная>, <обработка>

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

Синтаксис и вспомогательные функции:

  • Общий синтаксис: <script>ScriptWithArguments</script>

  • Метод GetStringContent можно использовать, если <скрипт> находится в переменной<>.

    Синтаксис: <script>MigXmlHelper.GetStringContent("ObjectType","EncodedLocationPattern", "ExpandContent")</script>

    Примере: <script>MigXMLHelper.GetStringContent("Registry","HKLM\Software\MyApp\Installer [EXEPATH]")</script>

  • GenerateUserPatterns можно использовать, если <скрипт> находится в objectSet<>.

    Синтаксис: <script>MigXmlHelper.GenerateUserPatterns("ObjectType","EncodedLocationPattern","ProcessCurrentUser")</script>

    Примере: <script>MigXmlHelper.GenerateUserPatterns ("File","%USERPROFILE%\* [*.doc]", "FALSE")</script>

  • GenerateDrivePatterns можно использовать, если <скрипт> находится в <objectSet>.

    Синтаксис: <script>MigXmlHelper.GenerateDrivePatterns("PatternSegment","DriveType")</script>

    Примере: <script>MigXmlHelper.GenerateDrivePatterns("* [sample.doc]", "Fixed")</script>

  • Простые исполняемые скрипты можно использовать с <элементами скриптов>, которые находятся в <элементах обработки>: AskForLogoff, ConvertToShortFileName, KillExplorer, RemoveEmptyDirectories, RestartExplorer, RegisterFonts, StartService, StopService, SyncSCM.

    Синтаксис: <script>MigXmlHelper.ExecutingScript</script>

    Примере: <script>MigXmlHelper.KillExplorer()</script>

Параметр Обязательно? Значение
ScriptWithArguments Да Скрипт, за которым следует любое количество строковых аргументов, разделенных запятой и заключенных в круглые скобки. Например, MyScripts.AScript ("Arg1","Arg2").
Скрипт вызывается для каждого объекта, который перечисляется наборами объектов в правиле <включения> . Скрипт фильтра возвращает логическое значение. Если возвращаемое значение равно TRUE, объект переносится. Если имеет значение FALSE, он не переносится.
Возвращаемое значение, необходимое для скрипта<>, зависит от родительского элемента.
  • При использовании в <переменной> возвращаемое значение должно быть строковым.
  • При использовании в <objectSet> возвращаемое значение должно быть двумерным массивом строк.
  • При использовании в расположении<> возвращаемое значение должно быть допустимым расположением, которое соответствует атрибуту <типа location>. Например, если <location type="File">, дочерний элемент скрипта, если он указан, должен быть допустимым расположением файла.
    Примечание
    При переносе файла с символом скобки ([ или ]) в имени файла вставьте символ моркови (^) непосредственно перед скобкой, чтобы он был действителен. Например, если есть файл с именем "file].txt", укажите <pattern type="File">c:\documents\mydocs [file^].txt]</pattern> вместо <pattern type="File">c:\documents\mydocs [file].txt]</pattern>.

Примеры:

Чтобы перенести файл Sample.doc с любого диска на исходном компьютере, используйте <сценарий> , как показано ниже. Если существует несколько файлов с одинаковыми именами, все эти файлы переносятся.

<script>MigXmlHelper.GenerateDrivePatterns("* [sample.doc]", "Fixed")</script> 

Дополнительные примеры использования этого элемента см. в разделах Исключение файлов и параметров, Перенаправка файлов и параметров и Пользовательские примеры XML.

<функции скрипта>

Следующие функции можно использовать с элементом <script> .

Функции создания строк и шаблонов

Эти функции возвращают строку или шаблон.

  • GetStringContent

    Метод GetStringContent можно использовать с <элементами скрипта> , которые находятся в <переменных> элементах. По возможности эта функция возвращает строковое представление заданного объекта. В противном случае возвращается значение NULL. Для файлового объекта эта функция всегда возвращает значение NULL.

    Синтаксис: GetStringContent("ObjectType","EncodedLocationPattern", "ExpandContent")

    Параметр Обязательно? Значение
    Objecttype Да Тип объекта . Может иметь значение Registry или Ini (для файла.ini ).
    EncodedLocationPattern Да
    • Если тип объекта — Registry, encodedLocationPattern должен быть допустимым путем к реестру. Например, HKLM\SOFTWARE\MyKey[].
    • Если тип объекта — Ini, то encodedLocationPattern должен иметь следующий формат:
      IniFilePath|SectionName[SettingName]
    ExpandContent Нет (default=TRUE) Может иметь значение TRUE или FALSE. Если значение FALSE, указанное расположение не разворачивается перед возвратом.

    Пример:

    <variable name="MSNMessengerInstPath">
    <script>MigXmlHelper.GetStringContent("Registry","%HklmWowSoftware%\Microsoft\MSNMessenger [InstallationDirectory]")</script>
    </variable>
    
  • GenerateDrivePatterns

    Функция GenerateDrivePatterns выполняет итерацию всех доступных дисков и выбирает те, которые соответствуют требуемому типу диска. Затем он объединяет выбранные диски с конечной частью PatternSegment , чтобы сформировать полнокодированный шаблон файла. Например, если PatternSegment имеет значение Path [file.txt] , а DriveTypeFixed, то функция создает C:\Path [file.txt]и другие шаблоны, если есть фиксированные диски, отличные от C:. Переменные среды нельзя указать с помощью этой функции. GenerateDrivePatterns может использоваться с <элементами скрипта> , которые находятся в <objectSet> и находятся в <include>/<exclude>.

    Синтаксис: GenerateDrivePatterns("PatternSegment","DriveType")

    Параметр Обязательно? Значение
    PatternSegment Да Суффикс закодированного шаблона. Значение объединяется со спецификацией диска, например "c:", чтобы сформировать полный шаблон закодированного файла. Например, "* [*.doc]". PatternSegment не может быть переменной среды.
    DriveType Да Тип диска, для которого должны быть созданы шаблоны. Можно указать один из следующих элементов:
    • Фиксированная
    • CDROM
    • Съемный
    • Удаленный

    Пример этого элемента см. в последнем компоненте MigUser.xml в файле.

  • GenerateUserPatterns

    Функция GenerateUserPatterns выполняет итерацию по всем пользователям, которые переносятся, за исключением текущего обработанного пользователя, если <ProcessCurrentUser> имеет значение FALSE, и расширяет указанный шаблон в контексте каждого пользователя. Например, если пользователи A, B и C имеют профили в C:\Users, вызывая GenerateUserPattens('File','%userprofile% [*.doc]','TRUE'), вспомогательная функция создает следующие три шаблона:

    • "C:\Users\A\* [*.doc]"

    • "C:\Users\B\* [*.doc]"

    • "C:\Users\C\* [*.doc]"

    Синтаксис: GenerateUserPatterns("ObjectType","EncodedLocationPattern","ProcessCurrentUser")

    Параметр Обязательно? Значение
    Objecttype Да Определяет тип объекта. Может быть файлом или реестром.
    EncodedLocationPattern Да Шаблон расположения. Переменные среды разрешены.
    ProcessCurrentUser Да Может иметь значение TRUE или FALSE. Указывает, должны ли быть созданы шаблоны для текущего пользователя.

Пример.

Если GenerateUserPattens('File','%userprofile% [*.doc]','FALSE') вызывается, когда USMT обрабатывает пользователя A, то эта функция создает шаблоны только для пользователей B и C. Эту вспомогательную функцию можно использовать для создания сложных правил. Например, чтобы перенести все .doc файлы с исходного компьютера, но если пользователь X не перенесен, не переносите файлы .doc из профиля пользователя X.

В следующем примере приведен пример кода для этого сценария. Первый <элемент rules> переносит все .doc файлы на исходном компьютере, за исключением файлов внутри C:\Users. Вторые <элементы правил> переносятся из всех .doc файлов C:\Users , .doc за исключением файлов в профилях других пользователей. Поскольку второй <элемент rules> обрабатывается в каждом контексте перенесенного пользователя, конечным результатом является требуемое поведение. Конечный результат — тот, который мы ожидали.

<rules context="System">
  <include>
    <objectSet>
      <script>MigXmlHelper.GenerateDrivePatterns ("* [*.doc]", "Fixed")</script>
    </objectSet>
  </include>
  <exclude>
    <objectSet>
      <pattern type="File">%ProfilesFolder%\* [*.doc]</pattern>
    </objectSet>
  </exclude>
</rules>
<rules context="User">
  <include>
    <objectSet>
      <pattern type="File">%ProfilesFolder%\* [*.doc]</pattern>
    </objectSet>
  </include>
  <exclude>
    <objectSet>
      <script>MigXmlHelper.GenerateUserPatterns ("File","%userprofile%\* [*.doc]", "FALSE")</script>
    </objectSet>
  </exclude>
</rules>

MigXmlHelper.GenerateDocPatterns

Вспомогающая MigXmlHelper.GenerateDocPatterns функция вызывает средство поиска документов для проверки системы на наличие всех файлов, которые можно перенести. Его можно вызвать в контексте system или user для фокусировки сканирования.

Параметр Обязательно? Значение
ScanProgramFiles Нет (по умолчанию = FALSE) Может иметь значение TRUE или FALSE. Параметр ScanProgramFiles определяет, сканирует ли средство поиска документов каталог Program Files для сбора зарегистрированных расширений файлов для известных приложений. Например, если задано значение TRUE , он обнаруживает и переносит .jpg файлы в каталог Photoshop, если .jpg это расширение файла, зарегистрированное в Photoshop.
IncludePatterns Нет (по умолчанию = TRUE) Может иметь значение TRUE или FALSE. Значение TRUE создает шаблоны включения и может быть добавлено в <элемент include> . FALSE создает шаблоны исключений и может быть добавлен в <элемент exclude> .
SystemDrive Нет (по умолчанию = FALSE) Может иметь значение TRUE или FALSE. Если задано значение TRUE, все шаблоны ограничиваются системным диском.
 <!-- This component migrates data in user context -->
  <component type="Documents" context="User">
    <displayName>MigDocUser</displayName>
    <role role="Data">
      <rules>
        <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
          <objectSet>
            <script>MigXmlHelper.GenerateDocPatterns ("false")</script>
          </objectSet>
        </include>
        <exclude>
          <objectSet>
           <script>MigXmlHelper.GenerateDocPatterns ("false", "false", "false")</script>
          </objectSet>
        </exclude>
      </rules>
    </role>
  </component>

Простое выполнение скриптов

Следующие скрипты не имеют возвращаемого значения. Следующие ошибки можно использовать с <элементами скрипта>, которые находятся в элементах< обработки>

  • AskForLogoff(). Предлагает пользователю выйти из службы в конце миграции. Пример:

    <processing when="apply-success">
      <script>MigXmlHelper.AskForLogoff()</script>
    </processing>
    
  • ConvertToShortFileName(RegistryEncodedLocation). Если RegistryEncodedLocation — это полный путь к существующему файлу, эта функция преобразует файл в его короткое имя, а затем обновляет значение реестра.

  • KillExplorer(). Останавливает Explorer.exe для текущего контекста пользователя. Остановка Explorer.exe позволяет получить доступ к определенным ключам и файлам, которые сохраняются открытыми при выполнении Explorer.exe. Пример:

    <processing when="pre-apply">
      <script>MigXmlHelper.KillExplorer()</script>
    </processing>
    
  • RegisterFonts(FileEncodedLocation). Регистрирует заданный шрифт или все шрифты в заданном каталоге. Пример:

 <processing when="apply-success">
   <script>MigXmlHelper.RegisterFonts("%CSIDL_COMMON_FONTS%")</script>
 </processing>
  • RemoveEmptyDirectories (DirectoryEncodedPattern). Удаляет все пустые каталоги, соответствующие DirectoryEncodedPattern на конечном компьютере.

  • RestartExplorer(). Перезапускает Explorer.exe в конце миграции. Пример:

    <processing when="post-apply">
      <script>MigXmlHelper.RestartExplorer()</script>
    </processing>
    
  • StartService (ServiceName, OptionalParam1, OptionalParam2,...). Запускает службу, определяемую с помощью ServiceName. ServiceName — это подраздел в HKLM\System\CurrentControlSet\Services , который содержит данные для данной службы. Необязательные параметры, если таковые есть, передаются в API StartService. Дополнительные сведения см. в статье о функции StartServiceA (winsvc.h).

  • StopService (ServiceName). Останавливает службу, определяемую serviceName. ServiceName — это подраздел в HKLM\System\CurrentControlSet\Services , который содержит данные для данной службы.

  • SyncSCM(ServiceShortName). Считывает значение начального типа из реестра (HKLM\System\CurrentControlSet\Services\ServiceShortName [Start]) после изменения значения подсистемой миграции, а затем синхронизирует Service Control Manager (SCM) с новым значением.

<Текст>

Текстовый<> элемент можно использовать для задания значения для любых переменных среды, которые находятся в одном из файлов миграции.xml.

Синтаксис:

<text>NormalText</text>
Параметр Значение
NormalText Этот текст интерпретируется как обычный текст.

Пример:

<variable name="QuickTime5or6DataSys">
  <text>%CSIDL_COMMON_APPDATA%\QuickTime</text> 
</variable>

<unconditionalExclude>

Элемент <unconditionalExclude> исключает указанные файлы и значения реестра из миграции, независимо от других правил включения в любом из файлов.xml миграции Config.xml или в файле. Объекты, объявленные здесь, не переносятся, так как этот элемент имеет приоритет над всеми другими правилами. Например, даже если существуют явные <правила включения> файлов, если они исключены с помощью этого параметра, они не переносятся..mp3

Используйте этот элемент для исключения всех .mp3 файлов с исходного компьютера. Кроме того, при резервном копировании C:\UserData с помощью другого метода можно исключить всю папку из миграции. Используйте этот элемент с осторожностью. Если приложению требуется исключенный файл, приложение может работать неправильно на конечном компьютере.

  • Количество вхождений: Неограниченное.

  • Родительские элементы:<правила>

  • Дочерние элементы:<objectSet>

Синтаксис:

<unconditionalExclude></unconditionalExclude>

Следующий файл.xml исключает все .mp3 файлы из миграции. Дополнительные примеры использования этого элемента см. в разделе Исключение файлов и параметров.

<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/excludefiles">
  <component context="System" type="Documents">
        <displayName>Test</displayName>
        <role role="Data">
            <rules>
             <unconditionalExclude>
                        <objectSet>
    <script>MigXmlHelper.GenerateDrivePatterns ("* [*.mp3]", "Fixed")</script>
                        </objectSet> 
             </unconditionalExclude>
            </rules>
        </role>
    </component>
</migration>

<Переменной>

Элемент <переменной> является обязательным в элементе <среды> . Для каждого <элемента переменной> должен быть один <objectSet>, <скрипт> или <текстовый> элемент. Содержимое элемента переменной<> присваивает текстовое значение переменной среды. Этот элемент имеет следующие три варианта:

  1. Если элемент переменной<> содержит текстовый<> элемент, значение элемента переменной является значением текстового<> элемента.

  2. Если элемент переменной<><содержит элемент script>, а вызов скрипта создает строку, не содержащую null, то значение элемента переменной<> является результатом вызова скрипта.

  3. Если элемент переменной<> содержит <элемент objectSet> и при вычислении <элемента objectSet> создается по крайней мере один шаблон объекта, то значение первого объекта, соответствующего результирующему шаблону объекта, является значением элемента переменной.

Синтаксис:

<variable name="ID" remap=TRUE|FALSE>
</variable>
Параметр Обязательно? Значение
name Да Id — это строковое значение, которое является именем, используемым для ссылки на переменную среды. Корпорация Майкрософт рекомендует начинать идентификатор с имени компонента, чтобы избежать конфликтов пространства имен. Например, если имя компонента — MyComponent и требуется переменная, которая является путем установки компонента, MyComponent.InstallPathможно указать.
Переназначить Нет, по умолчанию = FALSE Указывает, следует ли оценивать эту переменную среды как переменную среды для повторного сопоставления. Объекты, расположенные по пути, который находится под значением этой переменной среды, автоматически перемещаются в место, где переменная среды указывает на целевой компьютер.

Следующий пример из MigApp.xml файла:

<environment>
   <variable name="HklmWowSoftware">
      <text>HKLM\Software</text>
   </variable>
   <variable name="WinZip8or9or10Exe">
      <script>MigXmlHelper.GetStringContent("Registry","%HklmWowSoftware%\Microsoft\Windows\CurrentVersion\App Paths\winzip32.exe []")</script>
   </variable>
</environment>

<version>

Элемент <version> определяет версию компонента, но не влияет на миграцию.

  • Количество вхождений: ноль или одно

  • Родительские элементы:<component>

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

Синтаксис:

<version>ComponentVersion</version>
Параметр Обязательно? Значение
ComponentVersion Да Версия компонента, которая может содержать шаблоны.

Пример:

<version>4.*</version>

<windowsObjects>

Элемент <windowsObjects> предназначен только для внутреннего использования USMT. Не используйте этот элемент.

Приложение

Указание расположений

  • Указание закодированных расположений. Закодированное расположение, используемое во всех вспомогательных функциях, является однозначным строковым представлением для имени объекта. Закодированное расположение состоит из части узла, за которой при необходимости следует конечный элемент, заключенный в квадратные скобки. В этом формате делается четкое различие между узлами и листьями.

    Например, укажите файл C:\Windows\Notepad.exe следующим образом: c:\Windows[Notepad.exe]. Аналогичным образом укажите каталог C:\Windows\System32 следующим образом: c:\Windows\System32. (Обратите внимание на отсутствие [] конструкции.)

    Представляет реестр аналогично. Значение по умолчанию раздела реестра представлено в виде пустой [] конструкции. Например, значение по умолчанию для HKLM\SOFTWARE\MyKey раздела реестра — HKLM\SOFTWARE\MyKey[].

  • Указание шаблонов расположения. Указание шаблона расположения аналогично указанию фактического расположения. Исключение заключается в том, что и узел, и конечная часть принимают шаблоны. Однако шаблон из узла не распространяется на конечный элемент.

    Например, шаблон c:\Windows\* соответствует каталогу Windows и всем подкаталогам, но не соответствует ни одному из файлов в этих каталогах. Чтобы также соответствовать файлам, c:\Windows\*[*] необходимо указать значение .

Внутренние функции USMT

Следующие функции предназначены только для внутреннего использования USMT. Не используйте их в файле.xml .

  • AntiAlias

  • ConvertScreenSaver

  • ConvertShowIEOnDesktop

  • ConvertToOfficeLangID

  • MigrateActiveDesktop

  • MigrateAppearanceUPM

  • MigrateDisplayCS

  • MigrateDisplayss

  • MigrateIEAutoSearch

  • MigrateMouseUPM

  • MigrateSoundSysTray

  • MigrateTaskBarss

  • SetPstPathInMapiStruc

Допустимые теги версий

Следующие теги версий можно использовать с различными вспомогательными функциями:

  • "CompanyName"

  • "FileDescription"

  • FileVersion

  • InternalName

  • "LegalCopyright"

  • "OriginalFilename"

  • "ProductName"

  • "ProductVersion"

Следующие теги версий содержат значения, которые можно сравнить:

  • FileVersion

  • "ProductVersion"