Поделиться через


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

Назначение: Windows 7, Windows 8, Windows 8.1, Windows Vista

Обзор

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

В этом разделе

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

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

  • Приложение

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

    • Внутренние функции средства миграции пользовательской среды

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

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

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

Элементы A–K Элементы L–Z Вспомогательные функции

<addObjects>

<attributes>

<bytes>

<commandLine>

<component>

<condition>

<conditions>

<content>

<contentModify>

<description>

<destinationCleanup>

<detect>

<detects>

<detection>

<displayName>

<environment>

<exclude>

<excludeAttributes>

<extensions>

<extension>

<externalProcess>

<icon>

<include>

<includeAttributes>

<library>

<location>

<locationModify>

<_locDefinition>

<manufacturer>

<merge>

<migration>

<namedElements>

<object>

<objectSet>

<path>

<paths>

<pattern>

<processing>

<plugin>

<role>

<rules>

<script>

<text>

<unconditionalExclude>

<variable>

<version>

<windowsObjects>

Функции элемента <condition>

Функции <content>

Функции <contentModify>

Функции фильтрации <include> и <exclude>

Функции <locationModify>

Функции <merge>

Функции <script>

Внутренние функции средства миграции пользовательской среды

<addObjects>

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

  • Число экземпляров: не ограничено

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

  • Обязательные дочерние элементы: <object> Кроме того, в качестве дочерних элементов <object> необходимо указать элементы <location> и <attributes>.

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

Синтаксис:

<addObjects>

</addObjects>

Ниже приведен пример из файла MigApp.xml.

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

<attributes>

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

  • Число экземпляров: один для каждого элемента <object>

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

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

Синтаксис:

<attributes>Содержимое</attributes>

Параметр Обязательный Описание

Содержимое

Да

Этот параметр зависит от типа описываемого объекта.

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

    • Archive

    • Read-only

    • System

    • Hidden

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

    • None

    • String

    • ExpandString

    • Binary

    • Dword

    • REG_SZ

Ниже приведен пример из файла MigApp.xml.

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

<bytes>

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

  • Число экземпляров: 0 или 1

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

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

Синтаксис:

<bytes string="Yes|No" expand="Yes|No">Содержимое</bytes>

Параметр Обязательный Описание

string

Нет (значение по умолчанию: No)

Указывает, следует ли интерпретировать Содержимое как строку или как набор байтов.

expand

Нет (значение по умолчанию: Yes)

Если параметр expand имеет значение Yes, содержимое элемента <bytes> сначала разворачивается в контексте исходного компьютера, а затем интерпретируется.

Содержимое

Да

Зависит от значения параметра string.

  • Если параметр string имеет значение Yes, то содержимое элемента <bytes> интерпретируется как строка.

  • Если параметр string имеет значение No, то содержимое элемента <bytes> интерпретируется как набор байтов. Каждые два символа представляют байт в шестнадцатеричной системе счисления. Например, 616263 соответствует строке abc в формате ANSI. Строка abc в формате Юникода, включая ограничитель строки: 6100620063000000.

Ниже приведен пример из файла MigApp.xml.

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

<commandLine>

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

  • Число экземпляров: не ограничено

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

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

Синтаксис:

<commandLine>Командная_строка</commandLine>

Параметр Обязательный Описание

Командная_строка

Да

Допустимая командная строка.

<component>

Для пользовательского XML-файла переноса элемент <component> является обязательным. Этот элемент определяет базовые конструкции XML-файла переноса. Например, в файле MigApp.xml компонент Microsoft(R) Office 2003 содержит другой компонент – Microsoft Office Access(R) 2003. Для описания компонента можно использовать дочерние элементы.

Компонент может быть вложен в другой компонент, т. е. элемент <component> может быть дочерним по отношению к элементу <role> в элементе <component> в следующих случаях: 1) если родительский элемент <component> является контейнером; 2) если роли дочернего и родительского элемента <component> совпадают.

  • Число экземпляров: не ограничено

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

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

  • Необязательные дочерние элементы: <manufacturer>, <version>, <description>, <paths>, <icon>, <environment>, <extensions>

Синтаксис:

<component type="System|Application|Device|Documents" context="User|System|UserAndSystem" defaultSupported="TRUE|FALSE|YES|NO"

hidden="Yes|No">

</component>

Параметр Обязательный Описание

type

Да

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

  • System: параметры операционной системы. Этот тип определяет все компоненты Windows(R).

    Если type="System" и defaultSupported="FALSE", то параметры не будут перенесены до тех пор, пока в XML-файлах, указываемых в командной строке LoadState, не будет указан эквивалентный компонент. Например, в файле по умолчанию MigSys.xml указаны компоненты с параметрами type="System" и defaultSupported="FALSE". Если вы указываете этот файл в командной строке ScanState, то для переноса параметров его необходимо также указать в командной строке LoadState. Это связано с тем, что средство LoadState должно обнаружить эквивалентный компонент. Иными словами, компонент должен иметь одинаковое значение атрибута переноса urlid XML-файла и отображаемое имя. В противном случае средство LoadState не перенесет эти параметры из хранилища. Это удобно в случае, если исходный компьютер работает под управлением Windows XP и выполняется перенос на компьютеры Windows Vista(R) и Windows XP, поскольку можно использовать одно хранилище для обоих конечных компьютеров.

  • Application: параметры приложения.

  • Device: параметры устройства.

  • Documents: задает файлы.

context

Нет

(значение по умолчанию: UserAndSystem)

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

Максимальная область действия задается с помощью элемента <component>. Например, если элемент <component> содержит параметр context со значением User, а элемент <rules> содержит параметр context со значением UserAndSystem, то параметр context элемента <rules> переопределяется значением User. Если элемент <rules> содержит параметр context со значением System, то он пропускается.

  • User. Оценивает компонент в контексте каждого пользователя.

  • System. Оценивает компонент один раз в контексте системы.

  • UserAndSystem. Оценивает компонент в контексте всей операционной системы и каждого пользователя.

defaultSupported

Нет

(значение по умолчанию: TRUE)

Может принимать значения TRUE, FALSE, YES или NO. Если этот параметр имеет значение FALSE или NO, компонент не будет перенесен до тех пор, пока на конечный компьютер не будет добавлен эквивалентный компонент.

Если type="System" и defaultSupported="FALSE", то параметры не будут перенесены до тех пор, пока в XML-файлах, указываемых в командной строке LoadState, не будет указан эквивалентный компонент. Например, в файле по умолчанию MigSys.xml указаны компоненты с параметрами type="System" и defaultSupported="FALSE". Если вы указываете этот файл в командной строке ScanState, то для переноса параметров его необходимо также указать в командной строке LoadState. Это связано с тем, что средство LoadState должно обнаружить эквивалентный компонент. Иными словами, компонент должен иметь одинаковое значение атрибута переноса urlid XML-файла и отображаемое имя, поскольку в противном случае средство LoadState не перенесет параметры из хранилища. Это удобно в случае, если исходный компьютер работает под управлением Windows XP и выполняется перенос на компьютеры Windows Vista и Windows XP, поскольку можно использовать одно хранилище для обоих конечных компьютеров.

hidden

 

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

Пример использования элемента см. в любом XML-файле переноса по умолчанию.

<condition>

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

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

  • Число экземпляров: не ограничено

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

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

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

Синтаксис:

<condition negation="Yes|No">Имя_сценария</condition>

Параметр Обязательный Описание

negation

Нет

(значение по умолчанию: No)

Значение "Yes" инвертирует значение True или False условия.

Имя_сценария

Да

Сценарий, который задан в этом разделе переноса.

Пример

В следующем примере элементы <condition> A и B объединяются с помощью оператора AND, поскольку они находятся в разных разделах <conditions>. Пример

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

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

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

Функции элемента <condition>

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

  • Функции, предназначенные для версии операционной системы

  • Функции, предназначенные для объектов

Функции, предназначенные для версии операционной системы

  • DoesOSMatch

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

    Синтаксис: DoesOSMatch("Тип_ОС","Версия_ОС")

    Параметр Обязательный Описание

    Тип_ОС

    Да

    Единственным допустимым значением этого параметра является NT. Обратите внимание, что для правильной работы необходимо задать этот параметр для функций <condition>.

    Версия_ОС

    Да

    Основной номер версии, дополнительный номер версии, номер сборки и номер редакции, разделенные точками. Пример: 5.0.2600.Service Pack 1 Чтобы указать частичную спецификацию версии, используйте шаблон. Пример: 5.0.*

    Пример:

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

  • IsNative64Bit

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

  • IsOSLaterThan

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

    Синтаксис: IsOSLaterThan("Тип_ОС","Версия_ОС")

    Параметр Обязательный Описание

    Тип_ОС

    Да

    Может принимать значение 9x или NT. Если Тип_ОС не совпадает с типом текущей операционной системы, то функция возвращает значение FALSE. Например, если текущая операционная система принадлежит семейству Windows NT, а параметр Тип_ОС имеет значение "9x", то функция возвращает значение FALSE.

    Версия_ОС

    Да

    Основной номер версии, дополнительный номер версии, номер сборки и номер редакции, разделенные точками. Пример: 5.0.2600.Service Pack 1 Можно указать частичную спецификацию версии, но без шаблона. Пример: 5.0

    Функция IsOSLaterThan возвращает значение TRUE, если текущая операционная система является более поздней, чем Версия_ОС, или совпадает с ней.

    Пример:

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

  • IsOSEarlierThan

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

    Синтаксис: IsOSEarlierThan("Тип_ОС","Версия_ОС")

    Параметр Обязательный Описание

    Тип_ОС

    Да

    Может принимать значение 9x или NT. Если Тип_ОС не совпадает с типом текущей операционной системы, то функция возвращает значение FALSE. Например, если текущая операционная система принадлежит семейству Windows NT, а параметр Тип_ОС имеет значение "9x", функция возвращает значение FALSE.

    Версия_ОС

    Да

    Основной номер версии, дополнительный номер версии, номер сборки и номер редакции, разделенные точками. Пример: 5.0.2600.Service Pack 1 Можно указать частичную спецификацию версии, но без шаблона. Пример: 5.0

    Функция IsOSEarlierThan возвращает значение TRUE, если текущая операционная система является более ранней, чем Версия_ОС.

Функции, предназначенные для объектов

  • DoesObjectExist

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

    Синтаксис: DoesObjectExist("Тип_объекта","Закодированный_шаблон_расположения")

    Параметр Обязательный Описание

    Тип_объекта

    Да

    Указывает тип объекта. Допустимые значения: File или Registry.

    Закодированный_шаблон_расположения

    Да

    Указание расположений. Можно использовать переменные среды.

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

  • DoesFileVersionMatch

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

    Синтаксис: DoesFileVersionMatch("Закодированное_расположение_файла","Тег_версии","Версия")

    Параметр Обязательный Описание

    Закодированное_расположение_файла

    Да

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

    Тег_версии

    Да

    Проверяемое значение Допустимые теги версий.

    Версия

    Да

    Шаблон строки. Пример: "Microsoft*".

    Пример:

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

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

  • IsFileVersionAbove

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

    Синтаксис: IsFileVersionAbove("Закодированное_расположение_файла","Тег_версии","Версия")

    Параметр Обязательный Описание

    Закодированное_расположение_файла

    Да

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

    Тег_версии

    Да

    Проверяемое значение Допустимые теги версий.

    Версия

    Да

    Значение для сравнения. Шаблоны не поддерживаются.

  • IsFileVersionBelow

    Синтаксис: IsFileVersionBelow("Закодированное_расположение_файла","Тег_версии","Версия")

    Параметр Обязательный Описание

    Закодированное_расположение_файла

    Да

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

    Тег_версии

    Да

    Проверяемое значение Допустимые теги версий.

    Версия

    Да

    Значение для сравнения. Шаблоны не поддерживаются.

  • IsSystemContext

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

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

  • DoesStringContentEqual

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

    Синтаксис: DoesStringContentEqual("Тип_объекта","Закодированное_расположение","Строка")

    Параметр Обязательный Описание

    Тип_объекта

    Да

    Указывает тип объекта. Допустимые значения: File или Registry.

    Закодированный_шаблон_расположения

    Да

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

    Строка

    Да

    Строка, которую необходимо найти.

    Пример:

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

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

    Синтаксис: DoesStringContentContain("Тип_объекта","Закодированное_расположение","Строка_для_поиска")

    Параметр Обязательный Описание

    Тип_объекта

    Да

    Указывает тип объекта. Допустимые значения: File или Registry.

    Закодированный_шаблон_расположения

    Да

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

    Строка_для_поиска

    Да

    Искомая строка в содержимом указанного объекта.

  • IsSameObject

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

    Синтаксис: IsSameObject("Тип_объекта","Закодированное_расположение_1","Закодированное_расположение_2")

    Параметр Обязательный Описание

    Тип_объекта

    Да

    Указывает тип объекта. Допустимые значения: File или Registry.

    Закодированное_расположение_1

    Да

    Указание расположений первого объекта. Можно указывать переменные среды.

    Закодированное_расположение_2

    Да

    Указание расположений второго объекта. Можно указывать переменные среды.

    Пример:

    <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("Тип_объекта_1","Закодированное_расположение_1","Тип_объекта_2","Закодированное_расположение_2")

    Параметр Обязательный Описание

    Тип_объекта_1

    Да

    Указывает тип первого объекта. Допустимые значения: File или Registry.

    Закодированное_расположение_1

    Да

    Указание расположений первого объекта. Можно указывать переменные среды.

    Тип_объекта_2

    Да

    Указывает тип второго объекта. Допустимые значения: File или Registry.

    Закодированное_расположение_2

    Да

    Указание расположений второго объекта. Можно указывать переменные среды.

  • IsSameStringContent

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

    Синтаксис: IsSameStringContent("Тип_объекта_1","Закодированное_расположение_1","Тип_объекта_2","Закодированное_расположение_2")

    Параметр Обязательный Описание

    Тип_объекта_1

    Да

    Указывает тип первого объекта. Допустимые значения: File или Registry.

    Закодированное_расположение_1

    Да

    Указание расположений первого объекта. Можно указывать переменные среды.

    Тип_объекта_2

    Да

    Указывает тип второго объекта. Допустимые значения: File или Registry.

    Закодированное_расположение_2

    Да

    Указание расположений второго объекта. Можно указывать переменные среды.

<conditions>

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

  • Число экземпляров: не ограничено внутри другого элемента <conditions>. Не более 1 экземпляра в элементах <detection>, <rules>, <addObjects> и <objectSet>

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

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

Синтаксис:

<conditions operation="AND|OR">

</conditions>

Параметр Обязательный Описание

operation

Нет (значение по умолчанию: AND)

Задает логическую операцию, которая выполняется над результатами, полученными при оценке дочерних элементов.

Ниже приведен пример из файла MigApp.xml.

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

<content>

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

  • Число экземпляров: не ограничено

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

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

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

Синтаксис:

<content filter="Сценарий">

</content>

Параметр Обязательный Описание

filter

Да

Сценарий с любым числом строковых аргументов, разделенных запятыми и заключенных в скобки. Пример: , MyScripts.AScript ("Arg1","Arg2")

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

Функции <content>

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

  • ExtractSingleFile

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

    Синтаксис: ExtractSingleFile(Разделители,Пути)

    Параметр Обязательный Описание

    Разделители

    Да

    Список допустимых разделителей, которые можно использовать после спецификации файла в реестре. Например, для содержимого "C:\Windows\Notepad.exe,-2" разделителем является запятая. Можно указать значение NULL.

    Пути

    Да

    Список дополнительных путей, разделенных точкой с запятой (;), в которых функция будет искать файл, соответствующий текущему содержимому. Например, в случае содержимого "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 возвращает несколько шаблонов, т. е. по одному для каждого файла, найденного в содержимом указанного параметра реестра. Если в реестре задано мультистроковое значение, то разделитель мультистрокового значения считается разделителем по умолчанию. Следовательно, для мультистрокового значения аргумент <Разделители> должен иметь значение NULL.

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

    Синтаксис: ExtractMultipleFiles(Разделители,Пути)

    Параметр Обязательный Описание

    Разделители

    Да

    Список допустимых разделителей, которые можно использовать после спецификации файла в этом параметре реестра. Например, для содержимого "C:\Windows\Notepad.exe,-2" разделителем является запятая. При обработке мультистроковых значений этот параметр должен иметь значение NULL.

    Пути

    Да

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

  • ExtractDirectory

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

    Синтаксис: ExtractDirectory(Разделители,Число_удаляемых_уровней,Суффикс_шаблона)

    Параметр Обязательный Описание

    Разделители

    Нет

    Список допустимых разделителей, которые можно использовать после спецификации файла в этом параметре реестра. Например, для содержимого "C:\Windows\Notepad.exe,-2" разделителем является запятая. При обработке мультистроковых значений этот параметр должен иметь значение NULL.

    Число_удаляемых_уровней

    Да

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

    Суффикс_шаблона

    Да

    Шаблон, добавляемый в спецификацию каталога. Пример: * [*]

    Пример:

    <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>. Этот элемент возвращает новое содержимое обрабатываемого объекта.

  • Число экземпляров: не ограничено

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

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

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

Синтаксис:

<contentModify script="Сценарий">

</contentModify>

Параметр Обязательный Значение

script

Да

Сценарий с любым числом строковых аргументов, разделенных запятыми и заключенных в скобки. Пример: , MyScripts.AScript ("Arg1","Arg2").

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

Функции <contentModify>

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

  • ConvertToDWORD

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

    Синтаксис: ConvertToDWORD(Значение_при_возникновении_ошибки)

    Параметр Обязательный Описание

    Значение_при_возникновении_ошибки

    Нет

    Значение, которое будет присвоено параметру, если преобразование завершится с ошибкой. Если указано значение NULL, то при сбое преобразования будет записано значение 0.

  • ConvertToString

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

    Синтаксис: ConvertToString(Значение_при_возникновении_ошибки)

    Параметр Обязательный Описание

    Значение_при_возникновении_ошибки

    Нет

    Значение, которое будет присвоено параметру, если преобразование завершится с ошибкой. Если указано значение 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 прибавляет или вычитает Значение из значения перенесенного объекта и затем записывает полученный результат в реестр на конечном компьютере. Например, если перенесенный объект является двойным словом и равен 14, а Значение равно -2, то в реестр на конечном компьютере будет записано значение 12.

    Синтаксис: OffsetValue(Значение)

    Параметр Обязательный Описание

    Описание

    Да

    Строковое представление числового значения. Может быть положительным или отрицательным. Пример: OffsetValue(2)

  • SetValueByTable

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

    Синтаксис: SetValueByTable(Исходная_таблица,Конечная_таблица,Значение_при_возникновении_ошибки)

    Параметр Обязательный Описание

    Исходная_таблица

    Да

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

    Конечная_таблица

    Нет

    Список значений на конечном компьютере, разделенных запятыми.

    Значение_при_возникновении_ошибки

    Нет

    Значение, используемое на конечном компьютере, в следующих случаях: 1) значение на исходном компьютере не соответствует значению параметра Исходная_таблица; 2) не удается найти эквивалентное значение в Конечной_таблице.

    Если параметр <Значение_при_возникновении_ошибки> имеет значение NULL, то на конечном компьютере значение не изменяется.

  • KeepExisting

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

    Синтаксис: KeepExisting("Строка_параметров","Строка_параметров","Строка_параметров",…)

    Параметр Обязательный Описание

    Строка_параметров

    Да

    Строка_параметров может принимать значения Security, TimeFields или FileAttrib:буква. Можно указать все значения параметра Строка_параметров. Нельзя указывать несколько параметров Строка_параметров с одинаковыми значениями. В противном случае будет применен параметр, занимающий крайнее правое положение. Например, если указать ("FileAttrib:H", "FileAttrib:R"), будет сохранен атрибут только для чтения. Чтобы сохранить атрибуты Hidden и Read-only на конечном компьютере, укажите ("FileAttrib:HR").

    • Security. Сохраняет дескриптор безопасности конечного объекта (при наличии).

    • TimeFields. Сохраняет метку времени конечного объекта. Этот параметр предназначен только для файлов.

    • FileAttrib:буква. Сохраняет значение атрибута конечного объекта для указанного набора атрибутов файлов. Этот параметр предназначен только для файлов. Значения вводятся с учетом регистра. Средство миграции пользовательской среды игнорирует недопустимые и повторяющиеся значения, а также значения с пробелом после "FileAttrib:". Можно указать любую комбинацию следующих атрибутов:

      • A = архив

      • C = сжатый

      • E = зашифрованный

      • H = скрытый

      • I = без индексированного содержимого

      • O = автономный

      • R = только для чтения

      • S = системный

      • T = временный

  • MergeMultiSzContent

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

    Синтаксис: MergeMultiSzContent (Инструкция,Строка,Инструкция,Строка,…)

    Параметр Обязательный Описание

    Инструкция

    Да

    Данный параметр может принимать одно из следующих значений:

    • Add. Добавляет соответствующую строку в мультистроковое значение, если она отсутствует.

    • Remove. Удаляет соответствующую строку из мультистрокового значения.

    Строка

    Да

    Строка, которую необходимо добавить или удалить.

  • MergeDelimitedContent

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

    Синтаксис: MergeDelimitedContent(Разделители,Инструкция,Строка…)

    Параметр Обязательный Описание

    Разделители

    Да

    Символ, который используется для разделения содержимого обрабатываемого объекта. Содержимое представляется в виде списка элементов, разделенных Разделителями.

    Например, для разделения строк используется точка ".".

    Инструкция

    Да

    Данный параметр может принимать одно из следующих значений:

    • Add. Добавляет строку в мультистроковое значение, если она отсутствует.

    • Remove. Удаляет строку из мультистрокового значения.

    Строка

    Да

    Строка, которую необходимо добавить или удалить.

<description>

Элемент <description> задает описание компонента. Этот элемент не влияет на перенос.

  • Число экземпляров: 0 или 1

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

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

Синтаксис:

<description>Описание_компонента</description>

Параметр Обязательный Описание

Описание_компонента

Да

Описание компонента.

В следующем примере показано, как элемент <description> задает описание "My custom component".

<description>My custom component<description>

<destinationCleanup>

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

Важно!

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

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

  • Число экземпляров: не ограничено

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

  • Дочерние элементы: <objectSet> Обратите внимание, что на конечном компьютере все дочерние элементы будут удалены.

Синтаксис:

<destinationCleanup filter=Сценарий>

</destinationCleanup>

Параметр Обязательный Описание

filter

Да

Сценарий с любым числом строковых аргументов, разделенных запятыми и заключенных в скобки. Пример: , MyScripts.AScript ("Arg1","Arg2").

Сценарий вызывается для каждого объекта, который перечисляется наборами объектов в правиле <include>. Сценарий фильтра возвращает логическое значение. Если возвращается значение 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>. Возможно, он будет удален в будущих версиях средства миграции пользовательской среды. В этом случае вам придется переписывать сценарии. Вместо этого элемента рекомендуется использовать элемент <detection>.

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

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

  • Число экземпляров: не ограничено

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

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

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

Синтаксис:

<detect name="ИД" context="User|System|UserAndSystem">

</detect>

Параметр Обязательный Описание

name

Да, если элемент <detect> является дочерним по отношению к <namedElements>

Нет, если элемент <detect> является дочерним по отношению к <detects>

Если указан параметр ИД, то дочерние элементы не обрабатываются. Вместо них обрабатываются все элементы <detect> с именем, объявленным в элементе <namedElements>.

context

Нет

(значение по умолчанию: UserAndSystem)

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

Максимальная область действия задается с помощью элемента <component>. Например, если элемент <component> содержит параметр context со значением User, а элемент <rules> содержит параметр context со значением UserAndSystem, то элемент <rules> будет реагировать так, как если бы его параметру context было присвоено значение User. Если элемент <rules> содержит параметр context со значением System, он будет проигнорирован.

  • User. Оценивает переменные в контексте каждого пользователя.

  • System. Оценивает переменные один раз в контексте системы.

  • UserAndSystem. Оценивает переменные в контексте всей операционной системы и каждого пользователя.

Примеры использования см. в разделе <detection>.

<detects>

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

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

Синтаксис:

<detects name="ИД" context="User|System|UserAndSystem">

</detects>

  • Число экземпляров: не ограничено

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

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

Параметр Обязательный Описание

name

Да, если элемент <detects> является дочерним по отношению к <namedElements>

Нет, если элемент <detects> является дочерним по отношению к <role> или <rules>

Если указан параметр ИД, то дочерние элементы <detect> не обрабатываются. Вместо них обрабатываются все элементы <detects> с таким же именем, объявленным в элементе <namedElements>.

context

Нет

(значение по умолчанию: UserAndSystem)

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

Максимальная область действия задается с помощью элемента <component>. Например, если элемент <component> содержит параметр context со значением User, а элемент <rules> содержит параметр context со значением UserAndSystem, то параметр context элемента <rules> будет переопределен значением User. Если элемент <rules> содержит параметр context со значением System, он будет проигнорирован.

  • User. Оценивает переменные в контексте каждого пользователя.

  • System. Оценивает переменные один раз в контексте системы.

  • UserAndSystem. Оценивает переменные в контексте всей операционной системы и каждого пользователя.

Для элементов <detects>, расположенных в <rules>, параметр context игнорируется.

Ниже приведен пример из файла 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>

<detection>

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

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

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

  • Число экземпляров: не ограничено

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

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

Синтаксис:

<detection name="ИД" context="User|System|UserAndSystem">

</detection>

Параметр Обязательный Описание

name

  • Да, если элемент <detection> объявлен в <namedElements>

  • Нет, если элемент объявлен в <role>

Если элемент объявлен, содержимое элемента <detection> игнорируется, а содержимое элемента <detection> с аналогичным именем, объявленным в элементе <namedElements>, обрабатывается.

context

Нет (значение по умолчанию: UserAndSystem)

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

  • User. Оценивает компонент для каждого пользователя.

  • System. Оценивает компонент только один раз для системы.

  • 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>.

  • Число экземпляров: один для каждого элемента

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

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

Синтаксис:

<displayName _locID="ИД">Имя_компонента</displayName>

Параметр Обязательный Описание

locID

Нет

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

Имя_компонента

Да

Имя компонента.

Пример:

<displayName>Command Prompt settings</displayName>

<environment>

Элемент <environment> – это контейнер для элементов <variable>, в которых можно задать переменные для XML-файла. Все переменные среды, заданные таким способом, являются частными. Иными словами, они будут доступны только дочерним компонентам и компоненту, в котором они заданы. Примеры см. в разделе Примеры.

  • Число экземпляров: не ограничено

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

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

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

Синтаксис:

<environment name="ID" context="User|System|UserAndSystem">

</environment>

Параметр Обязательный Описание

name

Да, если элемент <environment> является дочерним по отношению к <namedElements>

Нет, если элемент <environment> является дочерним по отношению к <role> или <component>

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

context

Нет

(значение по умолчанию: UserAndSystem)

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

Максимальная область действия задается с помощью элемента <component>. Например, если элемент <component> содержит параметр context со значением User, а элемент <rules> содержит параметр context со значением UserAndSystem, то параметр context элемента <rules> будет переопределен значением User. Если элемент <rules> содержит параметр context со значением System, он будет проигнорирован.

  • User. Оценивает переменные в контексте каждого пользователя.

  • System. Оценивает переменные один раз в контексте системы.

  • UserAndSystem. Оценивает переменные в контексте всей операционной системы и каждого пользователя.

Пример 1.

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

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

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

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

Можно отфильтровать параметры реестра, содержащие требуемые данные. Следующий пример извлекает первую строку (перед разделителем ",") в параметре реестра Hklm\software\companyname\application\ [путь].

<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.

В этом сценарии вы хотите перенести 5 файлов File1.txt, File2.txt и т. д. из папки %SYSTEMDRIVE%\data\userdata\dir1\dir2\. Для этого вам потребуется использовать в XML-файле правило <include>, как показано ниже.

<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>

Вместо ввода 5 путей к файлам можно создать переменную расположения, как показано ниже.

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

Затем можно указать переменную в правиле <include>.

<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>.

  • Число экземпляров: не ограничено

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

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

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

Синтаксис:

<exclude filter="Сценарий">

</exclude>

Параметр Обязательный Описание

filter

Нет

(значение по умолчанию: No)

Сценарий с любым числом строковых аргументов, разделенных запятыми и заключенных в скобки. Пример: , MyScripts.AScript ("Arg1","Arg2").

Сценарий вызывается для каждого объекта, который перечисляется наборами объектов в правиле <include>. Сценарий фильтра возвращает логическое значение. Если возвращается значение 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>, то все его параметры будут перенесены.

  • Число экземпляров: не ограничено

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

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

Синтаксис:

<excludeAttributes attributes="Security|TimeFields|Security,TimeFields">

</excludeAttributes>

Параметр Обязательный Описание

attributes

Да

Указывает атрибуты, которые необходимо исключить. Можно указать один атрибут или оба (через запятую). Пример: "Security","TimeFields"

  • Security может принимать значения Owner, Group, DACL или SACL.

  • TimeFields может принимать значения CreationTime, LastAccessTime или LastWrittenTime

Пример:

<migration urlid="https://www.microsoft.com/migration/1.0/migxmlext/miguser">
<!-- This component migrates My Video files -->
   <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>

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

  • Число экземпляров: 0 или 1

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

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

Синтаксис:

<extensions>

</extensions>

<extension>

С помощью элемента <extension> можно указать документы с определенным расширением.

  • Число экземпляров: не ограничено

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

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

Синтаксис:

<extension>Расширение_файла</extension>

Параметр Обязательный Описание

Расширение_файла

Да

Расширение файла.

Например, если требуется перенести все файлы с расширением DOC с исходного компьютера, то укажите в элементе <component> следующий код:

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

Альтернативный вариант для элемента <rules>:

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

Дополнительные примеры использования элемента <extension> см. в примерах для элемента <excludeAttributes>.

<externalProcess>

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

  • Число экземпляров: не ограничено

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

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

Синтаксис:

<externalProcess when="pre-scan|scan-success|post-scan|pre-apply|apply-success|post-apply">

</externalProcess>

Параметр Обязательный Описание

when

Да

Указывает момент запуска командной строки. Этот параметр может принимать одно из следующих значений.

  • pre-scan – перед запуском процесса сканирования.

  • scan-success – после успешного завершения процесса сканирования.

  • post-scan – после завершения процесса сканирования независимо от того, был он успешным или нет.

  • pre-apply – перед началом процесса применения.

  • apply-success – после успешного завершения процесса применения.

  • post-apply – после завершения процесса применения независимо от того, был он успешным или нет.

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

<icon>

Это внутренний элемент средства миграции пользовательской среды. Не используйте этот элемент.

<include>

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

  • Число экземпляров: не ограничено

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

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

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

Синтаксис:

<include filter="Сценарий">

</include>

Параметр Обязательный Описание

filter

Нет.

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

Сценарий с любым числом строковых аргументов, разделенных запятыми и заключенных в скобки. Пример: , MyScripts.AScript ("Arg1","Arg2").

Сценарий вызывается для каждого объекта, который перечисляется наборами объектов в правиле <include>. Сценарий фильтра возвращает логическое значение. Если возвращается значение 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>

Функции фильтрации <include> и <exclude>

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

  • AnswerNo

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

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

  • CompareStringContent

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

    Параметр Обязательный Описание

    StringContent

    Да

    Проверяемая строка.

    CompareType

    Да

    Строка. Может принимать следующие значения.

    • Equal (с учетом регистра). Функция возвращает значение TRUE, если строковое представление текущего объекта, обрабатываемого модулем переноса, равно StringContent.

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

  • IgnoreIrrelevantLinks

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

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

    Пример:

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

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

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

    В следующем примере объект HKCU\Control Panel\International [Locale] добавляется в хранилище, но не переносится на конечный компьютер.

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

<includeAttributes>

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

  • Число экземпляров: не ограничено

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

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

Синтаксис:

<includeAttributes attributes="Security|TimeFields|Security,TimeFields">

</includeAttributes>

Параметр Обязательный Описание

attributes

Да

Указывает атрибуты, добавляемые при переносе объекта. Можно указать один атрибут или оба (через запятую). Пример: "Security","TimeFields"

  • Этот параметр может принимать одно из следующих значений.

    • Owner. Владелец объекта (SID).

    • Group. Основная группа объекта (SID).

    • DACL (список управления доступом на уровне пользователей). Список управления доступом, который формируется владельцем объекта и задает права доступа к объекту для конкретных пользователей или групп.

    • SACL (системный список управления доступом). Список управления доступом, который контролирует создание сообщений аудита при попытках доступа к защищаемому объекту. Как правило, задавать системный список управления доступом объекта могут только системные администраторы.

  • Параметр TimeFields может принимать одно из следующих значений.

    • CreationTime. Указывает время создания файла или каталога.

    • LastAccessTime. Указывает время последнего чтения файла, записи в файл или запуска, если файл является исполняемым.

    • LastWrittenTime. Указывает время последней записи в файл, усечения или перезаписи файла.

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

<library>

Это внутренний элемент средства миграции пользовательской среды. Не используйте этот элемент.

<location>

Элемент <location> задает расположение элемента <object>.

  • Число экземпляров: один для каждого элемента <object>

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

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

Синтаксис:

<location type="ИД_типа">ObjectLocation</location>

Параметр Обязательный Значение

type

Да

ИД_типа может принимать значения Registry или File.

ObjectLocation

Да

Расположение объекта.

Ниже приведен пример из файла MigApp.xml.

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

<locationModify>

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

Число экземпляров: не ограничено

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

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

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

Синтаксис:

<locationModify script="Сценарий">

</locationModify>

Параметр Обязательный Описание

script

Да

Сценарий с любым числом строковых аргументов, разделенных запятыми и заключенных в скобки. Пример: , MyScripts.AScript ("Arg1","Arg2").

Сценарий вызывается для каждого объекта, который перечисляется наборами объектов в правиле <include>. Сценарий фильтра возвращает логическое значение. Если возвращается значение 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>, в расположение, указанное с помощью параметра Закодированное_расположение_объекта. Эту функцию можно использовать для перемещения одного файла в другое расположение на конечном компьютере. Если расположение в месте назначения является узлом, то все соответствующие объекты источника будут записаны на узле без вложенных папок. Если расположение в месте назначения является конечным объектом, то модуль перенесет все соответствующие объекты источника в одно расположение. При возникновении конфликтов применяются обычные алгоритмы разрешения конфликтов.

    Синтаксис: ExactMove(Закодированное_расположение_объекта)

    Параметр Обязательный Описание

    Закодированное_расположение_объекта

    Да

    Конечное Указание расположений для всех объектов источника.

    Пример:

    <locationModify script="MigXmlHelper.ExactMove('HKCU\Keyboard Layout\Toggle [HotKey]')">
         <objectSet>
              <pattern type="Registry">HKCU\Keyboard Layout\Toggle []</pattern>
         </objectSet>
    </locationModify>
    
  • Move

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

    Синтаксис: Move(Корневая_папка_назначения)

    Параметр Обязательный Описание

    Корневая_папка_назначения

    Да

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

  • RelativeMove

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

    Синтаксис: RelativeMove(Корневая_папка_источника,Корневая_папка_назначения)

    Параметр Обязательный Описание

    Корневая_папка_источника

    Да

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

    Корневая_папка_назначения

    Да

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

    Пример:

    <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>

Это внутренний элемент средства миграции пользовательской среды. Не используйте этот элемент.

<manufacturer>

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

  • Число экземпляров: 0 или 1

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

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

Синтаксис:

<manufacturer>Имя</manufacturer>

Параметр Обязательный Описание

Имя

Да

Имя изготовителя компонента.

<merge>

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

Пример этого элемента см. в разделе Как действует правило <merge> при наличии конфликтов на конечном компьютере?

  • Число экземпляров: не ограничено

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

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

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

Синтаксис:

<merge script="Сценарий">

</merge>

Параметр Обязательный Описание

script

Да

Сценарий с любым числом строковых аргументов, разделенных запятыми и заключенных в скобки. Пример: , MyScripts.AScript ("Arg1","Arg2").

Сценарий вызывается для каждого объекта, который перечисляется наборами объектов в правиле <include>. Сценарий фильтра возвращает логическое значение. Если возвращается значение 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>

Функции <merge>

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

  • DestinationPriority

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

    Пример:

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

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

    Синтаксис: FindFilePlaceByPattern(Шаблон_файла)

    Параметр Обязательный Описание

    Шаблон_файла

    Да

    • <F> будет заменяться именем исходного файла.

    • <N> будет заменяться счетчиком с приращением до тех пор, пока на конечном компьютере не будут устранены конфликты.

    • <F> будет заменяться расширением исходного файла.

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

  • NewestVersion

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

    Синтаксис: NewestVersion(Тег_версии)

    Параметр Обязательный Описание

    Тег_версии

    Да

    Проверяемое поле версии. В качестве версии может использоваться номер версии файла или номер версии продукта. Файл с максимальным значением Тег_версии определяет, какие конфликты устраняются на основе версии файла. Например, если файл Myfile.txt имеет версию 1 и этот же файл на конечном компьютере имеет версию 2, то будет оставлен файл на конечном компьютере.

  • HigherValue()

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

  • LowerValue()

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

  • SourcePriority

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

    Пример:

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

<migration>

Элемент <migration> является обязательным и единственным корневым элементом XML-файла переноса. Каждый XML-файл должен содержать уникальный urlid переноса. Атрибут urlid каждого файла, указываемого в командной строке, должен быть уникальным. Это связано с тем, что средство миграции пользовательской среды определяет компоненты в файле с помощью urlid. Например, в начале каждого файла необходимо указать имя файла <CustomFileName>: "CustomApp".

  • Число экземпляров: не ограничено

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

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

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

Синтаксис:

<migration urlid="*UrlID/*Name">

</migration>

Параметр Обязательный Описание

urlid

Да

UrlID – это строковый идентификатор, который уникально идентифицирует XML-файл. Этот параметр необходимо указывать без двоеточия, как в спецификации пространств имен XML. Каждый XML-файл переноса должен содержать уникальный urlid. Если два XML-файла переноса имеют одинаковый urlid, XML-файл, указанный в командной строке вторым, не будет обрабатываться. Дополнительные сведения о пространствах имен XML см. в статье Использование пространств имен XML.

Name

Нет

Несмотря на то что этот параметр не является обязательным, рекомендуется указывать имя XML-файла.

Ниже приведен пример из файла MigApp.xml.

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

MigXMLHelper.FileProperties

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

Вспомогательная функция MigXMLHelper.FileProperties (property, operator, valueToCompare)

Property

filesize, dateCreated, dateModified, dateAccessed

Operator

range, neq, lte, lt, eq, gte, gt

valueToCompare

Сравниваемое значение. Пример:

Дата: "2008/05/15-2005/05/17", "2008/05/15"

Размер: числовое значение, оканчивающееся символами B, KB, MB или GB. Примеры: "5GB", "1KB-1MB"

<component context="System"  type="Application">
<displayName>File_size</displayName>
<role role="Data">

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

<namedElements>

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

Синтаксис:

<namedElements>

</namedElements>

  • Число экземпляров: не ограничено

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

  • Дочерние элементы: <environment>, <rules>, <conditions>, <detection>, <detects>, <detect>

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

<object>

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

  • Число экземпляров: не ограничено

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

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

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

Синтаксис:

<object>

</object>

Ниже приведен пример из файла MigApp.xml.

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

<objectSet>

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

  • Число экземпляров: не ограничено

  • Родительские элементы: <variable>, <content>, <include>, <exclude>, <merge>, <contentModify>, <locationModify>, <destinationCleanup>, <includeAttributes>, <excludeAttributes>, <unconditionalExclude>, <detect>

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

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

Синтаксис:

<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>

Это внутренний элемент средства миграции пользовательской среды. Не используйте этот элемент.

<paths>

Это внутренний элемент средства миграции пользовательской среды. Не используйте этот элемент.

<pattern>

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

<pattern type="File">C:\Folder\* [Sample.doc]</pattern>
<script>MigXmlHelper.GenerateDrivePatterns("\Folder\* [Sample.doc]","Fixed"</script>
  • Число экземпляров: не ограничено

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

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

Синтаксис:

<pattern type="ИД_типа">Путь [объект]</pattern>

Параметр Обязательный Описание

type

Да

ИД_типа может иметь значения Registry, File или Ini. Если ИД_типа имеет значение Ini, то между Путь и объект нельзя использовать пробел. Следующий пример является правильным для type="Ini":

<pattern type="Ini">%WinAmp5InstPath%\Winamp.ini|WinAmp[keeponscreen]</pattern>

Путь [объект]

Да

Допустимый шаблон реестра или пути к файлу с пробелом и квадратными скобками [], в которых указан переносимый объект.

  • Чтобы указать Путь, используйте подстановочный знак "звездочка" (*) или переменную среды. В качестве подстановочного знака нельзя применять вопросительный знак. Чтобы указать разделы реестра HKEY_CURRENT_USER и HKEY_LOCAL_MACHINE, можно использовать HKCU и HKLM соответственно.

  • Object может содержать подстановочный знак "звездочка" (*). Однако в качестве подстановочного знака нельзя использовать вопросительный знак. Примеры:

    C:\Folder\ [*] перечисляет все файлы в C:\Путь, но без вложенных папок C:\Folder.

    C:\Folder\* [*] перечисляет все файлы и вложенные папки C:\Folder.

    C:\Folder\ [*.mp3] перечисляет все MP3-файлы в C:\Folder.

    C:\Folder\ [Sample.doc] перечисляет только файл Sample.doc в C:\Folder.

    > [!NOTE] > Если в имени переносимого файла содержится символ квадратной скобки ([ или ]), то непосредственно перед скобкой необходимо добавить надстрочный символ (^). Например, для файла "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>
    
  • Перенос папки EngineeringDrafts и всех вложенных папок с диска C:

    <pattern type="File">C:\EngineeringDrafts\* [*]</pattern>
    
  • Перенос папки EngineeringDrafts без вложенных папок с диска C:

    <pattern type="File"> C:\EngineeringDrafts\ [*]</pattern>
    
  • Перенос файла Sample.doc из папки C:\EngineeringDrafts:

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

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

<processing>

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

  • Число экземпляров: не ограничено

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

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

Синтаксис:

<processing when="pre-scan|scan-success|post-scan|pre-apply|apply-success|post-apply">

</processing>

Параметр Обязательный Описание

when

Да

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

  • pre-scan – перед запуском процесса сканирования.

  • scan-success – после успешного завершения процесса сканирования.

  • post-scan – после завершения процесса сканирования независимо от того, был он успешным или нет.

  • pre-apply – перед началом процесса применения.

  • apply-success – после успешного завершения процесса применения.

  • post-apply – после завершения процесса применения независимо от того, был он успешным или нет.

<plugin>

Это внутренний элемент средства миграции пользовательской среды. Не используйте этот элемент.

<role>

Элемент <role> является обязательным для пользовательского XML-файла. С помощью элемента <role> можно создать конкретный компонент. В этом случае для определения компонента используются параметры, указанные на уровне <component>, и роль.

  • Число экземпляров: каждый элемент <component> может содержать один, два или три дочерних элемента <role>.

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

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

  • Необязательные дочерние элементы: <environment>, <detection>, <component>, <role>, <detects>, <plugin>

Синтаксис:

<role role="Container|Binaries|Settings|Data">

</role>

Параметр Обязательный Описание

role

Да

Задает роль для компонента. Может принимать следующие значения:

  • Container

  • Binaries

  • Settings

  • Data

Варианты действий

  1. Вы можете указать до трех элементов <role> в <component>: элемент роли "Binaries", элемент роли "Settings" и элемент роли "Data". Эти параметры не изменяют поведение переноса, а помогают вам классифицировать переносимые параметры. Можно использовать вложенные элементы <role>, однако все вложенные элементы должны иметь одну и ту же роль.

  2. Также можно указать один элемент "Container" <role> в элементе <component>. В этом случае нельзя указывать дочерние элементы <rules> (только элементы <component>). Все дочерние элементы <component> должны иметь такой же тип, как у родительского элемента <component>. Пример:

<component context="UserAndSystem" type="Application">
  <displayName _locID="migapp.msoffice2003">Microsoft Office 2003</displayName> 
  <environment name="GlobalEnv" /> 
  <role role="Container">
    <detection name="AnyOffice2003Version" /> 
    <detection name="FrontPage2003" /> 
    <!-- 
 Office 2003 Common Settings 
  --> 
    <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>

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

  • Число экземпляров: не ограничено

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

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

  • Необязательные дочерние элементы: <rules>, <exclude>, <unconditionalExclude>,<merge>, <contentModify>, <locationModify>, <destinationCleanup>, <addObjects>, <externalProcess>, <processing>, <includeAttributes>, <excludeAttributes>, <conditions>, <detects>

Синтаксис:

<rules name="ID" context="User|System|UserAndSystem">

</rules>

Параметр Обязательный Описание

name

Да, если элемент <rules> является дочерним по отношению к <namedElements>

Нет, если элемент <rules> является дочерним по отношению к любому другому элементу

Если указан параметр ИД, то дочерние элементы не обрабатываются. Вместо них обрабатываются все элементы <rules> с таким же именем, объявленным в элементе <namedElements>.

context

Нет

(значение по умолчанию: UserAndSystem)

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

Максимальная область действия задается с помощью элемента <component>. Например, если элемент <component> содержит параметр context со значением User, а элемент <rules> содержит параметр context со значением UserAndSystem, то параметр context элемента <rules> будет переопределен значением User. Если элемент <rules> содержит параметр context со значением System, он будет проигнорирован.

  • 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>

<script>

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

Число экземпляров: один для <variable>, неограниченное число для <objectSet> и <processing>

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

Дочерние элементы: отсутствуют

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

  • Общий синтаксис: <script>Сценарий_с_аргументами</script>

  • Если элемент <script> указан в <variable>, то можно использовать функцию Функции <script>.

    Синтаксис: <script>MigXmlHelper.GetStringContent("Тип_объекта","Закодированный_шаблон_расположения", "Содержимое")</script>

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

  • Если элемент <script> указан в <objectSet>, то можно использовать функцию Функции <script>.

    Синтаксис: <script>MigXmlHelper.GenerateUserPatterns("Тип_объекта","Закодированный_шаблон_расположения","Шаблоны_для_текущего_пользователя")</script>

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

  • Если элемент <script> указан в <objectSet>, то можно использовать функцию Функции <script>.

    Синтаксис: <script>MigXmlHelper.GenerateDrivePatterns("Сегмент_шаблона","Тип_диска")</script>

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

  • Если элементы <script> расположены в <processing>, то можно использовать следующие Функции <script>: AskForLogoff, ConvertToShortFileName, KillExplorer, RemoveEmptyDirectories, RestartExplorer, RegisterFonts, StartService, StopService, SyncSCM.

    Синтаксис: <script>MigXmlHelper.Сценарий</script>

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

Параметр Обязательный Описание

Сценарий_с_аргументами

Да

Сценарий с любым числом строковых аргументов, разделенных запятыми и заключенных в скобки. Пример: , MyScripts.AScript ("Arg1","Arg2").

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

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

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

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

  • Если элемент используется в <location>, то возвращаемое значение должно быть допустимым расположением, которое совпадает с атрибутом типа <location>. Например, если <location type="File">, то в качестве дочернего элемента сценария необходимо использовать допустимое расположение файла.

    > [!NOTE] > Если в имени переносимого файла содержится символ квадратной скобки ([ или ]), то непосредственно перед скобкой необходимо добавить надстрочный символ (^). Например, для файла "file].txt" необходимо указать <pattern type="File">c:\documents\mydocs [file^].txt]</pattern> вместо <pattern type="File">c:\documents\mydocs [file].txt]</pattern>. >

Примеры:

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

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

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

Функции <script>

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

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

  • Простые сценарии

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

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

  • GetStringContent

    Для элементов <script> в <variable> можно использовать функцию GetStringContent. Эта функция возвращает строковое представление указанного объекта. В противном случае функция возвращает значение NULL. Для файлов эта функция всегда возвращает значение NULL.

    Синтаксис: GetStringContent("Тип_объекта","Закодированный_шаблон_расположения", "Содержимое")

    Параметр Обязательный Описание

    Тип_объекта

    Да

    Тип объекта. Может принимать значение Registry или Ini (для INI-файлов).

    Закодированный_шаблон_расположения

    Да

    • Если объект имеет тип Registry, то шаблон закодированного расположения должен быть допустимым путем реестра. Например, HKLM\SOFTWARE\MyKey[].

    • Если объект имеет тип Ini, то для шаблона закодированного расположения необходимо использовать следующий формат:

      IniFilePath|SectionName[SettingName]

    Содержимое

    Нет (значение по умолчанию: TRUE)

    Допустимые значения: TRUE или FALSE. Если параметр имеет значение FALSE, то указанное расположение не будет развернуто перед возвратом.

    Пример:

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

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

    Синтаксис: GenerateDrivePatterns("Сегмент_шаблона","Тип_диска")

    Параметр Обязательный Описание

    Сегмент_шаблона

    Да

    Суффикс закодированного шаблона. Суффикс соединяется со спецификацией диска, например "c:\", чтобы создать полный Указание расположений. Пример: "* [*.doc]". Сегмент_шаблона не использует переменную среды.

    Тип_диска

    Да

    Тип диска, для которого необходимо создать шаблоны. Может принимать следующие значения:

    • Fixed

    • CDROM

    • Removable

    • Remote

    Примеры использования этого элемента см. в файле MigUser.xml.

  • GenerateUserPatterns

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

    • "C:\Documents and Settings\A\* [*.doc]"

    • "C:\Documents and Settings\B\* [*.doc]"

    • "C:\Documents and Settings\C\* [*.doc]"

    Синтаксис: GenerateUserPatterns("Тип_объекта","Закодированный_шаблон_расположения","Шаблоны_для_текущего_пользователя")

    Параметр Обязательный Описание

    Тип_объекта

    Да

    Указывает тип объекта. Допустимые значения: File или Registry.

    Закодированный_шаблон_расположения

    Да

    Указание расположений. Можно использовать переменные среды.

    Шаблоны_для_текущего_пользователя

    Да

    Допустимые значения: TRUE или FALSE. Указывает, требуется ли создавать шаблоны для текущего пользователя.

    Пример:

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

    Ниже приведен пример кода для этого сценария. Первый элемент <rules> переносит все DOC-файлы с исходного компьютера, за исключением файлов, расположенных в папке C:\Documents and Settings. Вторые элементы <rules> переносят все DOC-файлы из папки C:\Documents and Settings, кроме файлов, расположенных в профилях других пользователей. Поскольку второй элемент <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

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

Параметр Обязательный Описание

Проверять_папку_Program_Files

Нет (значение по умолчанию: FALSE)

Допустимые значения: TRUE или FALSE. Параметр Проверять_папку_Program_Files указывает, требуется ли средству поиска документов искать зарегистрированные расширения файлов для известных приложений в папке Program Files. Например, если параметр имеет значение TRUE, средство поиска найдет и перенесет все JPG-файлы в папке Photoshop, если расширение JPG зарегистрировано для Photoshop.

Включить_шаблоны

Нет (значение по умолчанию: TRUE)

Допустимые значения: TRUE или FALSE. TRUE создает шаблоны включения и может быть добавлено в элемент <include>. FALSE создает шаблоны исключения и может быть добавлено в элемент <exclude>.

Системный_диск

Нет (значение по умолчанию: 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>

Простые сценарии

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

  • AskForLogoff(). Предлагает пользователю выйти из системы после завершения переноса. Примеры:

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

  • KillExplorer(). Завершает работу 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).**Удаляет все пустые папки, которые соответствуют значению параметра Шаблон_папки на конечном компьютере.

  • RestartExplorer(). Перезапускает Explorer.exe после завершения переноса. Примеры:

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

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

  • SyncSCM(Краткое_имя_службы). Считывает значение типа запуска из раздела реестра (HKLM\System\CurrentControlSet\Services\Краткое_имя_службы [Start]) после того, как оно было изменено модулем переноса, и затем синхронизирует диспетчер служб с новым значением.

<text>

С помощью элемента <text> можно задать значение любой переменной среды, которая расположена в XML-файлах переноса.

  • Число экземпляров: один для каждого элемента <variable>.

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

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

Синтаксис:

<text>Обычный_текст</text>

Параметр Описание

Обычный_текст

Интерпретируется как обычный текст.

Пример:

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

<unconditionalExclude>

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

Чтобы исключить все MP3-файлы с исходного компьютера, используйте этот элемент. Если вы архивируете папку C:\UserData с помощью другого метода, то исключите всю папку из переноса. При использовании этого элемента соблюдайте меры предосторожности. Если приложению потребуется файл, который исключен с помощью элемента <unconditionalExclude>, оно будет работать неправильно на конечном компьютере.

  • Число экземпляров: не ограничено

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

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

Синтаксис:

<unconditionalExclude></unconditionalExclude>

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

<migration urlid="https://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>

<variable>

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

  1. Если элемент <variable> содержит элемент <text>, то значением <variable> будет значение элемента <text>.

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

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

  • Число экземпляров: не ограничено

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

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

Синтаксис:

<variable name="ИД" remap=TRUE|FALSE>

</variable>

Параметр Обязательный Описание

name

Да

ИД – это строковое значение, используемое именем для ссылки на переменную среды. Чтобы предотвратить возникновение конфликтов пространства имен, рекомендуется перед ИД указывать имя компонента. Например, если компонент имеет имя MyComponent и требуется переменная пути установки компонента, то можно указать MyComponent.InstallPath.

remap

Нет (значение по умолчанию: 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> задает версию компонента. Этот элемент не влияет на перенос.

  • Число экземпляров: 0 или 1

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

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

Синтаксис:

<version>Версия_компонента</version>

Параметр Обязательный Описание

ComponentVersion

Да

Версия компонента, которая может содержать шаблоны.

Пример:

<version>4.*</version>

<windowsObjects>

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

Приложение

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

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

    Например, файл 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\*[*].

Внутренние функции средства миграции пользовательской среды

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

  • AntiAlias

  • ConvertScreenSaver

  • ConvertShowIEOnDesktop

  • ConvertToOfficeLangID

  • MigrateActiveDesktop

  • MigrateAppearanceUPM

  • MigrateDisplayCS

  • MigrateDisplaySS

  • MigrateIEAutoSearch

  • MigrateMouseUPM

  • MigrateSoundSysTray

  • MigrateTaskBarSS

  • SetPstPathInMapiStruc

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

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

  • "CompanyName"

  • "FileDescription"

  • "FileVersion"

  • "nternalName"

  • "LegalCopyright"

  • "OriginalFilename"

  • "ProductName"

  • "ProductVersion"

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

  • "FileVersion"

  • "ProductVersion"

См. также

Другие ресурсы

Справочные материалы по XML для средства миграции пользовательской среды