XML 요소 라이브러리
개요
이 항목에서는 USMT(사용자 상태 마이그레이션 도구)에 사용할 마이그레이션 .xml 파일을 작성하는 데 활용할 수 있는 XML 요소와 도우미 함수에 대해 설명합니다. 사용자가 XML의 기본 사항을 알고 있다고 가정합니다. .
이 항목의 내용
XML 요소와 도우미 함수 외에도 이 항목에서는 인코딩된 위치 및 위치 패턴, 내부 USMT에만 사용되는 함수, 도우미 함수에 사용할 수 있는 버전 태그 등을 지정하는 방법에 대해 설명합니다.
요소 및 도우미 함수
부록
위치 지정
내부 USMT 함수
올바른 버전 태그
요소 및 도우미 함수
다음 표에서는 USMT에 사용할 수 있는 XML 요소 및 도우미 함수에 대해 설명합니다.
요소 A-K | 요소 L-Z | 도우미 함수 |
---|---|---|
<addObjects> <attributes> <bytes> <commandLine> <component> <condition> <conditions> <content> <contentModify> <description> <destinationCleanup> <detect> <detects> <detection> <displayName> <environment> <exclude> <excludeAttributes> <extensions> <extension> <externalProcess> <icon> <include> <includeAttributes> |
<library> <location> <locationModify> <_locDefinition> <manufacturer> <merge> <migration> <namedElements> <object> <objectSet> <path> <paths> <pattern> <processing> <plugin> <role> <rules> <script> <text> <unconditionalExclude> <variable> <version> <windowsObjects> |
<condition> 함수 <content> 함수 <contentModify> 함수 <include> 및 <exclude> 필터 함수 <locationModify> 함수 <merge> 함수 <script> 함수 내부 USMT 함수 |
<addObjects>
<addObjects> 요소는 원본 컴퓨터에 하나 이상 개체의 존재를 에뮬레이트합니다. 자식 <object> 요소는 에뮬레이트된 개체의 세부 정보를 제공합니다. 콘텐츠가 <script> 요소인 경우 호출 결과는 개체 배열이 됩니다.
발생 횟수: 제한 없음
부모 요소: <rules>
필수 자식 요소: <object> 이 <object> 요소의 자식 요소로 <location> 및 <attributes>도 지정해야 합니다.
선택적 자식 요소: <conditions>, <condition>, <script>
구문:
<addObjects>
</addObjects>
다음은 MigApp.xml 파일에서 가져온 예입니다.
<addObjects>
<object>
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\12.0\Common\Migration\Office [UpgradeVersion]</location>
<attributes>DWORD</attributes>
<bytes>0B000000</bytes>
</object>
<object>
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\12.0\Common\Migration\Office [Lang]</location>
<attributes>DWORD</attributes>
<bytes>00000000</bytes>
</object>
</addObjects>
<attributes>
<attributes> 요소는 레지스트리 키 또는 파일의 특성을 정의합니다.
발생 횟수: 각 <object>에 대해 한 번 발생
부모 요소: <object>
자식 요소: 없음
구문:
<attributes>Content</attributes>
설정 | 필수 여부 | Value |
---|---|---|
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>
<location>이 레지스트리 키 또는 디렉터리에 해당하는 경우 <bytes>가 무시되기 때문에 <bytes> 요소는 파일에만 지정해야 합니다.
발생 횟수: 0 또는 1회
부모 요소: <object>
자식 요소: 없음
구문:
<bytes string="Yes|No" expand="Yes|No">Content</bytes>
설정 | 필수 여부 | Value |
---|---|---|
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>
ScanState 및 LoadState 도구를 실행하기 전이나 후에 서비스 또는 응용 프로그램을 시작하거나 중지하려는 경우 <commandLine> 요소를 사용할 수 있습니다.
발생 횟수: 제한 없음
부모 요소: <externalProcess>
자식 요소: 없음
구문:
<commandLine>CommandLineString</commandLine>
설정 | 필수 여부 | Value |
---|---|---|
CommandLineString |
필수 |
올바른 명령줄입니다. |
<component>
<component> 요소는 사용자 지정 .xml 파일에 필요합니다. 이 요소는 마이그레이션 .xml 파일의 가장 기본적인 구문을 정의합니다. 예를 들어 MigApp.xml 파일에서 "Microsoft(R) Office 2003"은 다른 구성 요소 "Microsoft Office Access(R) 2003"이 포함된 구성 요소입니다. 자식 요소를 사용하여 구성 요소를 정의할 수 있습니다.
한 구성 요소가 다른 구성 요소 안에 중첩될 수 있습니다. 즉, <component> 요소는 다음 두 가지 경우 <component> 요소 내 <role> 요소의 자식일 수 있습니다. 1) 부모 <component> 요소가 컨테이너인 경우 또는 2) 자식 <component> 요소가 부모 <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>
설정 | 필수 여부 | Value |
---|---|---|
type |
필수 |
다음을 사용하여 설정을 그룹화하고 구성 요소 유형을 정의할 수 있습니다.
|
context |
필수 아님 기본값 = UserAndSystem |
이 매개 변수의 범위, 즉 특정 사용자 컨텍스트, 전체 운영 체제 또는 둘 다에서 이 구성 요소를 처리할지를 정의합니다. 가능한 최대 범위는 <component> 요소에 의해 설정됩니다. 예를 들어 <component> 요소에 User 컨텍스트가 있고 <rules> 요소에 UserAndSystem 컨텍스트가 있는 경우 <rules> 요소는 User 컨텍스트가 있는 것처럼 동작합니다. <rules> 요소에 System 컨텍스트가 있는 경우에는 <rules> 요소가 없는 것처럼 동작합니다.
|
defaultSupported |
필수 아님 (기본값 = TRUE) |
TRUE, FALSE, YES 또는 NO 중 하나일 수 있습니다. 이 매개 변수가 FALSE(또는 NO)이면 대상 컴퓨터에 동등한 구성 요소가 없는 경우 구성 요소가 마이그레이션되지 않습니다. type="System"이고 defaultSupported="FALSE"이면 LoadState 명령줄에 지정된 것과 동등한 구성 요소가 .xml 파일에 없는 경우 설정이 마이그레이션되지 않습니다. 예를 들어 기본 MigSys.xml 파일에는 type="System"이고 defaultSupported="FALSE"인 구성 요소가 들어 있습니다. ScanState 명령줄에 이 파일을 지정하는 경우 LoadState 명령줄에도 이 파일을 지정해야 설정이 마이그레이션됩니다. 이는 LoadState 도구에서 동등한 구성 요소를 검색해야 하기 때문입니다. 즉, 구성 요소에서 .xml 파일의 마이그레이션 urlid와 표시 이름이 같아야 합니다. 그렇지 않으면 저장소에서 해당 설정이 마이그레이션되지 않습니다. 이 설정은 원본 컴퓨터에서 Windows XP를 실행 중이며, 두 대상 컴퓨터에 동일한 저장소를 사용할 수 있기 때문에 Windows Vista 및 Windows XP 둘 다로 마이그레이션하는 경우에 유용합니다. |
hidden |
|
이 매개 변수는 내부 USMT에만 사용됩니다. |
예를 보려면 기본 마이그레이션 .xml 파일을 참조하세요.
<condition>
<detect>, <objectSet> 및 <addObjects> 요소 아래의 <condition> 요소는 지원되지만 사용하지 않는 것이 좋습니다. 이 요소는 이후 USMT 버전에서 사용이 중단되어 스크립트를 다시 작성해야 할 수도 있습니다. <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>
설정 | 필수 여부 | Value |
---|---|---|
negation |
필수 아님 기본값 = No |
"Yes"를 지정하면 조건의 True/False 값이 반대가 됩니다. |
ScriptName |
필수 |
이 마이그레이션 섹션 내에서 정의된 스크립트입니다. |
예를 들면 다음과 같습니다.
아래 코드 예제에서 <condition> 요소 A와 B는 별개의 <conditions> 섹션에 있기 때문에 AND 연산자로 결합됩니다. 예를 들면 다음과 같습니다.
<detection>
<conditions>
<condition>A</condition>
</conditions>
<conditions operation="AND">
<condition>B</condition>
</conditions>
</detection>
그러나 아래 코드 예제에서는 <condition> 요소 A와 B가 동일한 <conditions> 섹션에 있기 때문에 OR 연산자로 결합됩니다.
<detection>
<conditions>
<condition>A</condition>
<condition>B</condition>
</conditions>
</detection>
<condition> 함수
<condition> 함수는 부울 값을 반환합니다. <addObjects> 조건에 다음 요소를 사용할 수 있습니다.
운영 체제 버전 함수
개체 콘텐츠 함수
운영 체제 버전 함수
DoesOSMatch
일치 시 대/소문자를 구분하지 않습니다.
구문: DoesOSMatch("OSType","OSVersion")
설정 필수 여부 Value OSType
필수
이 설정에 유효한 값은 NT뿐입니다. 그러나 <condition> 함수가 제대로 작동하려면 이 설정을 지정해야 합니다.
OSVersion
필수
마침표로 구분된 주 버전, 부 버전, 빌드 번호 및 수정된 서비스 디스켓 버전입니다. 예를 들면
5.0.2600.Service Pack 1
입니다. 패턴을 사용하여 버전을 부분적으로 지정할 수도 있습니다. 예를 들면5.0.*
입니다.예를 들면 다음과 같습니다.
<condition>MigXmlHelper.DoesOSMatch("NT","*")</condition>
IsNative64Bit
IsNative64Bit 함수는 마이그레이션 프로세스가 기본 64비트 프로세스(즉, WOW(Windows on Windows) 없이 64비트 시스템에서 실행되는 프로세스)로 실행되는 경우 TRUE를 반환합니다. 그렇지 않으면 FALSE가 반환됩니다.
IsOSLaterThan
비교 시 대/소문자를 구분하지 않습니다.
구문: IsOSLaterThan("OSType","OSVersion")
설정 필수 여부 Value OSType
필수
9x 또는 NT일 수 있습니다. OSType이 현재 운영 체제의 유형과 일치하지 않으면 FALSE가 반환됩니다. 예를 들어 현재 운영 체제가 Windows NT 기반이고 OSType이 "9x"이면 결과는 FALSE가 됩니다.
OSVersion
필수
마침표로 구분된 주 버전, 부 버전, 빌드 번호 및 수정된 서비스 디스켓 버전입니다. 예를 들면
5.0.2600.Service Pack 1
입니다. 버전을 부분적으로 지정할 수도 있지만 패턴은 허용되지 않습니다. 예를 들면5.0
입니다.IsOSLaterThan 함수는 현재 운영 체제가 OSVersion과 같거나 이후 버전인 경우 TRUE를 반환합니다.
예를 들면 다음과 같습니다.
<condition negation="Yes">MigXmlHelper.IsOSLaterThan("NT","6.0")</condition>
IsOSEarlierThan
비교 시 대/소문자를 구분하지 않습니다.
구문: IsOSEarlierThan("OSType","OSVersion")
설정 필수 여부 Value OSType
필수
9x 또는 NT일 수 있습니다. OSType이 현재 운영 체제의 유형과 일치하지 않으면 FALSE가 반환됩니다. 예를 들어 현재 운영 체제가 Windows NT 기반이고 OSType이 "9x"이면 결과는 FALSE가 됩니다.
OSVersion
필수
마침표로 구분된 주 버전, 부 버전, 빌드 번호 및 수정된 서비스 디스켓 버전입니다. 예를 들면
5.0.2600.Service Pack 1
입니다. 버전을 부분적으로 지정할 수도 있지만 패턴은 허용되지 않습니다. 예를 들면5.0
입니다.IsOSEarlierThan 함수는 현재 운영 체제가 OSVersion보다 이전 버전인 경우 TRUE를 반환합니다.
개체 콘텐츠 함수
DoesObjectExist
DoesObjectExist 함수는 위치 패턴과 일치하는 개체가 하나라도 있는 경우 TRUE를 반환합니다. 그렇지 않으면 FALSE가 반환됩니다. 위치 패턴은 열거 전에 확장됩니다.
구문: DoesObjectExist("ObjectType","EncodedLocationPattern")
설정 필수 여부 Value ObjectType
필수
개체 유형을 정의합니다. File 또는 Registry일 수 있습니다.
EncodedLocationPattern
필수
위치 지정입니다. 환경 변수를 사용할 수 있습니다.
이 요소의 예를 보려면 MigApp.xml 파일을 참조하세요.
DoesFileVersionMatch
패턴 검사 시 대/소문자를 구분하지 않습니다.
구문: DoesFileVersionMatch("EncodedFileLocation","VersionTag","VersionValue")
설정 필수 여부 Value EncodedFileLocation
필수
검사할 파일의 위치 지정입니다. 환경 변수를 사용할 수 있습니다.
VersionTag
필수
검사할 올바른 버전 태그 값입니다.
VersionValue
필수
문자열 패턴입니다(예: "Microsoft*").
예를 들면 다음과 같습니다.
<condition>MigXmlHelper.DoesFileVersionMatch("%MSNMessengerInstPath%\msnmsgr.exe","ProductVersion","6.*")</condition>
<condition>MigXmlHelper.DoesFileVersionMatch("%MSNMessengerInstPath%\msnmsgr.exe","ProductVersion","7.*")</condition>
IsFileVersionAbove
IsFileVersionAbove 함수는 파일 버전이 VersionValue보다 상위 버전인 경우 TRUE를 반환합니다.
구문: IsFileVersionAbove("EncodedFileLocation","VersionTag","VersionValue")
설정 필수 여부 Value EncodedFileLocation
필수
검사할 파일의 위치 지정입니다. 환경 변수를 사용할 수 있습니다.
VersionTag
필수
검사할 올바른 버전 태그 값입니다.
VersionValue
필수
비교할 대상 값입니다. 패턴은 지정할 수 없습니다.
IsFileVersionBelow
구문: IsFileVersionBelow("EncodedFileLocation","VersionTag","VersionValue")
설정 필수 여부 Value EncodedFileLocation
필수
검사할 파일의 위치 지정입니다. 환경 변수를 사용할 수 있습니다.
VersionTag
필수
검사할 올바른 버전 태그 값입니다.
VersionValue
필수
비교할 대상 값입니다. 패턴은 지정할 수 없습니다.
IsSystemContext
IsSystemContext 함수는 현재 컨텍스트가 "System"인 경우 TRUE를 반환합니다. 그렇지 않으면 FALSE가 반환됩니다.
구문: IsSystemContext()
DoesStringContentEqual
DoesStringContentEqual 함수는 지정된 개체의 문자열 표현이
StringContent
와 같은 경우 TRUE를 반환합니다.구문: DoesStringContentEqual("ObjectType","EncodedLocation","StringContent")
설정 필수 여부 Value ObjectType
필수
개체 유형을 정의합니다. File 또는 Registry일 수 있습니다.
EncodedLocationPattern
필수
검사할 개체의 위치 지정입니다. 환경 변수를 지정할 수 있습니다.
StringContent
필수
검사 시 기준으로 사용할 문자열입니다.
예를 들면 다음과 같습니다.
<condition negation="Yes">MigXmlHelper.DoesStringContentEqual("File","%USERNAME%","")</condition>
DoesStringContentContain
DoesStringContentContain 함수는 개체의 문자열 표현에 StrToFind가 하나 이상 있는 경우 TRUE를 반환합니다.
구문: DoesStringContentContain("ObjectType","EncodedLocation","StrToFind")
설정 필수 여부 Value ObjectType
필수
개체 유형을 정의합니다. File 또는 Registry일 수 있습니다.
EncodedLocationPattern
필수
검사할 개체의 위치 지정입니다. 환경 변수를 지정할 수 있습니다.
StrToFind
필수
지정된 개체 컨텍스트 내에서 검색할 문자열입니다.
IsSameObject
IsSameObject 함수는 지정된 인코딩된 위치가 동일한 물리적 개체로 확인되는 경우 TRUE를 반환합니다. 그렇지 않으면 FALSE가 반환됩니다.
구문: IsSameObject("ObjectType","EncodedLocation1","EncodedLocation2")
설정 필수 여부 Value 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")
설정 필수 여부 Value ObjectType1
필수
첫 번째 개체의 유형을 정의합니다. File 또는 Registry일 수 있습니다.
EncodedLocation1
필수
첫 번째 개체의 위치 지정입니다. 환경 변수를 지정할 수 있습니다.
ObjectType2
필수
두 번째 개체의 유형을 정의합니다. File 또는 Registry일 수 있습니다.
EncodedLocation2
필수
두 번째 개체의 위치 지정입니다. 환경 변수를 지정할 수 있습니다.
IsSameStringContent
IsSameStringContent 함수는 지정된 개체에 동일한 콘텐츠가 있는 경우 TRUE를 반환합니다. 그렇지 않으면 FALSE가 반환됩니다. 콘텐츠는 문자열로 해석됩니다.
구문: IsSameStringContent("ObjectType1","EncodedLocation1","ObjectType2","EncodedLocation2")
설정 필수 여부 Value ObjectType1
필수
첫 번째 개체의 유형을 정의합니다. File 또는 Registry일 수 있습니다.
EncodedLocation1
필수
첫 번째 개체의 위치 지정입니다. 환경 변수를 지정할 수 있습니다.
ObjectType2
필수
두 번째 개체의 유형을 정의합니다. File 또는 Registry일 수 있습니다.
EncodedLocation2
필수
두 번째 개체의 위치 지정입니다. 환경 변수를 지정할 수 있습니다.
<conditions>
<conditions> 요소는 부모 요소를 평가할 조건을 지정하는 데 사용되는 부울 결과를 반환합니다. USMT에서는 자식 요소를 평가한 다음 operation 매개 변수에 따라 그 결과를 AND 또는 OR 연산자로 결합합니다.
발생 횟수: 다른 <conditions> 요소 안에서는 제한 없음. <detection>, <rules>, <addObjects>, and <objectSet>에서는 한 번으로 제한됨
부모 요소: <conditions>, <detection>, <environment>, <rules>, <addObjects> 및 <objectSet>
자식 요소: <conditions>, <condition>
구문:
<conditions operation="AND|OR">
</conditions>
설정 | 필수 여부 | Value |
---|---|---|
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> 요소를 사용하여 개체 패턴 목록을 지정할 수 있습니다. <content> 요소 내의 각 <objectSet>가 평가됩니다. 각 결과 개체 패턴 목록에 대해 목록과 일치하는 개체가 열거되고 해당 콘텐츠가 filter 매개 변수로 필터링됩니다. 결과 문자열 배열이 <content> 요소의 출력이 됩니다. filter 스크립트는 위치 배열을 반환합니다. 부모 <objectSet> 요소에 자식 <content> 요소가 여러 개 포함될 수 있습니다.
발생 횟수: 제한 없음
부모 요소: <objectSet>
자식 요소: <objectSet>
도우미 함수: 이 요소에는 다음과 같은 <content> 함수를 사용할 수 있습니다. ExtractSingleFile, ExtractMultipleFiles 및 ExtractDirectory
구문:
<content filter="ScriptInvocation">
</content>
설정 | 필수 여부 | Value |
---|---|---|
filter |
필수 |
뒤에 임의 개수의 문자열 인수가 쉼표로 구분되어 괄호 안에 있는 스크립트입니다. 예를 들면 이 스크립트는 <include> 규칙의 개체 집합에서 열거하는 각 개체에 대해 호출됩니다. filter 스크립트는 부울 값을 반환합니다. 반환 값이 TRUE이면 개체가 마이그레이션됩니다. FALSE이면 개체가 마이그레이션되지 않습니다. |
<content> 함수
다음 함수는 개체의 콘텐츠에서 패턴을 생성합니다. 이 함수는 부모 <ObjectSet> 요소에서 열거하는 각 개체에 대해 호출됩니다.
ExtractSingleFile
레지스트리 값이 MULTI-SZ이면 첫 번째 세그먼트만 처리됩니다. 반환되는 패턴은 시스템에 있어야 하는 파일의 인코딩된 위치입니다. 레지스트리 값이 올바르게 지정되었지만 파일이 없는 경우에는 NULL이 반환됩니다.
구문: ExtractSingleFile(Separators,PathHints
설정 필수 여부 Value Separators
필수
이 레지스트리 값 이름에서 파일 지정 뒤에 사용될 수 있는 구분 기호 목록입니다. 예를 들어 콘텐츠가 "C:\Windows\Notepad.exe,-2"인 경우 구분 기호는 쉼표입니다. NULL을 지정할 수 있습니다.
PathHints
필수
함수가 현재 콘텐츠와 일치하는 파일을 찾을 추가 경로 목록입니다. 이 목록은 콜론(;)으로 구분됩니다. 예를 들어 콘텐츠가 "Notepad.exe"이고 경로가 %Path% 환경 변수이면 이 함수는 %windir%에서 Notepad.exe를 찾고 "c:\Windows [Notepad.exe]"를 반환합니다. NULL을 지정할 수 있습니다.
예를 들면 다음과 같습니다.
<content filter="MigXmlHelper.ExtractSingleFile(',','%system%')">
및
<content filter="MigXmlHelper.ExtractSingleFile(NULL,'%CSIDL_COMMON_FONTS%')">
ExtractMultipleFiles
ExtractMultipleFiles 함수는 지정된 레지스트리 값의 콘텐츠에서 찾은 각 파일에 대해 하나씩, 여러 패턴을 반환합니다. 레지스트리 값이 MULTI-SZ이면 기본적으로 MULTI-SZ 구분 기호가 구분 기호로 간주됩니다. 따라서 MULTI-SZ의 경우 <Separators> 인수가 NULL이어야 합니다.
반환되는 패턴은 원본 컴퓨터에 있어야 하는 파일의 인코딩된 위치입니다. 레지스트리 값이 올바르게 지정되었지만 파일이 없는 경우에는 결과 목록에 포함되지 않습니다.
구문: ExtractMultipleFiles(Separators,PathHints)
설정 필수 여부 Value Separators
필수
이 레지스트리 값 이름에서 파일 지정 뒤에 사용될 수 있는 구분 기호 목록입니다. 예를 들어 콘텐츠가 "C:\Windows\Notepad.exe,-2"인 경우 구분 기호는 쉼표입니다. MULTI-SZ 레지스트리 값을 처리하는 경우에는 이 매개 변수가 NULL이어야 합니다.
PathHints
필수
함수가 현재 콘텐츠와 일치하는 파일을 찾을 추가 경로 목록입니다. 이 목록은 콜론(;)으로 구분됩니다. 예를 들어 콘텐츠가 "Notepad.exe"이고 경로가 %Path% 환경 변수이면 이 함수는 %windir%에서 Notepad.exe를 찾고 "c:\Windows [Notepad.exe]"를 반환합니다. NULL을 지정할 수 있습니다.
ExtractDirectory
ExtractDirectory 함수는 원본 컴퓨터에 있어야 하는 디렉터리의 인코딩된 위치인 패턴을 반환합니다. 레지스트리 값이 올바르게 지정되었지만 디렉터리가 없는 경우에는 NULL이 반환됩니다. 처리 중인 레지스트리 값이 MULTI-SZ이면 첫 번째 세그먼트만 처리됩니다.
구문: ExtractDirectory(Separators,LevelsToTrim,PatternSuffix)
설정 필수 여부 Value Separators
필수 아님
이 레지스트리 값 이름에서 파일 지정 뒤에 사용될 수 있는 구분 기호 목록입니다. 예를 들어 콘텐츠가 "C:\Windows\Notepad.exe,-2"인 경우 구분 기호는 쉼표입니다. MULTI-SZ 레지스트리 값을 처리하는 경우에는 NULL을 지정해야 합니다.
LevelsToTrim
필수
디렉터리 지정의 끝에서 삭제할 수준 수입니다. 알려진 위치의 루트 디렉터리 안을 가리키는 레지스트리 값이 있는 경우 이 함수를 사용하여 해당 루트 디렉터리를 추출할 수 있습니다.
PatternSuffix
필수
디렉터리 지정에 추가할 패턴입니다. 예를 들면
* [*]
입니다.예를 들면 다음과 같습니다.
<objectSet> <content filter='MigXmlHelper.ExtractDirectory (NULL, "1")'> <objectSet> <pattern type="Registry">%HklmWowSoftware%\Classes\Software\RealNetworks\Preferences\DT_Common []</pattern> </objectSet> </content> </objectSet>
<contentModify>
<contentModify> 요소는 개체의 콘텐츠를 대상 컴퓨터에 쓰기 전에 수정합니다. 각 <contentModify> 요소에 대해 여러 <objectSet> 요소가 있을 수 있습니다. 이 요소는 처리 중인 개체의 새 콘텐츠를 반환합니다.
발생 횟수: 제한 없음
부모 요소: <rules>
필수 자식 요소: <objectSet>
도우미 함수: 이 요소에는 다음과 같은 <contentModify> 함수를 사용할 수 있습니다. ConvertToDWORD, ConvertToString, ConvertToBinary, KeepExisting, OffsetValue, SetValueByTable, MergeMultiSzContent 및 MergeDelimitedContent
구문:
<contentModify script="ScriptInvocation">
</contentModify>
설정 | 필수 여부 | Value |
---|---|---|
script |
필수 |
뒤에 임의 개수의 문자열 인수가 쉼표로 구분되어 괄호 안에 있는 스크립트입니다. 예를 들면 이 스크립트는 include 규칙의 개체 집합에서 열거하는 각 개체에 대해 호출됩니다. filter 스크립트는 부울 값을 반환합니다. 반환 값이 TRUE이면 개체가 마이그레이션됩니다. FALSE이면 개체가 마이그레이션되지 않습니다. |
<contentModify> 함수
다음 함수는 마이그레이션되는 개체의 콘텐츠를 변경합니다. 이 함수는 부모 <ObjectSet> 요소에서 열거하는 각 개체에 대해 호출됩니다.
ConvertToDWORD
ConvertToDWORD 함수는 부모 <ObjectSet> 요소에서 열거하는 레지스트리 값의 콘텐츠를 DWORD로 변환합니다. 예를 들어 ConvertToDWORD는 문자열 "1"을 DWORD 0x00000001로 변환합니다. 변환에 실패하면 DefaultValueOnError의 값이 적용됩니다.
구문: ConvertToDWORD(DefaultValueOnError)
설정 필수 여부 Value DefaultValueOnError
필수 아님
변환에 실패할 경우 값 이름에 기록되는 값입니다. NULL을 지정할 수 있으며, 이 경우 변환에 실패하면 0이 기록됩니다.
ConvertToString
ConvertToString 함수는 부모 <ObjectSet> 요소와 일치하는 레지스트리 값의 콘텐츠를 문자열로 변환합니다. 예를 들어 DWORD 0x00000001을 문자열 "1"로 변환합니다. 변환에 실패하면 DefaultValueOnError의 값이 적용됩니다.
구문: ConvertToString(DefaultValueOnError)
설정 필수 여부 Value 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를 더하거나 뺀 다음 대상 컴퓨터의 레지스트리 값에 그 결과를 씁니다. 예를 들어 마이그레이션된 개체가 값이 14인 DWORD이고 Value가 "-2"인 경우 대상 컴퓨터의 레지스트리 값은 12가 됩니다.
구문: OffsetValue(Value)
설정 필수 여부 Value Value
필수
숫자 값의 문자열 표현입니다. 양수 또는 음수일 수 있습니다. 예를 들면
OffsetValue(2)
입니다.SetValueByTable
SetValueByTable 함수는 원본 컴퓨터의 값을 원본 테이블과 일치시킵니다. 값이 있으면 대상 테이블의 동등한 값이 적용됩니다. 값이 없거나 대상 테이블에 동등한 값이 없는 경우 DefaultValueOnError가 적용됩니다.
구문: SetValueByTable(SourceTable,DestinationTable,DefaultValueOnError)
설정 필수 여부 Value SourceTable
필수
원본 레지스트리 값에 사용할 수 있는, 쉼표로 구분된 값 목록입니다.
DestinationTable
필수 아님
쉼표로 구분된 변환된 값 목록입니다.
DefaultValueOnError
필수 아님
1) 원본 컴퓨터의 값이 SourceTable과 일치하지 않거나 2) DestinationTable에 동등한 값이 없는 경우 대상 컴퓨터에 적용할 값입니다.
DefaultValueOnError가 NULL이면 대상 컴퓨터의 값이 변경되지 않습니다.
KeepExisting
대상 컴퓨터에서 충돌이 발생하는 경우 KeepExisting 함수를 사용할 수 있습니다. 이 함수는 대상 컴퓨터에 있는 개체의 지정된 특성을 유지합니다(덮어쓰지 않음).
구문: KeepExisting("OptionString","OptionString","OptionString",…)
설정 필수 여부 Value OptionString
필수
OptionString은 Security, TimeFields 또는 FileAttrib:Letter일 수 있습니다. 각 OptionStrings 유형 중 하나를 지정할 수 있습니다. 동일한 값으로 여러 OptionStrings를 지정하지 마세요. 이렇게 하면 해당 유형의 맨 오른쪽 옵션이 유지됩니다. 예를 들어 ("FileAttrib:H", "FileAttrib:R")을 지정하면 Read-only만 평가됩니다. 대신 ("FileAttrib:HR")을 지정하여 대상 컴퓨터에서 Hidden 특성과 Read-only 특성이 둘 다 유지되도록 합니다.
- 보안. 대상 개체의 보안 설명자를 유지합니다(있는 경우).
- TimeFields. 대상 개체의 타임스탬프를 유지합니다. 이 매개 변수는 파일에만 사용됩니다.
- FileAttrib:Letter. 지정한 파일 특성 집합에 대해 대상 개체의 특성 값(On 또는 OFF)을 유지합니다. 이 매개 변수는 파일에만 사용됩니다. 다음 특성은 대/소문자를 구분하지 않지만 USMT는 잘못된 값, 반복되는 값 또는 "FileAttrib:" 뒤에 공백이 있는 값을 모두 무시합니다. 이러한 특성을 임의로 조합하여 지정할 수 있습니다.
- A = 보관
- C = 압축
- E = 암호화
- H = 숨김
- I = 콘텐츠를 인덱싱하지 않음
- O = 오프라인
- R = 읽기 전용
- S = 시스템
- T = 임시
- A = 보관
- 보안. 대상 개체의 보안 설명자를 유지합니다(있는 경우).
MergeMultiSzContent
MergeMultiSzContent 함수는 부모 <ObjectSet> 요소에서 열거하는 레지스트리 값의 MULTI-SZ 콘텐츠를 이미 대상 컴퓨터에 있는 동등한 레지스트리 값의 콘텐츠와 병합합니다.
Instruction
및String
은 결과 MULTI-SZ에 콘텐츠를 추가하거나 제거합니다. 중복 요소는 제거됩니다.구문: MergeMultiSzContent (Instruction,String,Instruction,String,…)
설정 필수 여부 Value Instruction
필수
다음 중 하나일 수 있습니다.
- Add. 결과 MULTI-SZ에 해당 String을 추가합니다(없는 경우).
- Remove. 결과 MULTI-SZ에서 해당 String을 제거합니다.
String
필수
추가하거나 제거할 문자열입니다.
- Add. 결과 MULTI-SZ에 해당 String을 추가합니다(없는 경우).
MergeDelimitedContent
MergeDelimitedContent 함수는 부모 <ObjectSet> 요소에서 열거하는 레지스트리 값의 콘텐츠를 이미 대상 컴퓨터에 있는 동등한 레지스트리 값의 콘텐츠와 병합합니다. 콘텐츠는 Delimiters 매개 변수의 문자 중 하나로 구분된 요소 목록으로 간주됩니다. 중복 요소는 제거됩니다.
구문: MergeDelimitedContent(Delimiters,Instruction,String,…)
설정 필수 여부 Value Delimiters
필수
처리 중인 개체의 콘텐츠를 구분하는 데 사용할 단일 문자입니다. 콘텐츠는 Delimiters로 구분된 요소 목록으로 간주됩니다.
예를 들어 "."은 마침표를 기준으로 문자열을 구분합니다.
Instruction
필수
다음 중 하나일 수 있습니다.
- Add. 결과 MULTI-SZ에 String을 추가합니다(없는 경우).
- Remove.결과 MULTI-SZ에서 String을 제거합니다.
String
필수
추가하거나 제거할 문자열입니다.
- Add. 결과 MULTI-SZ에 String을 추가합니다(없는 경우).
<description>
<description> 요소는 구성 요소에 대한 설명을 정의하지만 마이그레이션에 영향을 주지 않습니다.
발생 횟수: 0 또는 1회
부모 요소: <component>
자식 요소: 없음
구문:
<description>ComponentDescription</description>
설정 | 필수 여부 | Value |
---|---|---|
ComponentDescription |
필수 |
구성 요소에 대한 설명입니다. |
다음 코드 예제는 <description> 요소에서 "My custom component" 설명을 정의하는 방식을 보여 줍니다.
<description>My custom component<description>
<destinationCleanup>
<destinationCleanup> 요소는 원본 컴퓨터의 개체를 적용하기 전에 대상 컴퓨터에서 파일, 레지스트리 키 등의 개체를 삭제합니다. 이 요소는 대상 컴퓨터에서 LoadState 도구를 실행하는 경우에만 평가됩니다. 즉, ScanState 도구에서는 무시됩니다.
중요
이 옵션은 대상 컴퓨터에서 개체를 삭제하기 때문에 사용 시 주의해야 합니다.
각 <destinationCleanup> 요소에 대해 여러 <objectSet> 요소가 있을 수 있습니다. 이 요소는 대체로 원본 컴퓨터에 누락된 레지스트리 키가 하나 있고 구성 요소가 마이그레이션되도록 하려는 경우에 사용됩니다. 이 경우 원본 레지스트리 키를 마이그레이션하기 전에 구성 요소의 레지스트리 키를 모두 삭제할 수 있습니다. 그러면 원본 컴퓨터에 누락된 키가 하나 있는 경우 대상 컴퓨터에서도 누락됩니다.
발생 횟수: 제한 없음
부모 요소: <rules>
자식 요소: <objectSet>(대상 컴퓨터에서 모든 자식 요소가 삭제됨)
구문:
<destinationCleanup filter=ScriptInvocation>
</destinationCleanup>
설정 | 필수 여부 | Value |
---|---|---|
filter |
필수 |
뒤에 임의 개수의 문자열 인수가 쉼표로 구분되어 괄호 안에 있는 스크립트입니다. 예를 들면 이 스크립트는 include 규칙의 개체 집합에서 열거하는 각 개체에 대해 호출됩니다. filter 스크립트는 부울 값을 반환합니다. 반환 값이 TRUE이면 개체가 마이그레이션됩니다. FALSE이면 개체가 마이그레이션되지 않습니다. |
예를 들면 다음과 같습니다.
<destinationCleanup>
<objectSet>
<pattern type="Registry">HKCU\Software\Lotus\123\99.0\DDE Preferences\* [*]</pattern>
<pattern type="Registry">HKCU\Software\Lotus\123\99.0\Find Preferences\* [*]</pattern>
</objectSet>
</destinationCleanup>
<detect>
<detect> 요소는 계속 지원되지만 이후 USMT 버전에서 사용이 중단될 수 있으므로 사용하지 않는 것이 좋습니다. . 대신 <detection>요소를 사용합니다.
<detect> 요소를 사용하여 시스템에 구성 요소가 있는지 확인합니다. <detect> 요소 내의 모든 자식 <detect> 요소가 TRUE로 확인되면 <detect> 요소도 TRUE로 확인됩니다. 모든 자식 <detect> 요소가 FALSE로 확인되면 부모 <detect> 요소도 FALSE로 확인됩니다. <detect> 요소 섹션이 없는 경우 USMT는 구성 요소가 있다고 가정합니다.
각 <detect> 요소에 대해 여러 자식 <condition> 또는 <objectSet> 요소가 있을 수 있으며, 자식 요소는 논리상 OR 연산자로 결합됩니다. TRUE로 평가되는 <condition> 또는 <objectSet> 요소가 하나 이상 있으면 <detect> 요소도 TRUE로 평가됩니다.
발생 횟수: 제한 없음
부모 요소: <detects>, <namedElements>
필수 자식 요소: <condition>
선택적 자식 요소: <objectSet>
구문:
<detect name="ID" context="User|System|UserAndSystem">
</detect>
설정 | 필수 여부 | Value |
---|---|---|
name |
<detect>가 <namedElements>의 자식인 경우 필수 <detect>가 <detects>의 자식인 경우 필수 아님 |
ID를 지정하면 자식 요소는 처리되지 않습니다. 대신 <namedElements> 요소 내에서 동일한 이름으로 선언된 다른 <detect> 요소가 모두 처리됩니다. |
context |
필수 아님 (기본값 = UserAndSystem) |
이 매개 변수의 범위, 즉 특정 사용자 컨텍스트, 전체 운영 체제 또는 둘 다에서 이 구성 요소를 처리할지를 정의합니다. 가능한 최대 범위는 component 요소에 의해 설정됩니다. 예를 들어 <component> 요소에 User 컨텍스트가 있고 <rules> 요소에 UserAndSystem 컨텍스트가 있는 경우 <rules> 요소는 User 컨텍스트가 있는 것처럼 동작합니다. <rules> 요소에 System 컨텍스트가 있는 경우에는 <rules> 요소가 없는 것처럼 동작합니다.
|
예를 들어 <detection>의 예를 참조하세요.
<detects>
<detects> 요소는 지원되지만 이후 USMT 버전에서 사용이 중단되어 스크립트를 다시 작성해야 할 수도 있으므로 사용하지 않는 것이 좋습니다. 대신 부모 요소가 <role> 또는 <namedElements>이면 <detection> 요소를 사용하고, 부모 요소가 <rules>이면 <conditions> 요소를 사용합니다. <detection>을 통해 복잡한 부울 문을 보다 명확하게 구성할 수 있습니다.
<detects> 요소는 하나 이상의 <detect> 요소에 대한 컨테이너입니다. <detects> 요소 내의 모든 자식 <detect> 요소가 TRUE로 확인되면 <detects> 요소도 TRUE로 확인됩니다. 자식 <detect> 요소가 하나라도 FALSE로 확인되면 <detects>도 FALSE로 확인됩니다. 구성 요소 내의 <detects> 요소에 쓰지 않으려는 경우 <namedElements> 요소 아래에 <detects> 요소를 만든 다음 이 요소를 참조할 수 있습니다. <detects> 요소 섹션이 없는 경우 USMT는 구성 요소가 있다고 가정합니다. 각 <detects> 요소의 결과가 OR 연산자로 결합되어 부모 요소를 검색하는 데 사용되는 규칙을 구성합니다.
구문:
<detects name="ID" context="User|System|UserAndSystem">
</detects>
발생 횟수: 제한 없음
부모 요소: <role>, <rules>, <namedElements>
필수 자식 요소: <detect>
설정 | 필수 여부 | Value |
---|---|---|
name |
<detects>가 <namedElements>의 자식인 경우 필수 <detects>가 <role> 또는 <rules>의 자식인 경우 필수 아님 |
ID를 지정하면 자식 <detect> 요소는 처리되지 않습니다. 대신 <namedElements> 요소 내에서 동일한 이름으로 선언된 다른 <detects> 요소가 모두 처리됩니다. |
context |
필수 아님 (기본값 = UserAndSystem) |
이 매개 변수의 범위, 즉 특정 사용자 컨텍스트, 전체 운영 체제 또는 둘 다에서 이 구성 요소를 처리할지를 정의합니다. 가능한 최대 범위는 <component> 요소에 의해 설정됩니다. 예를 들어 <component> 요소에 User 컨텍스트가 있고 <rules> 요소에 UserAndSystem 컨텍스트가 있는 경우 <rules> 요소는 User 컨텍스트가 있는 것처럼 동작합니다. <rules> 요소에 System 컨텍스트가 있는 경우에는 <rules> 요소가 없는 것처럼 동작합니다.
<rules> 요소 안에 있는 <detects> 요소의 경우 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> 요소에 대한 컨테이너입니다. <conditions> 요소 아래에 있는 자식 <condition> 요소의 결과에 따라 이 요소의 결과가 결정됩니다. 예를 들어 <detection> 요소 내의 모든 자식 <conditions> 요소가 TRUE로 확인되면 <detection> 요소도 TRUE로 확인됩니다. 자식 <conditions> 요소가 하나라도 FALSE로 확인되면 <detection> 요소도 FALSE로 확인됩니다.
또한 <role> 요소 내 각 <detection> 섹션의 결과가 OR 연산자로 결합되어 부모 요소의 검색 규칙을 구성합니다. 즉, <detection> 섹션 중 하나가 TRUE로 확인되면 <role> 요소가 처리됩니다. 그렇지 않으면 <role> 요소가 처리되지 않습니다.
구성 요소 내의 <detection> 요소에 쓰지 않으려는 경우 <namedElements> 요소 아래의 <detection> 요소를 사용합니다. 그런 다음 <role> 요소 아래에 일치하는 <detection> 섹션을 포함하여 구성 요소의 마이그레이션 여부를 제어합니다. 구성 요소에 대한 <detection> 요소 섹션이 없는 경우 USMT는 구성 요소가 있다고 가정합니다.
발생 횟수: 제한 없음
부모 요소: <role>, <namedElements>
자식 요소: <conditions>
구문:
<detection name="ID" context="User|System|UserAndSystem">
</detection>
설정 | 필수 여부 | Value |
---|---|---|
name |
|
선언된 경우 <detection> 요소의 콘텐츠는 무시되고 <namedElements> 요소에서 동일한 이름으로 선언된 <detection> 요소의 콘텐츠가 평가됩니다. |
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>
설정 | 필수 여부 | Value |
---|---|---|
locID |
필수 아님 |
이 매개 변수는 내부 USMT에 사용되므로 사용하지 마세요. |
ComponentName |
필수 |
구성 요소의 이름입니다. |
예를 들면 다음과 같습니다.
<displayName>Command Prompt settings</displayName>
<environment>
<environment> 요소는 .xml 파일에 사용할 변수를 정의할 수 있는 <variable> 요소에 대한 컨테이너입니다. 이런 방식으로 정의된 모든 환경 변수는 개인 변수입니다. 즉, 변수가 정의된 구성 요소와 자식 구성 요소에만 사용할 수 있습니다. 두 가지 예제 시나리오를 보려면 예를 참조하세요.
발생 횟수: 제한 없음
부모 요소: <role>, <component>, <namedElements>
필수 자식 요소: <variable>
선택적 자식 요소: <conditions>
구문:
<environment name="ID" context="User|System|UserAndSystem">
</environment>
설정 | 필수 여부 | Value |
---|---|---|
name |
<environment>가 <namedElements>의 자식인 경우 필수 <environment>가 <role> 또는 <component>의 자식인 경우 필수 아님 |
<role> 또는 <component> 요소의 자식으로 선언된 경우 ID를 선언하면 USMT는 <environment> 요소의 콘텐츠를 무시하며 <namedElements> 요소에서 동일한 이름으로 선언된 <environment> 요소의 콘텐츠가 처리됩니다. |
context |
필수 아님 (기본값 = UserAndSystem) |
이 매개 변수의 범위, 즉 특정 사용자 컨텍스트, 전체 운영 체제 또는 둘 다에서 이 구성 요소를 처리할지를 정의합니다. 가능한 최대 범위는 <component> 요소에 의해 설정됩니다. 예를 들어 <component> 요소에 User 컨텍스트가 있고 <rules> 요소에 UserAndSystem 컨텍스트가 있는 경우 <rules> 요소는 User 컨텍스트가 있는 것처럼 동작합니다. <rules> 요소에 System 컨텍스트가 있는 경우에는 <rules>가 없는 것처럼 동작합니다.
|
예제 시나리오 1
이 시나리오에서는 대상 컴퓨터의 구성에 따라 런타임에 개체 위치를 생성하려고 합니다. 예를 들어 이 작업은 응용 프로그램이 설치된 디렉터리에 데이터를 쓰는데 사용자가 컴퓨터의 임의 위치에 응용 프로그램을 설치할 수 있는 경우에 필요합니다. 응용 프로그램이 레지스트리 값 hklm\software\companyname\install [path]를 쓰고 이 값을 응용 프로그램이 설치된 위치로 업데이트하는 경우 필요한 데이터를 제대로 마이그레이션하려면 환경 변수를 정의해야 합니다. 예를 들면 다음과 같습니다.
<environment>
<variable name="INSTALLPATH">
<script>MigXmlHelper.GetStringContent("Registry","\software\companyname\install [path]")</script>
</variable>
</environment>
그런 후에 다음과 같이 include 규칙을 사용할 수 있습니다. <script> 함수 중 하나를 사용하여 유사한 작업을 할 수 있습니다.
<include>
<objectSet>
<pattern type="File">%INSTALLPATH%\ [*.xyz]</pattern>
</objectSet>
</include>
둘째, 필요한 데이터가 포함된 레지스트리 값을 필터링할 수도 있습니다. 다음 예에서는 Hklm\software\companyname\application\ [Path] 레지스트리의 값에서 구분 기호 "," 앞에 있는 첫 번째 문자열을 추출합니다.
<environment>
<variable name="APPPATH">
<objectSet>
<content filter='MigXmlHelper.ExtractDirectory (",", "1")'>
<objectSet>
<pattern type="Registry">Hklm\software\companyname\application\ [Path]</pattern>
</objectSet>
</content>
</objectSet>
</variable>
</environment>
예제 시나리오 2
이 시나리오에서는 %SYSTEMDRIVE%\data\userdata\dir1\dir2\에서 File1.txt, File2.txt 등의 5개 파일을 마이그레이션하려고 합니다. 이렇게 하려면 .xml 파일에 다음 <include> 규칙이 있어야 합니다.
<include>
<objectSet>
<pattern type="File">%SYSTEMDRIVE%\data\userdata\dir1\dir2 [File1.txt]</pattern>
<pattern type="File">%SYSTEMDRIVE%\data\userdata\dir1\dir2 [File2.txt]</pattern>
<pattern type="File">%SYSTEMDRIVE%\data\userdata\dir1\dir2 [File3.txt]</pattern>
<pattern type="File">%SYSTEMDRIVE%\data\userdata\dir1\dir2 [File4.txt]</pattern>
<pattern type="File">%SYSTEMDRIVE%\data\userdata\dir1\dir2 [File5.txt]</pattern>
</objectSet>
</include>
경로를 5번 입력하는 대신 다음과 같이 위치에 대한 변수를 만들 수 있습니다.
<environment>
<variable name="DATAPATH">
<text>%SYSTEMDRIVE%\data\userdata\dir1\dir2 </text>
</variable>
</environment>
그런 후에 다음과 같이 <include> 규칙에 이 변수를 지정할 수 있습니다.
<include>
<objectSet>
<pattern type="File">%DATAPATH% [File1.txt]</pattern>
<pattern type="File">%DATAPATH% [File2.txt]</pattern>
<pattern type="File">%DATAPATH% [File3.txt]</pattern>
<pattern type="File">%DATAPATH% [File4.txt]</pattern>
<pattern type="File">%DATAPATH% [File5.txt]</pattern>
</objectSet>
</include>
<exclude>
<exclude> 요소는 개체를 마이그레이션하는 보다 구체적인 <include> 요소가 없는 경우 마이그레이션하지 않을 개체를 결정합니다. 동일한 개체에 <include> 요소와 <exclude> 요소가 모두 있으면 개체가 포함됩니다. 각 <exclude> 요소에 대해 여러 자식 <objectSet> 요소가 있을 수 있습니다.
발생 횟수: 제한 없음
부모 요소: <rules>
자식 요소: <objectSet>
도우미 함수: 이 요소에는 다음과 같은 <include> 및 <exclude> 필터 함수를 사용할 수 있습니다. CompareStringContent, IgnoreIrrelevantLinks, AnswerNo, NeverRestore 및 SameRegContent
구문:
<exclude filter="ScriptInvocation">
</exclude>
설정 | 필수 여부 | Value |
---|---|---|
filter |
필수 아님 (기본값 = No) |
뒤에 임의 개수의 문자열 인수가 쉼표로 구분되어 괄호 안에 있는 스크립트입니다. 예를 들면 이 스크립트는 include 규칙의 개체 집합에서 열거하는 각 개체에 대해 호출됩니다. filter 스크립트는 부울 값을 반환합니다. 반환 값이 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>
매개 변수 | 필수 여부 | Value |
---|---|---|
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> 요소에 대한 컨테이너입니다.
발생 횟수: 0 또는 1회
부모 요소: <component>
필수 자식 요소: <extension>
구문:
<extensions>
</extensions>
<extension>
<extension> 요소를 사용하여 특정 확장명의 문서를 지정할 수 있습니다.
발생 횟수: 제한 없음
부모 요소: <extensions>
자식 요소: 없음
구문:
<extension>FilenameExtension</extension>
설정 | 필수 여부 | Value |
---|---|---|
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>
설정 | 필수 여부 | Value |
---|---|---|
when |
필수 |
명령줄을 실행할 시기를 나타냅니다. 이 값은 다음 중 하나일 수 있습니다.
|
<externalProcess> 요소를 사용하는 방법의 예를 보려면 <excludeAttributes>에 대한 예를 참조하세요.
<icon>
이 요소는 내부 USMT 요소이므로 사용하지 마세요.
<include>
<include> 요소는 보다 구체적인 <exclude> 규칙이 없는 경우 마이그레이션할 항목을 결정합니다. 스크립트를 보다 구체적으로 지정하여 수집하려는 항목의 정의를 확장할 수 있습니다. 각 <include> 요소에 대해 여러 <objectSet> 요소가 있을 수 있습니다.
발생 횟수: 제한 없음
부모 요소: <rules>
필수 자식 요소: <objectSet>
도우미 함수: 이 요소에는 다음과 같은 <include> 및 <exclude> 필터 함수를 사용할 수 있습니다. CompareStringContent, IgnoreIrrelevantLinks, AnswerNo 및 NeverRestore
구문:
<include filter="ScriptInvocation">
</include>
설정 | 필수 여부 | Value |
---|---|---|
filter |
아니요. 이 매개 변수를 지정하지 않으면 자식 <ObjectSet> 요소 안에 있는 모든 패턴이 처리됩니다. |
뒤에 임의 개수의 문자열 인수가 쉼표로 구분되어 괄호 안에 있는 스크립트입니다. 예를 들면 이 스크립트는 <include> 규칙의 개체 집합에서 열거하는 각 개체에 대해 호출됩니다. filter 스크립트는 부울 값을 반환합니다. 반환 값이 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")
설정 필수 여부 Value StringContent
필수
검사 시 기준으로 사용할 문자열입니다.
CompareType
필수
문자열입니다. 다음 값 중의 하나를 사용합니다.
- Equal(대/소문자 구분 안 함). 마이그레이션 엔진에서 처리된 현재 개체의 문자열 표현이
StringContent
와 같으면 TRUE가 반환됩니다.
- NULL또는 다른 임의의 값. 마이그레이션 엔진에서 처리된 현재 개체의 문자열 표현이
StringContent
와 일치하지 않으면 TRUE가 반환됩니다.
- Equal(대/소문자 구분 안 함). 마이그레이션 엔진에서 처리된 현재 개체의 문자열 표현이
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>
설정 | 필수 여부 | Value |
---|---|---|
attributes |
필수 |
마이그레이션된 개체에 포함할 특성을 지정합니다. 다음 중 하나 또는 둘 다를 따옴표로 구분하여 지정할 수 있습니다(예:
|
<includeAttributes> 요소를 사용하는 방법의 예를 보려면 <excludeAttributes>에 대한 예를 참조하세요.
<library>
이 요소는 내부 USMT 요소이므로 사용하지 마세요.
<location>
<location> 요소는 <object> 요소의 위치를 정의합니다.
발생 횟수: 각 <object>에 대해 한 번 발생
부모 요소: <object>
자식 요소: <script>
구문:
<location type="typeID">ObjectLocation</location>
설정 | 필수 여부 | Value |
---|---|---|
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>
설정 | 필수 여부 | Value |
---|---|---|
script |
필수 |
뒤에 임의 개수의 문자열 인수가 쉼표로 구분되어 괄호 안에 있는 스크립트입니다. 예를 들면 이 스크립트는 include 규칙의 개체 집합에서 열거하는 각 개체에 대해 호출됩니다. filter 스크립트는 부울 값을 반환합니다. 반환 값이 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)
설정 필수 여부 Value 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)
설정 필수 여부 Value DestinationRoot
필수
원본 개체를 이동할 위치입니다. 필요한 경우 원본 개체 이름에서 가장 긴 CSIDL 위에 있던 하위 디렉터리를 만듭니다.
RelativeMove
RelativeMove 함수를 사용하여 데이터를 수집하고 이동할 수 있습니다. 원본 및 대상 루트에 환경 변수를 사용할 수는 있지만 해당 변수가 원본 및 대상 컴퓨터에서 다르게 정의될 수 있습니다.
구문: RelativeMove(SourceRoot,DestinationRoot)
설정 필수 여부 Value SourceRoot
필수
개체를 이동할 원본 위치입니다. 부모 <ObjectSet> 요소에서 열거하는 원본 개체 중 이 위치에 없는 개체는 이동되지 않습니다.
DestinationRoot
필수
원본 개체를 이동할 대상 컴퓨터의 위치입니다. 필요한 경우 이 함수는 SourceRoot 위에 있던 하위 디렉터리를 만듭니다.
예를 들면 다음과 같습니다.
<include> <objectSet> <pattern type="File">%CSIDL_COMMON_FAVORITES%\* [*]</pattern> <objectSet> </include> <locationModify script="MigXmlHelper.RelativeMove('%CSIDL_COMMON_FAVORITES%','%CSIDL_COMMON_FAVORITES%')"> <objectSet> <pattern type="File">%CSIDL_COMMON_FAVORITES%\* [*]</pattern> </objectSet> </locationModify>
<_locDefinition>
이 요소는 내부 USMT 요소이므로 사용하지 마세요.
<manufacturer>
<manufacturer> 요소는 구성 요소의 제조업체를 정의하지만 마이그레이션에 영향을 주지 않습니다.
발생 횟수: 0 또는 1회
부모 요소: <component>
자식 요소: 없음
구문:
<manufacturer>Name</manufacturer>
설정 | 필수 여부 | Value |
---|---|---|
Name |
필수 |
구성 요소의 제조업체 이름입니다. |
<merge>
<merge> 요소는 충돌이 발생할 경우 수행되는 동작을 결정합니다. 마이그레이션되는 개체가 대상 컴퓨터에 이미 있는 경우 충돌이 발생합니다. 이 요소를 지정하지 않을 경우 레지스트리의 기본 동작은 원본 개체가 대상 개체를 덮어쓰는 것입니다. 파일의 기본 동작은 원본 파일의 이름을 "OriginalFileName(1).OriginalExtension"으로 바꾸는 것입니다. 이 요소는 충돌이 발생할 경우 수행되는 동작만 지정합니다. 개체는 포함되지 않습니다. 따라서 개체를 마이그레이션하려면 <merge> 요소와 함께 <include> 규칙을 지정해야 합니다. 개체를 처리하는 동안 충돌이 검색된 경우 USMT는 가장 구체적인 병합 규칙을 선택 및 적용하여 충돌을 해결합니다. 예를 들어 <merge> 규칙 C:\* [*]는 <sourcePriority>로 설정되어 있고 <merge> 규칙 C:\subfolder\* [*]는 <destinationPriority>로 설정된 경우 USMT는 더 구체적인 <destinationPriority> 규칙을 사용합니다.
이 요소의 예를 보려면 대상 컴퓨터에서 충돌이 발생하는 경우 <merge> 작동 방식은?을 참조하세요.
발생 횟수: 제한 없음
부모 요소: <rules>
필수 자식 요소: <objectSet>
도우미 함수: 이 요소에는 다음과 같은 <merge> 함수를 사용할 수 있습니다. SourcePriority, DestinationPriority, FindFilePlaceByPattern, LeafPattern, NewestVersion, HigherValue() 및 LowerValue()
구문:
<merge script="ScriptInvocation">
</merge>
설정 | 필수 여부 | Value |
---|---|---|
script |
필수 |
뒤에 임의 개수의 문자열 인수가 쉼표로 구분되어 괄호 안에 있는 스크립트입니다. 예를 들면 이 스크립트는 <include> 규칙의 개체 집합에서 열거하는 각 개체에 대해 호출됩니다. filter 스크립트는 부울 값을 반환합니다. 반환 값이 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)
설정 필수 여부 Value FilePattern
필수
- <F>는 원본 파일 이름으로 바뀝니다.
- <N>은 대상 컴퓨터의 개체와 충돌이 없을 때까지 증분 카운터로 바뀝니다.
- <E>는 원본 파일 이름 확장명으로 바뀝니다.
예를 들어
<F> (<N>).<E>
는 대상 컴퓨터에서 원본 파일 MyDocument.doc를 MyDocument (1).doc로 변경합니다.- <F>는 원본 파일 이름으로 바뀝니다.
NewestVersion
NewestVersion 함수는 대상 컴퓨터에서 파일 버전을 기준으로 충돌을 해결합니다.
구문: NewestVersion(VersionTag)
설정 필수 여부 Value VersionTag
필수
검사할 버전 필드입니다. "FileVersion" 또는 "ProductVersion"일 수 있습니다. VersionTag 버전이 가장 높은 파일이 파일 버전을 기준으로 해결할 충돌을 결정합니다. 예를 들어 Myfile.txt에 FileVersion 1이 있고 대상 컴퓨터의 동일한 파일에 FileVersion 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가 고유해야 합니다. 이는 USMT에서 urlid를 사용하여 파일 내의 구성 요소를 정의하기 때문입니다. 예를 들어 각 파일의 시작 부분에서 다음을 지정해야 합니다. <CustomFileName>은 파일의 이름(예: "CustomApp")입니다.
발생 횟수: 1회
부모 요소: 없음
필수 자식 요소: <component>
선택적 자식 요소: <library>, <namedElements>
구문:
<migration urlid="*UrlID/*Name">
</migration>
설정 | 필수 여부 | Value |
---|---|---|
urlid |
필수 |
UrlID는 이 .xml 파일을 고유하게 식별하는 문자열 식별자입니다. 이 매개 변수는 XML 네임스페이스 사양에 정의된 콜론이 없는 이름이어야 합니다. 각 마이그레이션 .xml 파일에 고유한 urlid가 있어야 합니다. 두 마이그레이션 .xml 파일의 urlid가 같은 경우 명령줄에서 두 번째로 지정된 .xml 파일은 처리되지 않습니다. XML 네임스페이스에 대한 자세한 내용은 XML 네임스페이스 사용을 참조하세요. |
Name |
필수 아님 |
필수는 아니지만 .xml 파일의 이름을 사용하는 것이 좋습니다. |
다음은 MigApp.xml 파일에서 가져온 예입니다.
<migration urlid="https://www.microsoft.com/migration/1.0/migxmlext/migapp">
</migration>
MigXMLHelper.FileProperties
이 필터 도우미 함수는 파일 크기와 날짜 특성을 기준으로 파일 마이그레이션을 필터링하는 데 사용할 수 있습니다.
도우미 함수 | MigXMLHelper.FileProperties (property, operator, valueToCompare) |
---|---|
Property |
filesize, dateCreated, dateModified, dateAccessed |
Operator |
range, neq, lte, lt, eq, gte, gt |
valueToCompare |
비교할 값입니다. 예를 들면 다음과 같습니다. 날짜: "2008/05/15-2005/05/17", "2008/05/15" 크기: 끝에 B, KB, MB 또는 GB가 있는 숫자. "5GB", "1KB-1MB" |
<component context="System" type="Application">
<displayName>File_size</displayName>
<role role="Data">
<rules>
<include filter='MigXmlHelper.FileProperties("dateAccessed","range","2008/05/15-2008/05/17")'>
<objectSet>
<pattern type="File">%SYSTEMDRIVE%\DOCS\* [*]</pattern>
</objectSet>
</include>
</rules>
</role>
</component>
<namedElements>
<namedElements> 요소를 사용하여 명명된 요소를 정의할 수 있습니다. .xml 파일 전체의 임의 구성 요소에 이러한 요소를 사용할 수 있습니다. 이 요소를 사용하는 방법의 예를 보려면 MigApp.xml 파일을 참조하세요.
구문:
<namedElements>
</namedElements>
발생 횟수: 제한 없음
부모 요소: <migration>
자식 요소: <environment>, <rules>, <conditions>, <detection>, <detects>, <detect>
이 요소의 예를 보려면 MigApp.xml 파일을 참조하세요.
<object>
<object> 요소는 파일 또는 레지스트리 키를 나타냅니다.
발생 횟수: 제한 없음
부모 요소: <addObjects>
필수 자식 요소: <location>, <attributes>
선택적 자식 요소: <bytes>
구문:
<object>
</object>
다음은 MigApp.xml 파일에서 가져온 예입니다.
<addObjects>
<object>
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\12.0\Common\Migration\Office [UpgradeVersion]</location>
<attributes>DWORD</attributes>
<bytes>0B000000</bytes>
</object>
<object>
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\12.0\Common\Migration\Office [Lang]</location>
<attributes>DWORD</attributes>
<bytes>00000000</bytes>
</object>
</addObjects>
<objectSet>
<objectSet> 요소에는 파일 경로, 레지스트리 위치 등의 개체 패턴 목록이 포함됩니다. 자식 <conditions> 요소가 먼저 평가됩니다. 모든 자식 <conditions> 요소에서 FALSE를 반환할 경우 <objectSet> 요소는 빈 집합으로 평가됩니다. 각 부모 요소에 대해 여러 <objectSet> 요소만 있을 수 있습니다.
발생 횟수: 제한 없음
부모 요소: <variable>, <content>, <include>, <exclude>, <merge>, <contentModify>, <locationModify>, <destinationCleanup>, <includeAttributes>, <excludeAttributes>, <unconditionalExclude>, <detect>
필수 자식 요소: either <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>
이 요소는 내부 USMT 요소이므로 사용하지 마세요.
<paths>
이 요소는 내부 USMT 요소이므로 사용하지 마세요.
<pattern>
이 요소를 사용하여 여러 개체를 지정할 수 있습니다. 각 <objectSet> 요소에 대해 여러 <pattern> 요소를 지정할 수 있으며, 요소가 조합됩니다. 파일을 지정하는 경우 대신 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>
설정 | 필수 여부 | Value |
---|---|---|
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>
C: 드라이브에서 EngineeringDrafts 폴더와 모든 하위 폴더를 마이그레이션하려면
<pattern type="File">C:\EngineeringDrafts\* [*]</pattern>
C: 드라이브에서 EngineeringDrafts 폴더만 마이그레이션하고 모든 하위 폴더를 제외하려면
<pattern type="File"> C:\EngineeringDrafts\ [*]</pattern>
C:\EngineeringDrafts에서 Sample.doc 파일을 마이그레이션하려면
<pattern type="File"> C:\EngineeringDrafts\ [Sample.doc]</pattern>
C: 드라이브의 원래 위치에서 Sample.doc 파일을 마이그레이션하려면 다음과 같은 방식으로 패턴을 사용합니다. 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>
설정 | 필수 여부 | Value |
---|---|---|
when |
필수 |
스크립트를 실행할 시기를 나타냅니다. 이 값은 다음 중 하나일 수 있습니다.
|
<plugin>
이 요소는 내부 USMT 요소이므로 사용하지 마세요.
<role>
<role> 요소는 사용자 지정 .xml 파일에 필요합니다. <role> 요소를 지정하면 구체적인 구성 요소를 만들 수 있습니다. 구성 요소는 <component> 수준에서 지정된 매개 변수와 여기서 지정하는 역할을 통해 정의됩니다.
발생 횟수: 각 <component>에는 자식 <role> 요소가 1개, 2개 또는 3개 포함될 수 있습니다.
부모 요소: <component>, <role>
필수 자식 요소: <rules>
선택적 자식 요소: <environment>, <detection>, <component>, <role>, <detects>, <plugin>,
구문:
<role role="Container|Binaries|Settings|Data">
</role>
설정 | 필수 여부 | Value |
---|---|---|
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 파일에 필요합니다. 자식 <conditions> 요소(있는 경우)가 FALSE로 평가된 경우가 아니면 이 요소에는 부모 <component> 요소가 선택된 경우 마이그레이션 중에 실행할 규칙이 포함됩니다. 각 <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>
설정 | 필수 여부 | Value |
---|---|---|
name |
<rules>가 <namedElements>의 자식인 경우 필수 <rules>가 다른 임의 요소의 자식인 경우 필수 아님 |
ID를 지정하면 자식 요소는 처리되지 않습니다. 대신 <namedElements> 내에서 동일한 이름으로 선언된 다른 <rules> 요소가 모두 처리됩니다. |
context |
필수 아님 (기본값 = UserAndSystem) |
이 매개 변수의 범위, 즉 특정 사용자 컨텍스트, 전체 운영 체제 또는 둘 다에서 이 구성 요소를 처리할지를 정의합니다. 가능한 최대 범위는 component 요소에 의해 설정됩니다. 예를 들어 <component> 요소에 User 컨텍스트가 있고 <rules> 요소에 UserAndSystem 컨텍스트가 있는 경우 <rules> 요소는 User 컨텍스트가 있는 것처럼 동작합니다. <rules>에 System 컨텍스트가 있는 경우에는 <rules>가 없는 것처럼 동작합니다.
|
다음은 MigUser.xml 파일에서 가져온 예입니다.
<component type="Documents" context="User">
<displayName _locID="miguser.mymusic">My Music</displayName>
<paths>
<path type="File">%CSIDL_MYMUSIC%</path>
</paths>
<role role="Data">
<detects>
<detect>
<condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_MYMUSIC%")</condition>
</detect>
</detects>
<rules>
<include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
<objectSet>
<pattern type="File">%CSIDL_MYMUSIC%\* [*]</pattern>
</objectSet>
</include>
<merge script="MigXmlHelper.DestinationPriority()">
<objectSet>
<pattern type="File">%CSIDL_MYMUSIC%\ [desktop.ini]</pattern>
</objectSet>
</merge>
</rules>
</role>
</component>
<script>
<script>에 필요한 반환 값은 부모 요소에 따라 달라집니다.
발생 횟수: <variable>의 경우 한 번 발생, <objectSet> 및 <processing>의 경우 제한 없음
부모 요소: <objectSet>, <variable>, <processing>
자식 요소: 없음
구문 및 도우미 함수:
일반 구문: <script>ScriptWithArguments</script>
<script>가 <variable> 안에 있는 경우 <script> 함수를 사용할 수 있습니다.
구문: <script>MigXmlHelper.GetStringContent("ObjectType","EncodedLocationPattern", "ExpandContent")</script>
예:
<script>MigXMLHelper.GetStringContent("Registry","HKLM\Software\MyApp\Installer [EXEPATH]")</script>
<script>가 <objectSet> 안에 있는 경우 <script> 함수를 사용할 수 있습니다.
구문: <script>MigXmlHelper.GenerateUserPatterns("ObjectType","EncodedLocationPattern","ProcessCurrentUser")</script>
예:
<script>MigXmlHelper.GenerateUserPatterns ("File","%USERPROFILE%\* [*.doc]", "FALSE")</script>
<script>가 <objectSet> 안에 있는 경우 <script> 함수를 사용할 수 있습니다.
구문: <script>MigXmlHelper.GenerateDrivePatterns("PatternSegment","DriveType")</script>
예:
<script>MigXmlHelper.GenerateDrivePatterns("* [sample.doc]", "Fixed")</script>
<processing> 요소 안에 있는 <script> 요소에는 다음과 같은 <script> 함수를 사용할 수 있습니다. AskForLogoff, ConvertToShortFileName, KillExplorer, RemoveEmptyDirectories, RestartExplorer, RegisterFonts, StartService, StopService, SyncSCM.
구문: <script>MigXmlHelper.ExecutingScript</script>
예:
<script>MigXmlHelper.KillExplorer()</script>
설정 | 필수 여부 | Value |
---|---|---|
ScriptWithArguments |
필수 |
뒤에 임의 개수의 문자열 인수가 쉼표로 구분되어 괄호 안에 있는 스크립트입니다. 예를 들면 이 스크립트는 <include> 규칙의 개체 집합에서 열거하는 각 개체에 대해 호출됩니다. filter 스크립트는 부울 값을 반환합니다. 반환 값이 TRUE이면 개체가 마이그레이션됩니다. FALSE이면 개체가 마이그레이션되지 않습니다. <script>에 필요한 반환 값은 부모 요소에 따라 달라집니다.
|
예:
원본 컴퓨터의 임의 드라이브에서 Sample.doc 파일을 마이그레이션하려면 다음과 같이 <script>를 사용합니다. 동일한 이름의 파일이 여러 개 있는 경우 해당 파일이 모두 마이그레이션됩니다.
<script>MigXmlHelper.GenerateDrivePatterns("* [sample.doc]", "Fixed")</script>
이 요소를 사용하는 방법의 추가 예를 보려면 파일 및 설정 제외, 파일 및 설정 경로 전환, 파일 및 설정 경로 전환 및 사용자 지정 XML 예를 참조하세요.
<script> 함수
<script> 요소에는 다음 함수를 사용할 수 있습니다.
문자열 및 패턴 생성 함수
단순 실행 스크립트
문자열 및 패턴 생성 함수
이 함수는 문자열 또는 패턴을 반환합니다.
GetStringContent
GetStringContent는 <variable> 요소 안에 있는 <script> 요소에 사용할 수 있습니다. 가능한 경우 이 함수는 지정된 개체의 문자열 표현을 반환합니다. 그렇지 않으면 NULL이 반환됩니다. 파일 개체의 경우 항상 NULL이 반환됩니다.
구문: GetStringContent("ObjectType","EncodedLocationPattern", "ExpandContent")
설정 필수 여부 Value ObjectType
필수
개체 유형입니다. Registry 또는 Ini(.ini 파일의 경우)일 수 있습니다.
EncodedLocationPattern
필수
- 개체 유형이 Registry인 경우 EncodedLocationPattern은 올바른 레지스트리 경로여야 합니다(예: HKLM\SOFTWARE\MyKey[]).
- 개체 유형이 Ini인 경우 EncodedLocationPattern은 다음 형식을 사용해야 합니다.
IniFilePath|SectionName[SettingName]
ExpandContent
필수 아님(기본값=TRUE)
TRUE 또는 FALSE일 수 있습니다. FALSE이면 지정된 위치가 반환되기 전에 확장되지 않습니다.
예를 들면 다음과 같습니다.
<variable name="MSNMessengerInstPath"> <script>MigXmlHelper.GetStringContent("Registry","%HklmWowSoftware%\Microsoft\MSNMessenger [InstallationDirectory]")</script> </variable>
- 개체 유형이 Registry인 경우 EncodedLocationPattern은 올바른 레지스트리 경로여야 합니다(예: HKLM\SOFTWARE\MyKey[]).
GenerateDrivePatterns
GenerateDrivePatterns 함수는 사용 가능한 모든 드라이브를 반복하며 요청된 드라이브 종류와 일치하는 드라이브를 선택합니다. 그런 다음 선택한 드라이브를 PatternSegment의 끝 부분과 연결하여 전체 인코딩된 파일 패턴을 구성합니다. 예를 들어 PatternSegment가
Path [file.txt]
이고 DriveType이Fixed
인 경우C:\Path [file.txt]
가 생성되고 C: 이외의 고정 드라이브가 있는 경우에는 다른 패턴이 생성됩니다. 이 함수에는 환경 변수를 지정할 수 없습니다. <include>/<exclude> 안에 있는 <objectSet> 내의 <script> 요소에 GenerateDrivePatterns을 사용할 수 있습니다.구문: GenerateDrivePatterns("PatternSegment","DriveType")
설정 필수 여부 Value PatternSegment
필수
인코딩된 패턴의 접미사입니다. "c:\" 등의 드라이브 지정과 연결되어 전체 위치 지정을 구성합니다(예: "* [*.doc]"). PatternSegment는 환경 변수가 될 수 없습니다.
DriveType
필수
패턴을 생성할 드라이브 종류입니다. 다음 중 하나를 지정할 수 있습니다.
- Fixed
- CDROM
- Removable
- Remote
이 요소의 예는 MigUser.xml 파일의 마지막 구성 요소를 참조하세요.
- Fixed
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")
설정 필수 여부 Value ObjectType
필수
개체 유형을 정의합니다. File 또는 Registry일 수 있습니다.
EncodedLocationPattern
필수
위치 지정입니다. 환경 변수를 사용할 수 있습니다.
ProcessCurrentUser
필수
TRUE 또는 FALSE일 수 있습니다. 현재 사용자에 대해 패턴을 생성할지 여부를 나타냅니다.
예:
USMT에서 사용자 A를 처리하는 동안 GenerateUserPattens('File','%userprofile% [*.doc]','FALSE')를 호출하면 사용자 B와 C에 대해서만 패턴이 생성됩니다. 이 도우미 함수를 사용하여 복잡한 규칙을 작성할 수 있습니다. 예를 들어 원본 컴퓨터에서 모든 .doc 파일을 마이그레이션하지만 사용자 X가 마이그레이션되지 않는 경우 사용자 X 프로필의 .doc 파일은 마이그레이션하지 않습니다.
다음은 이 시나리오의 예제 코드입니다. 첫 번째 <rules> 요소는 C:\Documents and Settings 안의 .doc 파일을 제외하고 원본 컴퓨터에 있는 모든 .doc 파일을 마이그레이션합니다. 두 번째 <rules> 요소는 다른 사용자 프로필의 .doc 파일을 제외하고 C:\Documents and Settings의 모든 .doc 파일을 마이그레이션합니다. 두 번째 <rules> 요소는 마이그레이션된 각 사용자 컨텍스트에서 처리되기 때문에 원하는 동작이 최종 결과가 됩니다. 필요한 최종 결과를 얻을 수 있습니다.
<rules context="System"> <include> <objectSet> <script>MigXmlHelper.GenerateDrivePatterns ("* [*.doc]", "Fixed")</script> </objectSet> </include> <exclude> <objectSet> <pattern type="File">%ProfilesFolder%\* [*.doc]</pattern> </objectSet> </exclude> </rules> <rules context="User"> <include> <objectSet> <pattern type="File">%ProfilesFolder%\* [*.doc]</pattern> </objectSet> </include> <exclude> <objectSet> <script>MigXmlHelper.GenerateUserPatterns ("File","%userprofile%\* [*.doc]", "FALSE")</script> </objectSet> </exclude> </rules>
MigXmlHelper.GenerateDocPatterns
이 도우미 함수는 문서 찾기를 호출하여 시스템에서 마이그레이션할 수 있는 모든 파일을 검색합니다. System 또는 User 컨텍스트에서 함수를 호출하면 검색 범위를 좁힐 수 있습니다.
설정 | 필수 여부 | Value |
---|---|---|
ScanProgramFiles |
필수 아님(기본값 = FALSE) |
TRUE 또는 FALSE일 수 있습니다. ScanProgramFiles 매개 변수는 문서 찾기에서 Program Files 디렉터리를 검색하여 알려진 응용 프로그램에 대해 등록된 파일 확장명을 수집할지 여부를 결정합니다. 예를 들어 TRUE로 설정하면 .jpg가 Photoshop에 등록된 파일 확장명인 경우 Photoshop 디렉터리에서 .jpg 파일을 찾아 마이그레이션합니다. |
IncludePatterns |
필수 아님(기본값 = TRUE) |
TRUE 또는 FALSE일 수 있습니다. TRUE이면 include 패턴이 생성되며 <include> 요소 아래에 추가할 수 있습니다. FALSE이면 exclude 패턴이 생성되며 <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>
단순 실행 스크립트
다음 스크립트에는 반환 값이 없습니다. <processing> 요소 안에 있는 <script> 요소에 다음 오류를 사용할 수 있습니다.
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의 하위 키입니다. 선택적 매개 변수는 StartService API로 전달됩니다(있는 경우). 자세한 내용은 이 Microsoft 웹 사이트를 참조하세요.
**StopService (ServiceName)**으로 식별된 서비스를 중지합니다. ServiceName. ServiceName은 지정된 서비스에 대한 데이터가 저장되는 HKLM\System\CurrentControlSet\Services의 하위 키입니다.
SyncSCM(ServiceShortName).. 마이그레이션 엔진에서 변경한 후 (HKLM\System\CurrentControlSet\Services\ServiceShortName [Start]) 레지스트리에서 시작 유형 값을 읽고 SCM(서비스 제어 관리자)을 새 값과 동기화합니다.
<text>
<text> 요소를 사용하여 마이그레이션 .xml 파일 중 하나에 있는 환경 변수의 값을 설정할 수 있습니다.
발생 횟수: 각 <variable> 요소에서 한 번 발생
부모 요소: <variable>
자식 요소: 없음
구문:
<text>NormalText</text>
설정 | Value |
---|---|
NormalText |
일반 텍스트로 해석됩니다. |
예를 들면 다음과 같습니다.
<variable name="QuickTime5or6DataSys">
<text>%CSIDL_COMMON_APPDATA%\QuickTime</text>
</variable>
<unconditionalExclude>
<unconditionalExclude> 요소는 마이그레이션 .xml 파일 중 하나 또는 Config.xml 파일에 있는 다른 include 규칙에 관계없이 지정한 파일 및 레지스트리 값을 마이그레이션에서 제외합니다. 이 요소가 다른 모든 규칙보다 우선 적용되기 때문에 여기서 선언된 개체는 마이그레이션되지 않습니다. 예를 들어 .mp3 파일을 포함하는 명시적 <include> 규칙이 있는 경우 이 옵션을 통해 해당 파일을 제외하도록 지정하면 파일이 마이그레이션되지 않습니다.
원본 컴퓨터에서 .mp3 파일을 모두 제외하려는 경우 이 요소를 사용합니다. 또는 다른 방법으로 C:\UserData를 백업하는 경우 전체 폴더를 마이그레이션에서 제외할 수 있습니다. 그러나 응용 프로그램에 필요한 파일을 제외할 경우 대상 컴퓨터에서 응용 프로그램이 제대로 작동하지 않을 수 있으므로 이 요소를 사용할 때는 주의해야 합니다.
발생 횟수: 제한 없음
부모 요소: <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>
<variable> 요소는 <environment> 요소에 필요합니다. 각 <variable> 요소에 대해 <objectSet>, <script> 또는 <text> 요소가 하나씩 있어야 합니다. <variable> 요소의 콘텐츠는 환경 변수에 텍스트 값을 할당합니다. 이 요소에는 다음 세 가지 옵션이 있습니다.
<variable> 요소에 <text> 요소가 포함된 경우 variable 요소의 값은 <text> 요소의 값이 됩니다.
<variable> 요소에 <script> 요소가 포함되고 스크립트 호출 시 null이 아닌 문자열이 생성되는 경우 <variable> 요소의 값이 스크립트 호출 결과가 됩니다.
<variable> 요소에 <objectSet> 요소가 포함되고 <objectSet> 요소 평가 시 개체 패턴이 하나 이상 생성되는 경우 결과 개체 패턴과 일치하는 first 개체의 값이 variable 요소의 값이 됩니다.
발생 횟수: 제한 없음
부모 요소: <environment>
필수 자식 요소: <text>, <script> 또는 <objectSet>
구문:
<variable name="ID" remap=TRUE|FALSE>
</variable>
설정 | 필수 여부 | Value |
---|---|---|
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> 요소는 구성 요소의 버전을 정의하지만 마이그레이션에 영향을 주지 않습니다.
발생 횟수: 0 또는 1회
부모 요소: <component>
자식 요소: 없음
구문:
<version>ComponentVersion</version>
설정 | 필수 여부 | Value |
---|---|---|
ComponentVersion |
필수 |
구성 요소의 버전으로, 패턴을 포함할 수 있습니다. |
예를 들면 다음과 같습니다.
<version>4.*</version>
<windowsObjects>
<windowsObjects> 요소는 내부 USMT에만 사용되므로 사용하지 마세요.
부록
위치 지정
인코딩된 위치 지정. 모든 도우미 함수에 사용되는 인코딩된 위치는 개체 이름을 나타내는 명확한 문자열 표현입니다. 노드 부분으로 구성되며 필요에 따라 대괄호로 묶인 리프가 뒤에 올 수 있습니다. 이렇게 하면 노드와 리프를 명확하게 구분할 수 있습니다.
예를 들어 C:\Windows\Notepad.exe 파일은 다음과 같이 지정합니다.
c:\Windows[Notepad.exe]
. 마찬가지로, C:\Windows\System32 디렉터리는 다음과 같이 지정합니다.c:\Windows\System32
. 이때는 [] 구문이 없습니다.레지스트리도 유사한 방식으로 표현합니다. 레지스트리 키의 기본값은 빈 [] 구문으로 표현됩니다. 예를 들어 HKLM\SOFTWARE\MyKey 레지스트리 키의 기본값은
HKLM\SOFTWARE\MyKey[]
입니다.위치 패턴 지정. 실제 위치를 지정할 때와 유사한 방식으로 위치 패턴을 지정합니다. 단, 노드 부분과 리프 부분에 모두 패턴을 사용할 수 있다는 차이가 있습니다. 그러나 노드의 패턴이 리프까지 확장되지는 않습니다.
예를 들어
c:\Windows\*
패턴은 Windows 디렉터리 및 모든 하위 디렉터리와 일치합니다. 그러나 해당 디렉터리의 파일은 일치되지 않습니다. 파일도 일치시키려면c:\Windows\*[*]
를 지정해야 합니다.
내부 USMT 함수
다음 함수는 내부 USMT에만 사용되므로 .xml 파일에 사용하지 마세요.
AntiAlias
ConvertScreenSaver
ConvertShowIEOnDesktop
ConvertToOfficeLangID
MigrateActiveDesktop
MigrateAppearanceUPM
MigrateDisplayCS
MigrateDisplaySS
MigrateIEAutoSearch
MigrateMouseUPM
MigrateSoundSysTray
MigrateTaskBarSS
SetPstPathInMapiStruc
올바른 버전 태그
다음 버전 태그는 다양한 도우미 함수에 사용할 수 있습니다.
"CompanyName"
"FileDescription"
"FileVersion"
"InternalName"
"LegalCopyright"
"OriginalFilename"
"ProductName"
"ProductVersion"
다음 버전 태그에는 비교할 수 있는 값이 포함됩니다.
"FileVersion"
"ProductVersion"