Библиотека элементов XML
Обзор
В этом разделе описаны 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> <includeAttribute> |
<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>. Кроме того, необходимо указать элементы <attribute> и <location> в качестве дочерних для элемента <object>.
Необязательные дочерние элементы:<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>Content</attributes>
Параметр | Обязательный | Значение |
---|---|---|
Content |
Да |
Этот параметр зависит от типа описываемого объекта.
|
Ниже приведен пример из файла 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> будет проигнорирован.
Число экземпляров: ноль или один
Родительские элементы:<object>
Дочерние элементы: нет
Синтаксис:
<bytes string="Yes|No" expand="Yes|No">Content</bytes>
Параметр | Обязательный | Значение |
---|---|---|
string |
Нет (значение по умолчанию: No) |
Указывает, как следует интерпретировать Content: как строку или как набор байтов. |
expand |
Нет (значение по умолчанию: Yes) |
Если параметр expand имеет значение Yes, содержимое элемента <bytes> сначала разворачивается в контексте исходного компьютера, а затем интерпретируется. |
Content |
Да |
Зависит от значения параметра string.
|
Ниже приведен пример из файла 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>CommandLineString</commandLine>
Параметр | Обязательный | Значение |
---|---|---|
CommandLineString |
Да |
Допустимая командная строка. |
<component>
Для пользовательского XML-файла переноса элемент <component> является обязательным. Этот элемент определяет базовые конструкции XML-файла переноса. Например, в файле MigApp.xml компонент Microsoft® Office 2003 содержит другой компонент — Microsoft Office Access® 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 |
Да |
Чтобы сгруппировать параметры и задать тип компонента, используйте следующие значения.
|
context |
Нет (значение по умолчанию: UserAndSystem) |
Определяет область действия этого параметра, то есть указывает, следует ли обрабатывать этот компонент в контексте конкретного пользователя, в контексте всей операционной системы или в обоих контекстах. Максимальная область действия задается с помощью элемента <component>. Например, если элемент <component> содержит параметр context со значением User, а элемент <rules> содержит параметр context со значением UserAndSystem, то параметр context элемента <rules> будет переопределен значением User. Если элемент <rules> содержит параметр context со значением System, то он пропускается.
|
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">ScriptName</condition>
Параметр | Обязательный | Значение |
---|---|---|
negation |
Нет (значение по умолчанию: No) |
Значение Yes инвертирует значение True или False условия. |
ScriptName |
Да |
Сценарий, который задан в этом разделе переноса. |
Пример:
В следующем примере элементы <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("OSType","OSVersion")
Параметр Обязательный Значение OSType
Да
Единственным допустимым значением этого параметра является NT. Обратите внимание, что для правильной работы функций <condition> необходимо задать этот параметр.
OSVersion
Да
Основной номер версии, дополнительный номер версии, номер сборки и номер редакции, разделенные точками. Например,
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("OSType","OSVersion")
Параметр Обязательный Значение OSType
Да
Может быть 9x или NT. Если OSType не совпадает с типом текущей операционной системы, то функция возвращает значение FALSE. Например, если текущая операционная система принадлежит к семейству Windows NT, а параметр OSType имеет значение "9x", то результатом будет FALSE.
OSVersion
Да
Основной номер версии, дополнительный номер версии, номер сборки и номер редакции, разделенные точками. Например,
5.0.2600.Service Pack 1
. Можно указать частичную спецификацию версии, но без шаблона. Например,5.0
.Функция IsOSLaterThan возвращает значение TRUE, если текущая операционная система имеет более позднюю или такую же версию, как OSVersion.
Пример:
<condition negation="Yes">MigXmlHelper.IsOSLaterThan("NT","6.0")</condition>
IsOSEarlierThan
Все проверки выполняются с учетом регистра.
Синтаксис: IsOSEarlierThan("OSType","OSVersion")
Параметр Обязательный Значение OSType
Да
Может быть 9x или NT. Если OSType не совпадает с типом текущей операционной системы, то функция возвращает значение FALSE. Например, если текущая операционная система принадлежит к семейству Windows NT, а параметр OSType имеет значение "9x", то результатом будет FALSE.
OSVersion
Да
Основной номер версии, дополнительный номер версии, номер сборки и номер редакции, разделенные точками. Например,
5.0.2600.Service Pack 1
. Можно указать частичную спецификацию версии, но без шаблона. Например,5.0
.Функция IsOSEarlierThan возвращает значение TRUE, если текущая операционная система имеет более раннюю версию, чем OSVersion.
Функции, предназначенные для объектов
DoesObjectExist
Функция DoesObjectExist возвращает значение TRUE, если существует объект, соответствующий шаблону расположения. В противном случае функция возвращает значение FALSE. Шаблон расположения разворачивается перед перечислением.
Синтаксис: DoesObjectExist("ObjectType","EncodedLocationPattern")
Параметр Обязательный Значение ObjectType
Да
Указывает тип объекта. Допустимые значения: File или Registry.
EncodedLocationPattern
Да
Шаблон расположения. Можно использовать переменные среды.
Пример использования этого элемента см. в файле MigApp.xml.
DoesFileVersionMatch
Шаблон проверяется с учетом регистра.
Синтаксис: DoesFileVersionMatch("EncodedFileLocation","VersionTag","VersionValue")
Параметр Обязательный Значение EncodedFileLocation
Да
Шаблон расположения для проверяемого файла. Можно использовать переменные среды.
VersionTag
Да
Значение тега версии, которое будет проверяться.
VersionValue
Да
Шаблон строки. Пример: "Microsoft*".
Пример:
<condition>MigXmlHelper.DoesFileVersionMatch("%MSNMessengerInstPath%\msnmsgr.exe","ProductVersion","6.*")</condition>
<condition>MigXmlHelper.DoesFileVersionMatch("%MSNMessengerInstPath%\msnmsgr.exe","ProductVersion","7.*")</condition>
IsFileVersionAbove
Функция IsFileVersionAbove возвращает значение TRUE, если версия файла больше чем VersionValue.
Синтаксис: IsFileVersionAbove("EncodedFileLocation","VersionTag","VersionValue")
Параметр Обязательный Значение EncodedFileLocation
Да
Шаблон расположения для проверяемого файла. Можно использовать переменные среды.
VersionTag
Да
Значение тега версии, которое будет проверяться.
VersionValue
Да
Значение для сравнения. Шаблоны не поддерживаются.
IsFileVersionBelow
Синтаксис: IsFileVersionBelow("EncodedFileLocation","VersionTag","VersionValue")
Параметр Обязательный Значение EncodedFileLocation
Да
Шаблон расположения для проверяемого файла. Можно использовать переменные среды.
VersionTag
Да
Значение тега версии, которое будет проверяться.
VersionValue
Да
Значение для сравнения. Шаблоны не поддерживаются.
IsSystemContext
Функция IsSystemContext возвращает значение TRUE, если текущим контекстом является "System". В противном случае функция возвращает значение FALSE.
Синтаксис: IsSystemContext()
DoesStringContentEqual
Функция DoesStringContentEqual возвращает значение TRUE, если строковое представление указанного объекта совпадает с
StringContent
.Синтаксис: DoesStringContentEqual("ObjectType","EncodedLocation","StringContent")
Параметр Обязательный Значение ObjectType
Да
Указывает тип объекта. Допустимые значения: File или Registry.
EncodedLocationPattern
Да
Закодированное расположение для изучаемого объекта. Можно указывать переменные среды.
Строка
Да
Строка, которую необходимо найти.
Пример:
<condition negation="Yes">MigXmlHelper.DoesStringContentEqual("File","%USERNAME%","")</condition>
DoesStringContentContain
Функция DoesStringContentContain возвращает значение TRUE, если есть хотя бы одно вхождение StrToFind в строковом представлении объекта.
Синтаксис: DoesStringContentContain("ObjectType","EncodedLocation","StrToFind")
Параметр Обязательный Значение ObjectType
Да
Указывает тип объекта. Допустимые значения: File или Registry.
EncodedLocationPattern
Да
Закодированное расположение для изучаемого объекта. Можно указывать переменные среды.
StrToFind
Да
Искомая строка в содержимом указанного объекта.
IsSameObject
Функция IsSameObject возвращает значение TRUE, если указанные закодированные расположения разрешаются в один и тот же физический объект. В противном случае функция возвращает значение FALSE.
Синтаксис: IsSameObject("ObjectType","EncodedLocation1","EncodedLocation2")
Параметр Обязательный Значение ObjectType
Да
Указывает тип объекта. Допустимые значения: File или Registry.
EncodedLocation1
Да
Закодированное расположение первого объекта. Можно указывать переменные среды.
EncodedLocation2
Да
Закодированное расположение второго объекта. Можно указывать переменные среды.
Пример:
<objectSet> <condition negation="Yes">MigXmlHelper.IsSameObject("File","%CSIDL_FAVORITES%","%CSIDL_COMMON_FAVORITES%")</condition> <pattern type="File">%CSIDL_FAVORITES%\* [*]</pattern> </objectSet>
IsSameContent
Функция IsSameContent возвращает значение TRUE, если указанные объекты имеют одинаковое содержимое. В противном случае функция возвращает значение FALSE. Содержимое сравнивается по байтам.
Синтаксис: IsSameContent("ObjectType1","EncodedLocation1","ObjectType2","EncodedLocation2")
Параметр Обязательный Значение ObjectType1
Да
Указывает тип первого объекта. Допустимые значения: File или Registry.
EncodedLocation1
Да
Закодированное расположение первого объекта. Можно указывать переменные среды.
ObjectType2
Да
Указывает тип второго объекта. Допустимые значения: File или Registry.
EncodedLocation2
Да
Закодированное расположение второго объекта. Можно указывать переменные среды.
IsSameStringContent
Функция IsSameStringContent возвращает значение TRUE, если указанные объекты имеют одинаковое содержимое. В противном случае функция возвращает значение FALSE. Содержимое интерпретируется как строка.
Синтаксис: IsSameStringContent("ObjectType1","EncodedLocation1","ObjectType2","EncodedLocation2")
Параметр Обязательный Значение ObjectType1
Да
Указывает тип первого объекта. Допустимые значения: File или Registry.
EncodedLocation1
Да
Закодированное расположение первого объекта. Можно указывать переменные среды.
ObjectType2
Да
Указывает тип второго объекта. Допустимые значения: File или Registry.
EncodedLocation2
Да
Закодированное расположение второго объекта. Можно указывать переменные среды.
<conditions>
Элемент <conditions> возвращает логическое значение, которое используется для задания условий оценки родительского элемента. Средство миграции пользовательской среды оценивает дочерние элементы и затем объединяет их результаты с помощью операторов AND или OR согласно параметру operation.
Число экземпляров: в другом элементе <conditions> — неограниченное. Одно вхождение в <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="ScriptInvocation">
</content>
Параметр | Обязательный | Значение |
---|---|---|
filter |
Да |
Сценарий с любым числом строковых аргументов, разделенных запятыми и заключенных в скобки. Например, Сценарий вызывается для каждого объекта, перечисляемого наборами объектов в правиле <include>. Сценарий фильтра возвращает логическое значение. Если возвращается значение TRUE, объект будет перенесен. Если возвращается значение FALSE, объект не будет перенесен. |
Функции <content>
Следующие функции создают шаблоны вне содержимого объекта. Эти функции вызываются для каждого объекта, перечисляемого родительским элементом <ObjectSet>.
ExtractSingleFile
Если в реестре задано мультистроковое значение, обрабатывается только первый сегмент. Возвращаемый шаблон — это закодированное расположение файла, который должен существовать в системе. Если в значении реестра указана правильная спецификация, но файл не существует, функция возвращает значение NULL.
Синтаксис: ExtractSingleFile(Separators,PathHints)
Параметр Обязательный Значение Separators
Да
Список допустимых разделителей, которые можно использовать после спецификации файла в этом значении реестра. Например, для содержимого "C:\Windows\Notepad.exe,-2" разделителем является запятая. Можно указать значение NULL.
PathHints
Да
Список дополнительных путей, разделенных точкой с запятой (;), в которых функция будет искать файл, соответствующий текущему содержимому. Например, в случае содержимого "Notepad.exe" и переменной среды %Path% функция найдет файл Notepad.exe в папке %windir% и вернет значение "c:\Windows [Notepad.exe]". Можно указать значение NULL.
Пример:
<content filter="MigXmlHelper.ExtractSingleFile(',','%system%')">
и
<content filter="MigXmlHelper.ExtractSingleFile(NULL,'%CSIDL_COMMON_FONTS%')">
ExtractMultipleFiles
Функция ExtractMultipleFiles возвращает несколько шаблонов, то есть по одному для каждого файла, найденного в содержимом указанного значения реестра. Если в реестре задано мультистроковое значение, разделитель мультистрокового значения считается разделителем по умолчанию. Следовательно, для мультистрокового значения аргумент <Разделители> должен иметь значение NULL.
Возвращаемые шаблоны — это закодированные расположения файлов, которые должны существовать на исходном компьютере. Если в значении реестра указана правильная спецификация, но файл не существует, он не будет включен в конечный список.
Синтаксис: ExtractMultipleFiles(Separators,PathHints)
Параметр Обязательный Значение Separators
Да
Список допустимых разделителей, которые можно использовать после спецификации файла в этом значении реестра. Например, для содержимого "C:\Windows\Notepad.exe,-2" разделителем является запятая. При обработке мультистроковых значений реестра этот параметр должен иметь значение NULL.
PathHints
Да
Список дополнительных путей, разделенных точкой с запятой (;), в которых функция будет искать файл, соответствующий текущему содержимому. Например, в случае содержимого "Notepad.exe" и переменной среды %Path% функция найдет файл Notepad.exe в папке %windir% и вернет значение "c:\Windows [Notepad.exe]". Можно указать значение NULL.
ExtractDirectory
Функция ExtractDirectory возвращает шаблон, т. е. закодированное расположение папки, которая должна существовать на исходном компьютере. Если в значении реестра указана правильная спецификация, но папка не существует, функция возвращает значение NULL. Если обрабатывается мультистроковое значение реестра, обрабатывается только первый сегмент.
Синтаксис: ExtractDirectory(Separators,LevelsToTrim,PatternSuffix)
Параметр Обязательный Значение Separators
Нет
Список допустимых разделителей, которые можно использовать после спецификации файла в этом значении реестра. Например, для содержимого "C:\Windows\Notepad.exe,-2" разделителем является запятая. При обработке мультистроковых значений реестра этот параметр должен иметь значение NULL.
LevelsToTrim
Да
Число уровней, которые необходимо удалить, начиная с конца спецификации папки. Используйте этот параметр, чтобы извлечь корневой каталог, если значение реестра указывает на содержимое внутри корневого каталога, который находится в известном расположении.
PatternSuffix
Да
Шаблон, добавляемый в спецификацию каталога. Например,
* [*]
.Пример:
<objectSet> <content filter='MigXmlHelper.ExtractDirectory (NULL, "1")'> <objectSet> <pattern type="Registry">%HklmWowSoftware%\Classes\Software\RealNetworks\Preferences\DT_Common []</pattern> </objectSet> </content> </objectSet>
<contentModify>
Элемент <contentModify> изменяет содержимое объекта перед записью на конечном компьютере. Для одного элемента <contentModify> можно указать несколько элементов <objectSet>. Этот элемент возвращает новое содержимое обрабатываемого объекта.
Число экземпляров: неограниченное
Родительские элементы:<rules>
Обязательные дочерние элементы:<objectSet>
Вспомогательные функции. С этим элементом можно использовать следующие функции <contentModify>: ConvertToDWORD, ConvertToString, ConvertToBinary, KeepExisting, OffsetValue, SetValueByTable, MergeMultiSzContent и MergeDelimitedContent.
Синтаксис:
<contentModify script="ScriptInvocation">
</contentModify>
Параметр | Обязательный | Значение |
---|---|---|
script |
Да |
Сценарий с любым числом строковых аргументов, разделенных запятыми и заключенных в скобки. Например, Сценарий вызывается для каждого объекта, перечисляемого наборами объектов в правиле <include>. Сценарий фильтра возвращает логическое значение. Если возвращается значение TRUE, объект будет перенесен. Если возвращается значение FALSE, объект не будет перенесен. |
Функции <contentModify>
Следующие функции изменяют содержимое объектов при переносе. Эти функции вызываются для каждого объекта, перечисляемого родительским элементом <ObjectSet>.
ConvertToDWORD
Функция ConvertToDWORD преобразует содержимое значений реестра, перечисляемых родительским элементом <ObjectSet>, в двойное слово. Например, функция ConvertToDWORD преобразует строку "1" в двойное слово 0x00000001. Если преобразование завершается с ошибкой, то используется значение, заданное с помощью параметра <Значение_при_возникновении_ошибки>.
Синтаксис: ConvertToDWORD(DefaultValueOnError)
Параметр Обязательный Значение DefaultValueOnError
Нет
Значение, которое будет присвоено параметру, если преобразование завершится с ошибкой. Если указано значение NULL, то при сбое преобразования будет записано значение 0.
ConvertToString
Функция ConvertToString преобразует содержимое значений реестра, которые соответствуют родительскому элементу <ObjectSet>, в строку. Например, двойное слово 0x00000001 будет преобразовано в строку "1". Если преобразование завершается с ошибкой, то используется значение, заданное с помощью параметра <Значение_при_возникновении_ошибки>.
Синтаксис: ConvertToString(DefaultValueOnError)
Параметр Обязательный Значение DefaultValueOnError
Нет
Значение, которое будет присвоено параметру, если преобразование завершится с ошибкой. Если указано значение NULL, то при сбое преобразования будет записано значение 0.
Пример:
<contentModify script="MigXmlHelper.ConvertToString('1')"> <objectSet> <pattern type="Registry">HKCU\Control Panel\Desktop [ScreenSaveUsePassword]</pattern> </objectSet> </contentModify>
ConvertToBinary
Функция ConvertToBinary преобразует содержимое значений реестра, которые соответствуют родительскому элементу <ObjectSet>, в двоичное значение.
Синтаксис: ConvertToBinary ()
OffsetValue
Функция OffsetValue прибавляет или вычитает Value из значения переносимого объекта и затем записывает полученный результат обратно в реестр на конечном компьютере. Например, если переносимый объект имеет тип DWORD со значением 14, а значение Value равно "-2", то в значение реестра на конечном компьютере будет записано 12.
Синтаксис: OffsetValue(Value)
Параметр Обязательный Значение Value
Да
Строковое представление числового значения. Может быть положительным или отрицательным. Например,
OffsetValue(2)
.SetValueByTable
Функция SetValueByTable сравнивает значения с исходного компьютера со значениями в исходной таблице. Если значение присутствует, то применяется эквивалентное значение из конечной таблицы. Если значения нет либо в конечной таблице нет эквивалентного значения, будет применено DefaultValueOnError.
Синтаксис: SetValueByTable(SourceTable,DestinationTable,DefaultValueOnError)
Параметр Обязательный Значение SourceTable
Да
Список значений, разделенных запятыми, которые допустимы для значений реестра исходного компьютера.
DestinationTable
Нет
Список значений на конечном компьютере, разделенных запятыми.
DefaultValueOnError
Нет
Значение, которое будет применяться к конечному компьютеру, если либо 1) значение на исходном компьютере не соответствует SourceTable, либо 2) DestinationTable не имеет эквивалентного значения.
Если параметр <Значение_при_возникновении_ошибки> имеет значение NULL, то на конечном компьютере значение не изменяется.
KeepExisting
Функция KeepExisting используется при возникновении конфликтов на конечном компьютере. Эта функция сохраняет (не перезаписывает) указанные атрибуты объекта, который находится на конечном компьютере.
Синтаксис: KeepExisting("OptionString","OptionString","OptionString",...)
Параметр Обязательный Значение OptionString
Да
OptionString может быть Security, TimeFields или FileAttrib:Letter. Можно указать по одному типу OptionStrings. Не указывайте несколько OptionStrings с одинаковыми значениями. В противном случае будет применен параметр, занимающий крайнее правое положение. Например, не указывайте ("FileAttrib:H", "FileAttrib:R"), поскольку учитываться будет только атрибут Read-only (только чтение). Вместо этого задайте ("FileAttrib:HR"), и на конечном компьютере будут оставлены оба атрибута: Hidden и Read-only.
Security. Сохраняет дескриптор безопасности конечного объекта (если таковой есть).
TimeFields. Сохраняет метки времени конечного объекта. Этот параметр предназначен только для файлов.
FileAttrib:Letter. Сохраняет значение атрибута конечного объекта (ON или OFF) для указанного набора атрибутов файлов. Этот параметр предназначен только для файлов. Значения вводятся с учетом регистра, но с USMT игнорирует недопустимые и повторяющиеся значения, а также значения с пробелом после "FileAttrib:". Можно указать любую комбинацию следующих атрибутов:
A = архив
C = со сжатием
E = зашифровано
H = скрытый
I = без индексированного содержимого
O = вне сети
R = только чтение
S = системный
T = временный
MergeMultiSzContent
Функция MergeMultiSzContent объединяет мультистроковое содержимое значений реестра, перечисляемых родительским элементом <ObjectSet>, с содержимым эквивалентных значений реестра, которые уже присутствуют на конечном компьютере.
Instruction
иString
или удаляют содержимое из мультистрокового значения, или добавляют в него. Повторяющиеся элементы удаляются.Синтаксис: MergeMultiSzContent(Instruction,String,Instruction,String,...)
Параметр Обязательный Значение Instruction
Да
Данный параметр может принимать одно из следующих значений:
Add. Добавляет соответствующую строку в мультистроковое значение, если она отсутствует.
Remove. Удаляет соответствующую строку из мультистрокового значения.
String
Да
Строка, которую необходимо добавить или удалить.
MergeDelimitedContent
Функция MergeDelimitedContent объединяет содержимое значений реестра, перечисляемых родительским элементом <ObjectSet>, с содержимым эквивалентных значений реестра, которые уже присутствуют на конечном компьютере. Значения представлены в виде списка элементов, разделенных символом, который задан с помощью параметра <Разделители>. Повторяющиеся элементы удаляются.
Синтаксис: MergeDelimitedContent(Delimiters,Instruction,String,...)
Параметр Обязательный Значение Delimiters
Да
Один символ, который используется для разделения содержимого обрабатываемого объекта. Содержимое представляется в виде списка элементов, разделенных Delimiters.
Например, для разделения строк используется точка ".".
Instruction
Да
Данный параметр может принимать одно из следующих значений:
Add. Добавляет строку String в мультистроковое значение, если она отсутствует.
Remove. Удаляет String из мультистрокового значения.
String
Да
Строка, которую необходимо добавить или удалить.
<description>
Элемент <description> задает описание компонента. Этот элемент не влияет на перенос.
Число экземпляров: ноль или один
Родительские элементы:<component>
Дочерние элементы: нет
Синтаксис:
<description>ComponentDescription</description>
Параметр | Обязательный | Значение |
---|---|---|
ComponentDescription |
Да |
Описание компонента. |
В следующем примере показано, как элемент <description> задает описание "My custom component".
<description>My custom component<description>
<destinationCleanup>
Элемент <destinationCleanup> удаляет объекты (например, файлы и разделы реестра) на конечном компьютере перед применением объектов с исходного компьютера. Этот элемент оценивается только в том случае, если на конечном компьютере запущена программа LoadState. Следовательно, программа ScanState игнорирует этот элемент.
Важно
При использовании этого элемента соблюдайте меры предосторожности, поскольку он удаляет объекты с конечного компьютера.
Для одного элемента <destinationCleanup> можно указать несколько элементов <objectSet>. Обычно этот элемент используется в случае, если на исходном компьютере отсутствует раздел реестра и необходимо убедиться, что компонент перенесен. В этом случае можно удалить все разделы реестра компонента перед переносом разделов реестра с исходного компьютера. Это позволяет гарантировать, что если на исходном компьютере раздел реестра отсутствует, то его не будет и на конечном компьютере.
Число экземпляров: неограниченное
Родительские элементы:<rules>
Дочерние элементы:<objectSet> (обратите внимание, что на конечном компьютере все дочерние элементы будут удалены).
Синтаксис:
<destinationCleanup filter=ScriptInvocation>
</destinationCleanup>
Параметр | Обязательный | Значение |
---|---|---|
filter |
Да |
Сценарий с любым числом строковых аргументов, разделенных запятыми и заключенных в скобки. Например, Сценарий вызывается для каждого объекта, перечисляемого наборами объектов в правиле <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="ID" context="User|System|UserAndSystem">
</detect>
Параметр | Обязательный | Значение |
---|---|---|
name |
Да, если элемент <detect> является дочерним по отношению к <namedElements> Нет, если элемент <detect> является дочерним по отношению к <detects> |
Если указан параметр ID, то дочерние элементы обрабатываться не будут. Вместо них обрабатываются все элементы <detect> с именем, объявленным в элементе <namedElements>. |
context |
Нет (значение по умолчанию: UserAndSystem) |
Определяет область действия этого параметра, то есть указывает, следует ли обрабатывать этот компонент в контексте конкретного пользователя, в контексте всей операционной системы или в обоих контекстах. Максимальная область действия задается с помощью элемента <component>. Например, если элемент <component> содержит параметр context со значением User, а элемент <rules> содержит параметр context со значением UserAndSystem, то элемент <rules> будет реагировать так, как если бы его параметру context было присвоено значение User. Если элемент <rules> содержит параметр context со значением System, он будет проигнорирован.
|
Смотрите примеры для <detection>.
<detects>
Мы не рекомендуем использовать элемент <detects>. Возможно, этот элемент будет удален в будущих версиях средства миграции пользовательской среды, и вам потребуется переписывать сценарии. Вместо этого рекомендуется использовать элемент <detection>, если в качестве родительского элемента выступает <role> или <namedElements>, и мы советуем применять элемент <conditions>, если родительским элементом является <rules>. Элемент <detection> позволяет более четко описывать сложные логические выражения.
Элемент <detects> — это контейнер для одного или нескольких элементов <detect>. Элемент <detects> возвращает значение TRUE, если все его дочерние элементы <detect> возвращают значение TRUE. Если хотя бы один дочерний элемент <detect> возвращает значение FALSE, родительский элемент <detects> возвращает значение FALSE. Если вы не хотите использовать элементы <detects> в <component>, то создайте элемент <detects> в элементе <namedElements> и используйте ссылку на него. Если раздел элемента <detects> отсутствует, то средство миграции пользовательской среды предполагает, что компонент присутствует. Результаты оценки каждого элемента <detects> объединяются с помощью оператора OR, чтобы создать правило, используемое для обнаружения родительского элемента.
Синтаксис:
<detects name="ID" context="User|System|UserAndSystem">
</detects>
Число экземпляров: неограниченное
Родительские элементы:<role>, <rules>, <namedElements>
Обязательные дочерние элементы: <detect>
Параметр | Обязательный | Значение |
---|---|---|
name |
Да, если элемент <detects> является дочерним по отношению к <namedElements> Нет, если элемент <detects> является дочерним по отношению к <role> или <rules> |
Если указан параметр ID, дочерние элементы <detect> обрабатываться не будет. Вместо них обрабатываются все элементы <detects> с именем, объявленным в элементе <namedElements>. |
context |
Нет (значение по умолчанию: UserAndSystem) |
Определяет область действия этого параметра, то есть указывает, следует ли обрабатывать этот компонент в контексте конкретного пользователя, в контексте всей операционной системы или в обоих контекстах. Максимальная область действия задается с помощью элемента <component>. Например, если элемент <component> содержит параметр context со значением User, а элемент <rules> содержит параметр context со значением UserAndSystem, то параметр context элемента <rules> будет переопределен значением User. Если элемент <rules> содержит параметр context со значением System, он будет проигнорирован.
Для элементов <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="ID" context="User|System|UserAndSystem">
</detection>
Параметр | Обязательный | Значение |
---|---|---|
name |
|
Если элемент объявлен, содержимое элемента <detection> игнорируется, а содержимое элемента <detection> с аналогичным именем, объявленным в элементе <namedElements>, обрабатывается. |
context |
Нет (значение по умолчанию: 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="ID">ComponentName</displayName>
Параметр | Обязательный | Значение |
---|---|---|
locID |
Нет |
Этот параметр предназначен для внутреннего использования средством миграции пользовательской среды. Не используйте этот параметр. |
ComponentName |
Да |
Имя компонента. |
Пример:
<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> и если объявлен параметр ID, средство миграции пользовательской среды игнорирует содержимое элемента <environment> и обрабатывает содержимое элемента <environment> с тем же именем, объявленным в элементе <namedElements>. |
context |
Нет (значение по умолчанию: UserAndSystem) |
Определяет область действия этого параметра, то есть указывает, следует ли обрабатывать этот компонент в контексте конкретного пользователя, в контексте всей операционной системы или в обоих контекстах. Максимальная область действия задается с помощью элемента <component>. Например, если элемент <component> содержит параметр context со значением User, а элемент <rules> содержит параметр context со значением UserAndSystem, то параметр context элемента <rules> будет переопределен значением User. Если элемент <rules> содержит параметр context со значением System, он будет проигнорирован.
|
Пример 1.
В этом сценарии вы хотите создавать расположение объектов во время выполнения в зависимости от конфигурации конечного компьютера. Например, это может потребоваться в случае, если приложение записывает данные в папку установки, а пользователи могут устанавливать приложение на любом диске компьютера. Если приложение записывает значение реестра hklm\software\companyname\install [путь] и затем записывает в него расположение установки, единственный способ правильного переноса данных заключается в определении переменной среды. Пример:
<environment>
<variable name="INSTALLPATH">
<script>MigXmlHelper.GetStringContent("Registry","\software\companyname\install [path]")</script>
</variable>
</environment>
Затем используйте правило включения, как показано ниже. Можно использовать любую из функций <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>
Вспомогательные функции. С этим элементом можно использовать следующие функции фильтрации <exclude>: CompareStringContent, IgnoreIrrelevantLinks, AnswerNo, NeverRestore и SameRegContent.
Синтаксис:
<exclude filter="ScriptInvocation">
</exclude>
Параметр | Обязательный | Значение |
---|---|---|
filter |
Нет (значение по умолчанию: No) |
Сценарий с любым числом строковых аргументов, разделенных запятыми и заключенных в скобки. Например, Сценарий вызывается для каждого объекта, перечисляемого наборами объектов в правиле <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 |
Да |
Указывает атрибуты, которые необходимо исключить. Можно указать один атрибут или оба (разделенные кавычками), например
|
Пример:
<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>.
Число экземпляров: ноль или один
Родительские элементы:<component>
Обязательные дочерние элементы:<extension>
Синтаксис:
<extensions>
</extensions>
<extension>
С помощью элемента <extension> можно указать документы с определенным расширением.
Число экземпляров: неограниченное
Родительские элементы:<extensions>
Дочерние элементы: нет
Синтаксис:
<extension>FilenameExtension</extension>
Параметр | Обязательный | Значение |
---|---|---|
FilenameExtension |
Да |
Расширение файла. |
Например, если требуется перенести все файлы с расширением 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 |
Да |
Указывает момент запуска командной строки. Этот параметр может принимать одно из следующих значений.
|
Пример использования элемента <externalProcess> см. в примере для <excludeAttributes>.
<icon>
Это внутренний элемент средства миграции пользовательской среды. Не используйте этот элемент.
<include>
Элемент <include> используется для указания переносимых объектов, если отсутствует более строгое правило <exclude>. Чтобы указать более конкретные элементы, можно использовать сценарий. Для одного элемента <include> можно указать несколько элементов <objectSet>.
Число экземпляров: неограниченное
Родительские элементы:<rules>
Обязательный дочерний элемент:<objectSet>
Вспомогательные функции. С этим элементом можно использовать следующие функции фильтрации <include>: CompareStringContent, IgnoreIrrelevantLinks, AnswerNo и NeverRestore.
Синтаксис:
<include filter="ScriptInvocation">
</include>
Параметр | Обязательный | Значение |
---|---|---|
filter |
Нет. Если этот параметр не указан, то обрабатываются все шаблоны, расположенные в дочернем элементе <ObjectSet>. |
Сценарий с любым числом строковых аргументов, разделенных запятыми и заключенных в скобки. Например, Сценарий вызывается для каждого объекта, который перечисляется наборами объектов в правиле <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 |
Да |
Указывает атрибуты, добавляемые при переносе объекта. Можно указать один атрибут или оба (разделенные кавычками), например
|
Пример использования элемента <includeAttributes> см. в примере для <excludeAttributes>.
<library>
Это внутренний элемент средства миграции пользовательской среды. Не используйте этот элемент.
<location>
Элемент <location> задает расположение элемента <object>.
Число экземпляров: по одному на каждый <object>
Родительские элементы:<object>
Дочерние элементы:<script>
Синтаксис:
<location type="typeID">ObjectLocation</location>
Параметр | Обязательный | Значение |
---|---|---|
type |
Да |
typeID может иметь значение 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="ScriptInvocation">
</locationModify>
Параметр | Обязательный | Значение |
---|---|---|
script |
Да |
Сценарий с любым числом строковых аргументов, разделенных запятыми и заключенных в скобки. Например, Сценарий вызывается для каждого объекта, перечисляемого наборами объектов в правиле <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>, в заданный ObjectEncodedLocation. Эту функцию можно использовать для перемещения одного файла в другое расположение на конечном компьютере. Если расположение в месте назначения является узлом, то все соответствующие объекты источника будут записаны на узле без вложенных папок. Если расположение в месте назначения является конечным объектом, то модуль перенесет все соответствующие объекты источника в одно расположение. При возникновении конфликтов применяются обычные алгоритмы разрешения конфликтов.
Синтаксис: ExactMove(ObjectEncodedLocation)
Параметр Обязательный Значение ObjectEncodedLocation
Да
Конечное расположение для всех исходных объектов.
Пример:
<locationModify script="MigXmlHelper.ExactMove('HKCU\Keyboard Layout\Toggle [HotKey]')"> <objectSet> <pattern type="Registry">HKCU\Keyboard Layout\Toggle []</pattern> </objectSet> </locationModify>
Move
Функция Move перемещает объекты в другое расположение на конечном компьютере. Кроме того, эта функция создает вложенные папки, если длина имени исходного объекта превышает максимальную длину CSIDL.
Синтаксис: Move(DestinationRoot)
Параметр Обязательный Значение DestinationRoot
Да
Расположение для перемещения исходных объектов. При необходимости эта функция создает вложенные папки, если длина имени исходного объекта превышает максимальную длину CSIDL.
RelativeMove
Функция RelativeMove используется для сбора и переноса данных. Обратите внимание, что в корневых папках источника и назначения можно использовать переменные среды, но они могут по-разному определяться на исходном и конечном компьютерах.
Синтаксис: RelativeMove(SourceRoot,DestinationRoot)
Параметр Обязательный Значение SourceRoot
Да
Расположение, из которого необходимо переместить объекты. Все исходные объекты, перечисленные родительским элементом <ObjectSet>, которые не находятся в этом расположении, не будут перемещены.
DestinationRoot
Да
Расположение, в которое необходимо переместить исходные объекты на конечном компьютере. При необходимости эта функция создает все вложенные папки, расположенные выше SourceRoot.
Пример:
<include> <objectSet> <pattern type="File">%CSIDL_COMMON_FAVORITES%\* [*]</pattern> <objectSet> </include> <locationModify script="MigXmlHelper.RelativeMove('%CSIDL_COMMON_FAVORITES%','%CSIDL_COMMON_FAVORITES%')"> <objectSet> <pattern type="File">%CSIDL_COMMON_FAVORITES%\* [*]</pattern> </objectSet> </locationModify>
<_locDefinition>
Это внутренний элемент средства миграции пользовательской среды. Не используйте этот элемент.
<manufacturer>
Элемент <manufacturer> задает изготовителя компонента. Этот элемент не влияет на перенос.
Число экземпляров: ноль или один
Родительские элементы:<component>
Дочерние элементы: нет
Синтаксис:
<manufacturer>Name</manufacturer>
Параметр | Обязательный | Значение |
---|---|---|
Name |
Да |
Имя изготовителя компонента. |
<merge>
Элемент <merge> указывает, что произойдет при обнаружении конфликта. Конфликт возникает в случае, если переносимый объект уже присутствует на конечном компьютере. Если этот элемент не указан, то по умолчанию значения реестра исходного компьютера перезаписывают значения конечного компьютера. Поведение по умолчанию для файлов — переименование исходного файла в формате "исходное_имя_файла(1).исходное_расширение". Этот элемент служит только для указания действия, выполняемого при обнаружении конфликта. Этот элемент не содержит объекты. Следовательно, для переносимых объектов вы должны указать правила <include> с элементом <merge>. Если конфликт обнаружен при обработке объекта, средство миграции пользовательской среды выбирает наиболее строгое правило <merge> и применяет его, чтобы устранить конфликт. Например, если имеется правило <merge> C:\* [*] для <sourcePriority> и правило <merge> C:\subfolder\* [*] для <destinationPriority>, то средство миграции пользовательской среды будет использовать правило <destinationPriority>, поскольку оно является более строгим.
Пример этого элемента см. в разделе Конфликты и приоритет.
Число экземпляров: неограниченное
Родительские элементы:<rules>
Обязательный дочерний элемент:<objectSet>
Вспомогательные функции. С этим элементом можно использовать следующие функции <merge>: SourcePriority, DestinationPriority, FindFilePlaceByPattern, LeafPattern, NewestVersion, HigherValue() и LowerValue().
Синтаксис:
<merge script="ScriptInvocation">
</merge>
Параметр | Обязательный | Значение |
---|---|---|
script |
Да |
Сценарий с любым числом строковых аргументов, разделенных запятыми и заключенных в скобки. Например, Сценарий вызывается для каждого объекта, который перечисляется наборами объектов в правиле <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(FilePattern)
Параметр Обязательный Значение FilePattern
Да
<F> будет заменен на исходное имя файла.
<N> будет заменено на увеличивающееся значение счетчика, пока нет конфликта с объектами на конечном компьютере.
<E> будет заменено на расширение исходного файла.
Например,
<F> (<N>).<E>
изменит исходный файл "MyDocument.doc" на "MyDocument (1).doc" на конечном компьютере.NewestVersion
Функция NewestVersion устраняет конфликты на конечном компьютере с учетом версии файла.
Синтаксис: NewestVersion(VersionTag)
Параметр Обязательный Значение VersionTag
Да
Проверяемое поле версии. Это может быть "FileVersion" или "ProductVersion". Файл с наибольшей версией VersionTag определяет, какие конфликты будут разрешаться на основе версии файла. Например, если файл 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. |
Имя |
Нет |
Несмотря на то что этот параметр не является обязательным, рекомендуется указывать имя 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>
Дочерние элементы: отсутствуют, но Path [object] должен быть допустимым.
Синтаксис:
<pattern type="typeID">Path [object]</pattern>
Параметр | Обязательный | Значение |
---|---|---|
type |
Да |
typeID может иметь значение Registry, File или Ini. Если typeId имеет значение Ini, то нельзя использовать пробел между Path и object. Следующий пример является правильным для type="Ini": <pattern type="Ini">%WinAmp5InstPath%\Winamp.ini|WinAmp[keeponscreen]</pattern> |
Path [object] |
Да |
Допустимый шаблон реестра или пути к файлу с пробелом и квадратными скобками [], в которых указан переносимый объект.
|
Пример:
Перенос одного раздела реестра:
<pattern type="Registry">HKLM\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Cache [Persistent]</pattern>
Перенос папки EngineeringDrafts и всех вложенных папок с диска C:
<pattern type="File">C:\EngineeringDrafts\* [*]</pattern>
Перенос папки EngineeringDrafts без вложенных папок с диска C:
Перенос файла 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 |
Да |
Указывает момент запуска сценария. Этот параметр может принимать одно из следующих значений.
|
<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 |
Да |
Задает роль для компонента. Может принимать следующие значения:
Варианты действий
|
Ниже приведен пример из файла 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> является дочерним по отношению к любому другому элементу |
Если указан параметр ID, то дочерние элементы обрабатываться не будут. Вместо них обрабатываются все элементы <rules> с таким же именем, объявленным в элементе <namedElements>. |
context |
Нет (значение по умолчанию: UserAndSystem) |
Определяет область действия этого параметра, то есть указывает, следует ли обрабатывать этот компонент в контексте конкретного пользователя, в контексте всей операционной системы или в обоих контекстах. Максимальная область действия задается с помощью элемента <component>. Например, если элемент <component> содержит параметр context со значением User, а элемент <rules> содержит параметр context со значением UserAndSystem, то параметр context элемента <rules> будет переопределен значением User. Если элемент <rules> содержит параметр context со значением System, он будет проигнорирован.
|
Ниже приведен пример из файла 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>, неограниченное число для <processing> и <objectSet>
Родительские элементы:<objectSet>, <variable>, <processing>
Дочерние элементы: нет
Синтаксис и вспомогательные функции:
Общий синтаксис: <script>ScriptWithArguments</script>
Вы можете использовать GetStringContent, если элемент <script> размещен в <variable>.
Синтаксис: <script>MigXmlHelper.GetStringContent("ObjectType","EncodedLocationPattern","ExpandContent")</script>
Пример:
<script>MigXMLHelper.GetStringContent("Registry","HKLM\Software\MyApp\Installer [EXEPATH]")</script>
Вы можете использовать GenerateUserPatterns, если элемент <script> размещен в <objectSet>.
Синтаксис: <script>MigXmlHelper.GenerateUserPatterns("ObjectType","EncodedLocationPattern","ProcessCurrentUser")</script>
Пример:
<script>MigXmlHelper.GenerateUserPatterns ("File","%USERPROFILE%\* [*.doc]", "FALSE")</script>
Вы можете использовать GenerateDrivePatterns, если элемент <script> размещен в <objectSet>.
Синтаксис: <script>MigXmlHelper.GenerateDrivePatterns("PatternSegment","DriveType")</script>
Пример:
<script>MigXmlHelper.GenerateDrivePatterns("* [sample.doc]", "Fixed")</script>
Вы можете применять простые исполняемые сценарии с элементами <script> внутри элементов <processing>: AskForLogoff, ConvertToShortFileName, KillExplorer, RemoveEmptyDirectories, RestartExplorer, RegisterFonts, StartService, StopService, SyncSCM.
Синтаксис: <script>MigXmlHelper.ExecutingScript</script>
Пример:
<script>MigXmlHelper.KillExplorer()</script>
Параметр | Обязательный | Значение |
---|---|---|
ScriptWithArguments |
Да |
Сценарий с любым числом строковых аргументов, разделенных запятыми и заключенных в скобки. Например, Сценарий вызывается для каждого объекта, который перечисляется наборами объектов в правиле <include>. Сценарий фильтра возвращает логическое значение. Если возвращается значение TRUE, объект будет перенесен. Если возвращается значение FALSE, объект не будет перенесен. Возвращаемое значение, требуемое <script>, зависит от родительского элемента.
|
Примеры:
Чтобы перенести файл Sample.doc с любого диска исходного компьютера, используйте <script>, как показано ниже. Если на исходном компьютере существует несколько файлов с одинаковым именем, то все они будут перенесены.
<script>MigXmlHelper.GenerateDrivePatterns("* [sample.doc]", "Fixed")</script>
Дополнительные примеры использования этого элемента см. в разделах Исключение файлов и параметров, Перенаправление файлов и параметров и Примеры пользовательских XML-файлов.
Функции <script>
В элементе <script> можно использовать следующие функции.
Функции создания строк и шаблонов
Простые сценарии
Функции создания строк и шаблонов
Эти функции возвращают строку или шаблон.
GetStringContent
Для элементов <script> в <variable> можно использовать функцию GetStringContent. Эта функция возвращает строковое представление указанного объекта. В противном случае функция возвращает значение NULL. Для файлов эта функция всегда возвращает значение NULL.
Синтаксис: GetStringContent("ObjectType","EncodedLocationPattern","ExpandContent")
Параметр Обязательный Значение ObjectType
Да
Тип объекта. Может принимать значение Registry или Ini (для INI-файлов).
EncodedLocationPattern
Да
Если объект имеет тип Registry, то шаблон закодированного расположения должен быть допустимым путем реестра. Например, HKLM\SOFTWARE\MyKey[].
Если объект имеет тип Ini, то для шаблона закодированного расположения необходимо использовать следующий формат:
IniFilePath|SectionName[SettingName]
ExpandContent
Нет (значение по умолчанию: TRUE)
Допустимые значения: TRUE или FALSE. Если параметр имеет значение FALSE, то указанное расположение не будет развернуто перед возвратом.
Пример:
<variable name="MSNMessengerInstPath"> <script>MigXmlHelper.GetStringContent("Registry","%HklmWowSoftware%\Microsoft\MSNMessenger [InstallationDirectory]")</script> </variable>
GenerateDrivePatterns
Функция GenerateDrivePatterns просматривает все доступные диски и выбирает диск, который соответствует запрашиваемому типу диска. Далее функция объединяет выбранные диски с последней частью PatternSegment, чтобы сформировать полностью закодированный шаблон файла. Например, если PatternSegment задан как
Path [file.txt]
, а DriveType имеет значениеFixed
, то функция формирует шаблонC:\Path [file.txt]
и другие шаблоны, если есть и другие жесткие диски, кроме C:. В этой функции нельзя использовать переменные среды. Функцию GenerateDrivePatterns можно использовать с элементами <script> внутри <objectSet> внутри <include> или <exclude>.Синтаксис: GenerateDrivePatterns("PatternSegment","DriveType")
Параметр Обязательный Значение PatternSegment
Да
Суффикс закодированного шаблона. Он будет объединен со спецификацией диска, например "c:\", для формирования полного закодированного шаблона файла. Пример: "* [*.doc]". PatternSegment не может быть переменной среды.
DriveType
Да
Тип диска, для которого необходимо создать шаблоны. Может принимать следующие значения:
Fixed
CDROM
Removable
Remote
Примеры использования этого элемента см. в файле MigUser.xml.
GenerateUserPatterns
Функция просматривает всех переносимых пользователей и исключает тех из них, у которых <ProcessCurrentUser> имеет значение 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("ObjectType","EncodedLocationPattern","ProcessCurrentUser")
Параметр Обязательный Значение ObjectType
Да
Указывает тип объекта. Допустимые значения: File или Registry.
EncodedLocationPattern
Да
Шаблон расположения. Можно использовать переменные среды.
ProcessCurrentUser
Да
Допустимые значения: 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.
Параметр | Обязательный | Значение |
---|---|---|
ScanProgramFiles |
Нет (значение по умолчанию: FALSE) |
Допустимые значения: TRUE или FALSE. Параметр ScanProgramFiles определяет, будет ли выполняться сканирование каталога Program Files для сбора зарегистрированных расширений имен файлов для известных приложений. Например, если параметр имеет значение TRUE, средство поиска найдет и перенесет все JPG-файлы в папке Photoshop, если расширение JPG зарегистрировано для Photoshop. |
IncludePatterns |
Нет (значение по умолчанию: TRUE) |
Допустимые значения: TRUE или FALSE. TRUE создает шаблоны включения и может быть добавлено в элемент <include>. FALSE создает шаблоны исключения и может быть добавлено в элемент <exclude>. |
SystemDrive |
Нет (значение по умолчанию: FALSE) |
Допустимые значения: TRUE или FALSE. Если указано значение TRUE, то шаблоны будут созданы только для системного диска. |
<!-- This component migrates data in user context -->
<component type="Documents" context="User">
<displayName>MigDocUser</displayName>
<role role="Data">
<rules>
<include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
<objectSet>
<script>MigXmlHelper.GenerateDocPatterns ("false")</script>
</objectSet>
</include>
<exclude>
<objectSet>
<script>MigXmlHelper.GenerateDocPatterns ("false", "false", "false")</script>
</objectSet>
</exclude>
</rules>
</role>
</component>
Простые сценарии
Следующие сценарии не возвращают значения. Для элементов <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). Удаляет все пустые каталоги, которые соответствуют значению параметра 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(ServiceShortName). Считывает значение типа Start из раздела реестра (HKLM\System\CurrentControlSet\Services\ServiceShortName [Start]) после того, как оно было изменено модулем переноса, и затем синхронизирует диспетчер служб (SCM) с новым значением.
<text>
С помощью элемента <text> можно задать значение любой переменной среды, которая расположена в XML-файлах переноса.
Число экземпляров: один для каждого элемента <variable>.
Родительские элементы:<variable>
Дочерние элементы: нет.
Синтаксис:
<text>NormalText</text>
Параметр | Значение |
---|---|
NormalText |
Интерпретируется как обычный текст. |
Пример:
<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> назначает текстовое значение переменной среды. Этот элемент имеет три параметра.
Если элемент <variable> содержит элемент <text>, то значением <variable> будет значение элемента <text>.
Если элемент <variable> содержит элемент <script> и сценарий возвращает ненулевую строку, то значение элемента <variable> будет результатом вызова сценария.
Если элемент <variable> содержит элемент <objectSet> и при обработке элемента <objectSet> возвращается хотя бы один шаблон объекта, то значением элемента <variable> будет значение первого объекта, отвечающего шаблону результирующего объекта.
Число экземпляров: неограниченное
Родительские элементы:<environment>
Обязательные дочерние элементы: <text>, <script> или <objectSet>
Синтаксис:
<variable name="ID" remap=TRUE|FALSE>
</variable>
Параметр | Обязательный | Значение |
---|---|---|
name |
Да |
ID — это имя в виде строкового значения, используемое для ссылки на переменную среды. Рекомендуется, чтобы ID начинался с имени компонента во избежание конфликтов с пространством имен. Например, если компонент имеет имя MyComponent и требуется переменная пути установки компонента, то можно указать |
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> задает версию компонента. Этот элемент не влияет на перенос.
Число экземпляров: ноль или один
Родительские элементы:<component>
Дочерние элементы: нет
Синтаксис:
<version>ComponentVersion</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 для средства миграции пользовательской среды