Libreria di elementi XML
Questo articolo descrive gli elementi XML e le funzioni helper che possono essere usate per creare i file di migrazione.xml da usare con lo strumento usmt (User State Migration Tool). Questo articolo presuppone una conoscenza di base del codice XML.
Oltre agli elementi XML e alle funzioni helper, questo articolo:
- Descrive come specificare percorsi e percorsi codificati.
- Le funzioni che sono solo per USMT interno usano.
- Tag di versione che possono essere usati con le funzioni helper.
Elementi e funzioni helper
Nella tabella seguente vengono descritti gli elementi XML e le funzioni helper che è possibile usare con USMT.
<addObjects>
L'elemento <addObjects> emula l'esistenza di uno o più oggetti nel computer di origine. Gli elementi dell'oggetto> figlio< forniscono i dettagli degli oggetti emulati. Se il contenuto è un <elemento script> , il risultato della chiamata è una matrice di oggetti.
Numero di occorrenze: illimitato
Elementi padre:<regole>
Elementi figlio obbligatori:<oggetto> Inoltre, <la posizione> e <l'attributo> devono essere specificati come elementi figlio di questo <elemento oggetto> .
Elementi figlio facoltativi:<condizioni>, <condizione>, <script>
Sintassi:
<addObjects>
</addObjects>
L'esempio seguente è tratto dal MigApp.xml
file :
<addObjects>
<object>
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [UpgradeVersion]</location>
<attributes>DWORD</attributes>
<bytes>0B000000</bytes>
</object>
<object>
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [Lang]</location>
<attributes>DWORD</attributes>
<bytes>00000000</bytes>
</object>
</addObjects>
<Attributi>
L'elemento <attributes> definisce gli attributi per una chiave o un file del Registro di sistema.
Numero di occorrenze: una volta per ogni <oggetto>
Elementi padre:<oggetto>
Elementi figlio: nessuno
Sintassi:
<attributes>Content</attributes>
Impostazione | Obbligatorio? | Value |
---|---|---|
Contenuto | Sì | Il contenuto dipende dal tipo di oggetto specificato.
|
L'esempio seguente è tratto dal MigApp.xml
file :
<object>
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [Lang]</location>
<attributes>DWORD</attributes>
<bytes>00000000</bytes>
</object>
<Byte>
L'elemento <byte> può essere specificato solo per i file perché, se <il percorso> corrisponde a una chiave del Registro di sistema o a una directory, i <byte> vengono ignorati.
Numero di occorrenze: zero o uno
Elementi padre:<oggetto>
Elementi figlio: nessuno
Sintassi:
<bytes string="Yes|No" expand="Yes|No">Content</bytes>
Impostazione | Obbligatorio? | Value |
---|---|---|
stringa | No, il valore predefinito è No | Determina se Il contenuto deve essere interpretato come stringa o come byte. |
expand | No (impostazione predefinita = Sì) | Quando il parametro expand è Sì, il contenuto dell'elemento <byte> viene prima espanso nel contesto del computer di origine e quindi interpretato. |
Contenuto | Sì | Dipende dal valore della stringa.
|
L'esempio seguente è tratto dal MigApp.xml
file :
<object>
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [Lang]</location>
<attributes>DWORD</attributes>
<bytes>00000000</bytes>
</object>
<commandLine>
L'elemento <commandLine> può essere usato per avviare o arrestare un servizio o un'applicazione prima o dopo l'esecuzione degli strumenti ScanState e LoadState .
Numero di occorrenze: illimitato
Elementi padre:<externalProcess>
Elementi figlio: nessuno
Sintassi:
<commandLine>CommandLineString</commandLine>
Impostazione | Obbligatorio? | Value |
---|---|---|
CommandLineString | Sì | Riga di comando valida. |
<componente>
L'elemento <componente> è necessario in un file di.xml personalizzato. Questo elemento definisce il costrutto più semplice di un file .xml di migrazione. Nel file, MigApp.xml
ad esempio, Microsoft Office 2016 è un componente che contiene un altro componente, Microsoft Office Access 2016. Gli elementi figlio possono essere usati per definire il componente.
Un componente può essere annidato all'interno di un altro componente; Ovvero, l'elemento <componente> può essere un elemento figlio dell'elemento <role> all'interno dell'elemento componente<> in due casi:
- Quando l'elemento del componente> padre< è un contenitore
- Se l'elemento del componente> figlio< ha lo stesso ruolo dell'elemento componente> padre<.
Numero di occorrenze: Illimitato
Elementi padre:<migrazione>, <ruolo>
Elementi figlio obbligatori:<role>, <displayName>
Elementi figlio facoltativi:<produttore>, <versione>, <descrizione>, <percorsi>, <icona>, <ambiente>, <estensioni>
Sintassi:
<component type="System|Application|Device|Documents" context="User|System|UserAndSystem" defaultSupported="TRUE|FALSE|YES|NO"
hidden="Yes|No">
</component>
Impostazione | Obbligatorio? | Valore |
---|---|---|
tipo | Sì | Gli elementi seguenti possono essere usati per raggruppare le impostazioni e definire il tipo del componente.
|
contesto | No Default = UserAndSystem |
Definisce l'ambito di questo parametro; ovvero se elaborare questo componente nel contesto dell'utente specifico, nell'intero sistema operativo o in entrambi. L'ambito più grande possibile viene impostato dall'elemento componente<>. Ad esempio, se un <elemento componente> ha un contesto User e un <elemento rules> ha un contesto UserAndSystem, l'elemento <rules> agirebbe come se avesse un contesto user. Se un <elemento rules> ha un contesto di System, funzionerebbe come se l'elemento <rules> non fosse presente.
|
defaultSupported | No (impostazione predefinita = TRUE) |
Può essere TRUE, FALSE, YES o NO. Se questo parametro è FALSE (o NO), la migrazione del componente non viene eseguita a meno che non sia presente un componente equivalente nel computer di destinazione. Quando type="System" e defaultSupported="FALSE", la migrazione delle impostazioni non viene eseguita a meno che non sia presente un componente equivalente nei file .xml specificati nella LoadState.exe riga di comando. Ad esempio, il file predefinito MigSys.xml contiene componenti con type="System" e defaultSupported="FALSE". Se questo file viene specificato nella ScanState.exe riga di comando, è necessario specificare anche il file nella LoadState.exe riga di comando per la migrazione delle impostazioni. Il file deve essere specificato in entrambe le righe di comando perché lo strumento LoadState deve rilevare un componente equivalente. Ovvero, il componente deve avere lo stesso URL di migrazione del file .xml e un nome visualizzato identico oppure lo strumento LoadState non esegue la migrazione di tali impostazioni dall'archivio. Questa impostazione è utile perché un archivio può essere usato per i computer di destinazione che sono la stessa o diversa versione di Windows del computer di origine. |
nascosto | Questo parametro è destinato solo all'uso interno di USMT. |
Per un esempio, vedere uno qualsiasi dei file di migrazione predefiniti.xml .
<condizione>
Anche se l'elemento <condizione> negli <elementi detect>, <objectSet> e <addObjects> è ancora supportato, Microsoft consiglia di non usare più l'elemento <condizione> perché potrebbe essere deprecato nelle versioni future di USMT. Se l'elemento <condition> è deprecato, richiederebbe una riscrittura di tutti gli script che usano l'elemento <condition> . Se invece è necessario usare una condizione all'interno degli <elementi objectSet> e <addObjects>, Microsoft consiglia di usare l'elemento condizioni> più potente<. L'elemento <conditions> consente la formulazione di istruzioni booleane complesse.
L'elemento <condizione> ha un risultato booleano. Questo elemento può essere usato per specificare le condizioni in cui viene valutato l'elemento padre. Se una delle condizioni presenti restituisce FALSE, l'elemento padre non viene valutato.
Numero di occorrenze: illimitato.
Elementi padre:<conditions>, <detect>, <objectSet>, <addObjects>
Elementi figlio: nessuno
Funzioni helper: Con questo elemento è possibile utilizzare le funzioni di condizione> seguenti<:
DoesOSMatch
,IsNative64Bit()
,IsOSLaterThan
,IsOSEarlierThan
,DoesObjectExist
,DoesFileVersionMatch
,IsFileVersionAbove
,IsFileVersionBelow
, ,IsSystemContext
,DoesStringContentEqual
, ,DoesStringContentContain
,IsSameObject
,IsSameContent
eIsSameStringContent
.
Sintassi:
<condition negation="Yes|No">ScriptName</condition>
Impostazione | Obbligatorio? | Value |
---|---|---|
negazione | No Default = No |
"Sì" inverte il valore True/False della condizione. |
Nome Script | Sì | Script definito all'interno di questa sezione di migrazione. |
Nell'esempio di codice seguente, ad esempio, gli elementi della <condizione>, A e B, vengono uniti dall'operatore AND perché si trovano in sezioni di condizioni> separate<:
<detection>
<conditions>
<condition>A</condition>
</conditions>
<conditions operation="AND">
<condition>B</condition>
</conditions>
</detection>
Tuttavia, nell'esempio di codice seguente, gli elementi della <condizione>, A e B, vengono uniti dall'operatore OR perché si trovano nella stessa <sezione delle condizioni>.
<detection>
<conditions>
<condition>A</condition>
<condition>B</condition>
</conditions>
</detection>
<funzioni condition>
Le <funzioni della condizione> restituiscono un valore booleano. Questi elementi possono essere usati nelle <condizioni addObjects> .
Funzioni della versione del sistema operativo
DoesOSMatch
Tutte le corrispondenze non fanno distinzione tra maiuscole e minuscole.
Sintassi:
DoesOSMatch("OSType","OSVersion")
Impostazione Obbligatorio? Value OSType Sì L'unico valore valido per questa impostazione è NT. Tuttavia, questa impostazione deve essere impostata affinché le funzioni della <condizione> funzionino correttamente. OSVersion Sì La versione principale, la versione secondaria, il numero di build e la versione corretta del dischetto del servizio separati da punti. Ad esempio: 5.0.2600.Service Pack 1
. È anche possibile specificare una specifica parziale della versione con un modello come5.0.*
.Ad esempio:
<condition>MigXmlHelper.DoesOSMatch("NT","\*")</condition>
IsNative64Bit
La funzione IsNative64Bit restituisce TRUE se il processo di migrazione è in esecuzione come processo nativo a 64 bit; ovvero un processo in esecuzione in un sistema a 64 bit senza Windows in Windows (WOW). In caso contrario, restituisce FALSE.
IsOSLaterThan
Tutti i confronti non fanno distinzione tra maiuscole e minuscole.
Sintassi:
IsOSLaterThan("OSType","OSVersion")
Impostazione Obbligatorio? Value OSType Sì Può essere 9x o NT. Se OSType non corrisponde al tipo del sistema operativo corrente, restituisce FALSE. Ad esempio, se il sistema operativo corrente è basato su Windows NT e OSType è "9x", il risultato è FALSE. OSVersion Sì La versione principale, la versione secondaria, il numero di build e la versione corretta del dischetto del servizio separati da punti. Ad esempio: 5.0.2600.Service Pack 1
. È anche possibile specificare una specifica parziale della versione, ma non è consentito alcun modello, ad5.0
esempio .
La funzione IsOSLaterThan restituisce TRUE se il sistema operativo corrente è successivo o uguale a OSVersion.Ad esempio:
<condition negation="Yes">MigXmlHelper.IsOSLaterThan("NT","6.0")</condition>
IsOSEarlierThan
Tutti i confronti non fanno distinzione tra maiuscole e minuscole.
Sintassi:
IsOSEarlierThan("OSType","OSVersion")
Impostazione Obbligatorio? Value OSType Sì Può essere 9x o NT. Se OSType non corrisponde al tipo del sistema operativo corrente, restituisce FALSE. Ad esempio, se il sistema operativo corrente è basato su Windows NT e OSType è "9x", il risultato è FALSE. OSVersion Sì La versione principale, la versione secondaria, il numero di build e la versione corretta del dischetto del servizio separati da punti. Ad esempio: 5.0.2600.Service Pack 1
. È anche possibile specificare una specifica parziale della versione, ma non è consentito alcun modello, ad5.0
esempio .
La funzione IsOSEarlierThan restituisce TRUE se il sistema operativo corrente è precedente a OSVersion.
Funzioni di contenuto dell'oggetto
DoesObjectExist
La funzione DoesObjectExist restituisce TRUE se esiste un oggetto che corrisponde al modello di posizione. In caso contrario, restituisce FALSE. Il modello di posizione viene espanso prima di tentare l'enumerazione.
Sintassi:
DoesObjectExist("ObjectType","EncodedLocationPattern")
Impostazione Obbligatorio? Value ObjectType Sì Definisce il tipo di oggetto. Può essere File o Registro di sistema. EncodedLocationPattern Sì Modello di posizione. Le variabili di ambiente sono consentite. Per un esempio di questo elemento, vedere il
MigApp.xml
file .DoesFileVersionMatch
Il controllo dei criteri non fa distinzione tra maiuscole e minuscole.
Sintassi:
DoesFileVersionMatch("EncodedFileLocation","VersionTag","VersionValue")
Impostazione Obbligatorio? Value EncodedFileLocation Sì Modello di percorso per il file selezionato. Le variabili di ambiente sono consentite. VersionTag Sì Valore del tag di versione selezionato. Valore versione Sì Modello di stringa. Ad esempio, "Microsoft*". Ad esempio:
<condition>MigXmlHelper.DoesFileVersionMatch("%MSNMessengerInstPath%\\msnmsgr.exe","ProductVersion","6.\*")</condition> <condition>MigXmlHelper.DoesFileVersionMatch("%MSNMessengerInstPath%\\msnmsgr.exe","ProductVersion","7.\*")</condition>
IsFileVersionAbove
La funzione IsFileVersionAbove restituisce TRUE se la versione del file è superiore a VersionValue.
Sintassi:
IsFileVersionAbove("EncodedFileLocation","VersionTag","VersionValue")
Impostazione Obbligatorio? Value EncodedFileLocation Sì Modello di percorso per il file selezionato. Le variabili di ambiente sono consentite. VersionTag Sì Valore del tag di versione selezionato. Valore versione Sì Valore con cui eseguire il confronto. Non è possibile specificare un modello. IsFileVersionBelow
Sintassi:
IsFileVersionBelow("EncodedFileLocation","VersionTag","VersionValue")
Impostazione Obbligatorio? Value EncodedFileLocation Sì Modello di percorso per il file selezionato. Le variabili di ambiente sono consentite. VersionTag Sì Valore del tag di versione selezionato. Valore versione Sì Valore con cui eseguire il confronto. Non è possibile specificare un modello. IsSystemContext
La funzione IsSystemContext restituisce TRUE se il contesto corrente è "System". In caso contrario, restituisce FALSE.
Sintassi:
IsSystemContext()
DoesStringContentEqual
La funzione DoesStringContentEqual restituisceTRUE se la rappresentazione di stringa dell'oggetto specificato è identica a
StringContent
.Sintassi:
DoesStringContentEqual("ObjectType","EncodedLocation","StringContent")
Impostazione Obbligatorio? Value ObjectType Sì Definisce il tipo di oggetto . Può essere File o Registro di sistema. EncodedLocationPattern Sì Posizione codificata per l'oggetto esaminato. È possibile specificare variabili di ambiente. StringContent Sì Stringa su cui viene eseguito il controllo. Ad esempio:
<condition negation="Yes">MigXmlHelper.DoesStringContentEqual("File","%USERNAME%","")</condition>
DoesStringContentContain
La funzione DoesStringContentContain restituisce TRUE se è presente almeno un'occorrenza di StrToFind nella rappresentazione di stringa dell'oggetto.
Sintassi:
DoesStringContentContain("ObjectType","EncodedLocation","StrToFind")
Impostazione Obbligatorio? Value ObjectType Sì Definisce il tipo di oggetto . Può essere File o Registro di sistema. EncodedLocationPattern Sì Posizione codificata per l'oggetto esaminato. È possibile specificare variabili di ambiente. StrToFind Sì Stringa cercata all'interno del contenuto dell'oggetto specificato. IsSameObject
La funzione IsSameObject restituisceTRUE se le posizioni con codifica specificata si restituiscono nello stesso oggetto fisico. In caso contrario, restituisce FALSE.
Sintassi:
IsSameObject("ObjectType","EncodedLocation1","EncodedLocation2")
Impostazione Obbligatorio? Value ObjectType Sì Definisce il tipo di oggetto . Può essere File o Registro di sistema. EncodedLocation1 Sì Percorso codificato per il primo oggetto. È possibile specificare variabili di ambiente. EncodedLocation2 Sì Posizione codificata per il secondo oggetto. È possibile specificare variabili di ambiente. Ad esempio:
<objectSet> <condition negation="Yes">MigXmlHelper.IsSameObject("File","%CSIDL_FAVORITES%","%CSIDL_COMMON_FAVORITES%")</condition> <pattern type="File">%CSIDL_FAVORITES%\* [*]</pattern> </objectSet>
IsSameContent
La funzione IsSameContent restituisceTRUE se gli oggetti specificati hanno lo stesso contenuto. In caso contrario, restituisce FALSE. Il contenuto viene confrontato byte per byte.
Sintassi:
IsSameContent("ObjectType1","EncodedLocation1","ObjectType2","EncodedLocation2")
Impostazione Obbligatorio? Value ObjectType1 Sì Definisce il tipo del primo oggetto. Può essere File o Registro di sistema. EncodedLocation1 Sì Percorso codificato per il primo oggetto. È possibile specificare variabili di ambiente. ObjectType2 Sì Definisce il tipo del secondo oggetto. Può essere File o Registro di sistema. EncodedLocation2 Sì Posizione codificata per il secondo oggetto. È possibile specificare variabili di ambiente. IsSameStringContent
La funzione IsSameStringContent restituisceTRUE se gli oggetti specificati hanno lo stesso contenuto. In caso contrario, restituisce FALSE. Il contenuto viene interpretato come stringa.
Sintassi:
IsSameStringContent("ObjectType1","EncodedLocation1","ObjectType2","EncodedLocation2")
Impostazione Obbligatorio? Value ObjectType1 Sì Definisce il tipo del primo oggetto. Può essere File o Registro di sistema. EncodedLocation1 Sì Percorso codificato per il primo oggetto. È possibile specificare variabili di ambiente. ObjectType2 Sì Definisce il tipo del secondo oggetto. Può essere File o Registro di sistema. EncodedLocation2 Sì Posizione codificata per il secondo oggetto. È possibile specificare variabili di ambiente.
<Condizioni>
L'elemento <conditions> restituisce un risultato booleano utilizzato per specificare le condizioni in cui viene valutato l'elemento padre. USMT valuta gli elementi figlio e quindi unisce i risultati usando gli operatori AND o OR in base al parametro dell'operazione.
Numero di occorrenze: Illimitato all'interno di un altro <elemento conditions> . Limitato a un'occorrenza in <rilevamento>, <regole>, <addObjects> e <objectSet>
Elementi padre:<condizioni>, <rilevamento>, <ambiente>, <regole>, <addObjects> e <objectSet>
Elementi figlio:<condizioni>, <condizione>
Sintassi:
<conditions operation="AND|OR">
</conditions>
Impostazione | Obbligatorio? | Value |
---|---|---|
operazione | No, default = AND | Definisce l'operazione booleana eseguita sui risultati ottenuti dagli elementi figlio. |
L'esempio seguente è tratto dal MigApp.xml
file :
<environment name="GlobalEnv">
<conditions>
<condition negation="Yes">MigXmlHelper.IsNative64Bit()</condition>
</conditions>
<variable name="HklmWowSoftware">
<text>HKLM\Software</text>
</variable>
</environment>
<contenuto>
L'elemento <contenuto> può essere usato per specificare un elenco di modelli di oggetto per ottenere un set di oggetti dal computer di origine. Ogni <objectSet> all'interno di un <elemento di contenuto> viene valutato. Per ogni elenco di modelli di oggetti risultanti, gli oggetti corrispondenti vengono enumerati e il relativo contenuto viene filtrato in base al parametro di filtro. La matrice di stringhe risultante è l'output per l'elemento di< contenuto>. Lo script di filtro restituisce una matrice di posizioni. L'elemento objectSet> padre< può contenere più elementi di contenuto> figlio<.
Numero di occorrenze: illimitato
Elementi padre:<objectSet>
Elementi figlio:<objectSet>
Funzioni helper: Con questo elemento è possibile usare le funzioni di contenuto> seguenti<:
ExtractSingleFile
,ExtractMultipleFiles
eExtractDirectory
.
Sintassi:
<content filter="ScriptInvocation">
</content>
Impostazione | Obbligatorio? | Value |
---|---|---|
filter | Sì | Script seguito da un numero qualsiasi di argomenti stringa separati da una virgola e racchiusi tra parentesi. Ad esempio: MyScripts.AScript ("Arg1","Arg2") .Lo script viene chiamato per ogni oggetto enumerato dai set di oggetti nella <regola di inclusione> . Lo script di filtro restituisce un valore booleano. Se il valore restituito è TRUE, viene eseguita la migrazione dell'oggetto. Se è FALSE, non viene eseguita la migrazione. |
<funzioni di contenuto>
Le funzioni seguenti generano modelli dal contenuto di un oggetto . Queste funzioni vengono chiamate per ogni oggetto che l'elemento ObjectSet> padre< sta enumerando.
ExtractSingleFile
Se il valore del Registro di sistema è multi-SZ, viene elaborato solo il primo segmento. Il modello restituito è il percorso codificato per un file che deve esistere nel sistema. Se la specifica è corretta nel valore del Registro di sistema, ma il file non esiste, questa funzione restituisce NULL.
Sintassi:
ExtractSingleFile(Separators,PathHints)
Impostazione Obbligatorio? Value Separatori Sì Elenco di possibili separatori che potrebbero seguire la specifica del file in questo nome di valore del Registro di sistema. Ad esempio, se il contenuto è "C:\Windows\Notepad.exe,-2", il separatore è una virgola. È possibile specificare NULL. PathHints Sì Elenco di percorsi aggiuntivi, separati da due punti ( ;
), in cui la funzione cerca un file corrispondente al contenuto corrente. Ad esempio, se il contenuto è "Notepad.exe" e il percorso è la variabile di ambiente %Path%, la funzione trova Notepad.exe in%windir%
e restituisce "c:\Windows [Notepad.exe]". È possibile specificare NULL.Ad esempio:
<content filter="MigXmlHelper.ExtractSingleFile(',','%system%')">
e
<content filter="MigXmlHelper.ExtractSingleFile(NULL,'%CSIDL_COMMON_FONTS%')">
ExtractMultipleFiles
La funzione ExtractMultipleFiles restituisce più modelli, uno per ogni file presente nel contenuto del valore del Registro di sistema specificato. Se il valore del Registro di sistema è MULTI-SZ, il separatore MULTI-SZ viene considerato un separatore per impostazione predefinita. Pertanto, per MULTI-SZ, l'argomento <Separatori> deve essere NULL.
I modelli restituiti sono i percorsi codificati per i file che devono esistere nel computer di origine. Se la specifica è corretta nel valore del Registro di sistema, ma il file non esiste, non viene incluso nell'elenco risultante.
Sintassi:
ExtractMultipleFiles(Separators,PathHints)
Impostazione Obbligatorio? Value Separatori Sì Elenco di possibili separatori che potrebbero seguire la specifica del file in questo nome di valore del Registro di sistema. Ad esempio, se il contenuto è "C:\Windows\Notepad.exe,-2", il separatore è una virgola. Questo parametro deve essere NULL durante l'elaborazione dei valori del Registro di sistema MULTI-SZ . PathHints Sì Elenco di percorsi aggiuntivi, separati da due punti ( ;
), in cui la funzione cerca un file corrispondente al contenuto corrente. Ad esempio, se il contenuto è "Notepad.exe" e il percorso è la variabile di ambiente %Path%, la funzione trova Notepad.exe in%windir%
e restituisce "c:\Windows [Notepad.exe]". È possibile specificare NULL.ExtractDirectory
La funzione ExtractDirectory restituisce un modello che rappresenta il percorso codificato per una directory che deve esistere nel computer di origine. Se la specifica è corretta nel valore del Registro di sistema, ma la directory non esiste, questa funzione restituisce NULL. Se sta elaborando un valore del Registro di sistema multi-SZ, viene elaborato solo il primo segmento.
Sintassi:
ExtractDirectory(Separators,LevelsToTrim,PatternSuffix)
Impostazione Obbligatorio? Value Separatori No Elenco di possibili separatori che potrebbero seguire la specifica del file in questo nome di valore del Registro di sistema. Ad esempio, se il contenuto è "C:\Windows\Notepad.exe,-2", il separatore è una virgola. È necessario specificare NULL durante l'elaborazione dei valori del Registro di sistema MULTI-SZ . LevelsToTrim Sì Numero di livelli da eliminare dalla fine della specifica della directory. Usare questa funzione per estrarre una directory radice quando è presente un valore del Registro di sistema che punta all'interno di tale directory radice in un percorso noto. PatternSuffix Sì Modello da aggiungere alla specifica della directory. Ad esempio: * [*]
.Ad esempio:
<objectSet> <content filter='MigXmlHelper.ExtractDirectory (NULL, "1")'> <objectSet> <pattern type="Registry">%HklmWowSoftware%\Classes\Software\RealNetworks\Preferences\DT_Common []</pattern> </objectSet> </content> </objectSet>
<contentModify>
L'elemento <contentModify> modifica il contenuto di un oggetto prima che l'oggetto venga scritto nel computer di destinazione. Per ogni <elemento contentModify> possono essere presenti più <elementi objectSet> . Questo elemento restituisce il nuovo contenuto dell'oggetto che viene elaborato.
Numero di occorrenze: Illimitato
Elementi padre:<regole>
Elementi figlio obbligatori:<objectSet>
Funzioni helper: con questo elemento è possibile usare le funzioni contentModify> seguenti<: ConvertToDWORD, ConvertToString, ConvertToBinary, KeepExisting, OffsetValue, SetValueByTable, MergeMultiSzContent e MergeDelimitedContent.
Sintassi:
<contentModify script="ScriptInvocation">
</contentModify>
Impostazione | Obbligatorio? | Value |
---|---|---|
copione | Sì | Script seguito da un numero qualsiasi di argomenti stringa separati da una virgola e racchiusi tra parentesi. Per esempio MyScripts.AScript ("Arg1","Arg2"). Lo script viene chiamato per ogni oggetto enumerato dai set di oggetti nella regola di inclusione. Lo script di filtro restituisce un valore booleano. Se il valore restituito è TRUE, viene eseguita la migrazione dell'oggetto. Se è FALSE, non viene eseguita la migrazione. |
<Funzioni contentModify>
Le funzioni seguenti modificano il contenuto degli oggetti durante la migrazione. Queste funzioni vengono chiamate per ogni oggetto che l'elemento ObjectSet> padre< sta enumerando.
ConvertToDWORD
La funzione ConvertToDWORD converte il contenuto dei valori del Registro di sistema enumerati dall'elemento ObjectSet> padre< in un DWORD. Ad esempio, ConvertToDWORD converte la stringa
"1"
in DWORD0x00000001
. Se la conversione non riesce, viene applicato il valore di DefaultValueOnError .Sintassi:
ConvertToDWORD(DefaultValueOnError)
Impostazione Obbligatorio? Value DefaultValueOnError No Valore scritto nel nome del valore se la conversione ha esito negativo. È possibile specificare NULL e 0
viene scritto se la conversione ha esito negativo.ConvertToString
La funzione ConvertToString converte il contenuto dei valori del Registro di sistema che corrispondono all'elemento ObjectSet> padre< in una stringa. Ad esempio, converte la DWORD
0x00000001
nella stringa "1". Se la conversione non riesce, viene applicato il valore di DefaultValueOnError .Sintassi:
ConvertToString(DefaultValueOnError)
Impostazione Obbligatorio? Value DefaultValueOnError No Valore scritto nel nome del valore se la conversione ha esito negativo. È possibile specificare NULL e 0
viene scritto se la conversione ha esito negativo.Ad esempio:
<contentModify script="MigXmlHelper.ConvertToString('1')"> <objectSet> <pattern type="Registry">HKCU\Control Panel\Desktop [ScreenSaveUsePassword]</pattern> </objectSet> </contentModify>
ConvertToBinary
La funzione ConvertToBinary converte il contenuto dei valori del Registro di sistema che corrispondono all'elemento ObjectSet> padre< in un tipo binario.
Sintassi:
ConvertToBinary ()
OffsetValue
La funzione OffsetValue aggiunge o sottrae Value dal valore dell'oggetto di cui è stata eseguita la migrazione e quindi scrive nuovamente il risultato nel valore del Registro di sistema nel computer di destinazione. Ad esempio, se l'oggetto di cui è stata eseguita la migrazione è un DWORD con valore pari
14
a e Value è "-2", il valore del Registro di sistema sarà12
nel computer di destinazione.Sintassi:
OffsetValue(Value)
Impostazione Obbligatorio? Value Valore Sì Rappresentazione di stringa di un valore numerico. Può essere positivo o negativo. Ad esempio: OffsetValue(2)
.SetValueByTable
La funzione SetValueByTable corrisponde al valore dal computer di origine alla tabella di origine. Se il valore è presente, viene applicato il valore equivalente nella tabella di destinazione. Se il valore non è presente o se la tabella di destinazione non ha alcun valore equivalente, viene applicato DefaultValueOnError .
Sintassi:
SetValueByTable(SourceTable,DestinationTable,DefaultValueOnError)
Impostazione Obbligatorio? Value SourceTable Sì Elenco di valori separati da virgole possibili per i valori del Registro di sistema di origine. DestinationTable No Elenco di valori tradotti separati da virgole. DefaultValueOnError No Valore applicato al computer di destinazione se uno dei due - Il valore per il computer di origine non corrisponde a SourceTable
- DestinationTable non ha alcun valore equivalente.
Se DefaultValueOnError è NULL, il valore non viene modificato nel computer di destinazione.KeepExisting
La funzione KeepExisting può essere usata in caso di conflitti nel computer di destinazione. Questa funzione mantiene (non sovrascrive) gli attributi specificati per l'oggetto presente nel computer di destinazione.
Sintassi:
KeepExisting("OptionString","OptionString","OptionString",…)
Impostazione Obbligatorio? Value OptionString Sì OptionString può essere Security, TimeFields o FileAttrib:Letter. È possibile specificare uno di ogni tipo di OptionStrings . Non specificare più OptionString con lo stesso valore. Se vengono specificati più Oggetti OptionString con lo stesso valore, viene mantenuta l'opzione più a destra di tale tipo. Ad esempio, non specificare ("FileAttrib:H", "FileAttrib:R") perché viene valutata solo la sola lettura. Specificare invece ("FileAttrib:HR") e gli attributi Hidden e Read-only vengono mantenuti nel computer di destinazione. - Sicurezza: mantiene il descrittore di sicurezza dell'oggetto di destinazione, se presente.
- TimeFields: mantiene i timestamp dell'oggetto di destinazione. Questo parametro è solo per i file.
-
FileAttrib:<Lettera>: mantiene il valore dell'attributo dell'oggetto di destinazione, ON o OFF, per il set specificato di attributi di file. Questo parametro è solo per i file. Di seguito non viene fatta distinzione tra maiuscole e minuscole, ma USMT ignorerà tutti i valori non validi, ripetuti o se è presente uno spazio dopo FileAttrib:. È possibile specificare qualsiasi combinazione degli attributi seguenti:
- A = Archivio
- C = compresso
- E = Crittografato
- H = Nascosto
- I = Non indicizzato contenuto
- O = Offline
- R = Read-Only
- S = Sistema
- T = Temporaneo
MergeMultiSzContent
La funzione MergeMultiSzContent unisce il contenuto MULTI-SZ dei valori del Registro di sistema enumerati dall'elemento ObjectSet> padre< con il contenuto dei valori del Registro di sistema equivalenti già presenti nel computer di destinazione.
Instruction
eString
rimuovere o aggiungere contenuto al multi-SZ risultante. Gli elementi duplicati vengono rimossi.Sintassi:
MergeMultiSzContent (Instruction,String,Instruction,String,…)
Impostazione Obbligatorio? Value Istruzione Sì Può essere uno dei valori seguenti: - Aggiungi. Aggiunge l'oggetto String corrispondente all'oggetto MULTI-SZ risultante, se non è già presente.
- Rimuovere. Rimuove l'oggetto String corrispondente dall'oggetto MULTI-SZ risultante.
Stringa Sì Stringa da aggiungere o rimuovere. MergeDelimitedContent
La funzione MergeDelimitedContent unisce il contenuto dei valori del Registro di sistema enumerati dall'elemento ObjectSet> padre< con il contenuto dei valori equivalenti del Registro di sistema già esistenti nel computer di destinazione. Il contenuto viene considerato un elenco di elementi separati da uno dei caratteri nel parametro Delimiters. Gli elementi duplicati vengono rimossi.
Sintassi:
MergeDelimitedContent(Delimiters,Instruction,String,…)
Impostazione Obbligatorio? Value Delimitatori Sì Singolo carattere utilizzato per separare il contenuto dell'oggetto in fase di elaborazione. Il contenuto viene considerato come un elenco di elementi separati dai delimitatori.
Ad esempio,"."
separa la stringa in base a un punto.Istruzione Sì Può essere uno dei valori seguenti: - Aggiungi: aggiunge string al multi-SZ risultante, se non è già presente.
- Rimuovi: rimuove String dall'oggetto MULTI-SZ risultante.
Stringa Sì Stringa da aggiungere o rimuovere.
<descrizione>
L'elemento <description> definisce una descrizione per il componente, ma non influisce sulla migrazione.
Numero di occorrenze: zero o uno
Elementi padre:<componente>
Elementi figlio: nessuno
Sintassi:
<description>ComponentDescription</description>
Impostazione | Obbligatorio? | Value |
---|---|---|
ComponentDescription | Sì | Descrizione del componente. |
Nell'esempio di codice seguente viene illustrato come l'elemento <description> definisce la descrizione "Componente personalizzato":
<description>My custom component<description>
<destinationCleanup>
L'elemento< destinationCleanup> elimina gli oggetti, ad esempio file e chiavi del Registro di sistema, dal computer di destinazione prima di applicare gli oggetti dal computer di origine. Questo elemento viene valutato solo quando lo strumento LoadState viene eseguito nel computer di destinazione. Ovvero, questo elemento viene ignorato dallo strumento ScanState .
Importante
Usare questa opzione con estrema cautela perché eliminerà gli oggetti dal computer di destinazione.
Per ogni <elemento destinationCleanup> , possono essere presenti più <elementi objectSet> . Un uso comune per questo elemento è se nel computer di origine è presente una chiave del Registro di sistema mancante, ma è comunque necessario eseguire la migrazione del componente. In questo caso, tutte le chiavi del Registro di sistema del componente possono essere eliminate prima di eseguire la migrazione delle chiavi del Registro di sistema di origine. L'eliminazione di tutte le chiavi del Registro di sistema del componente garantisce che, se nel computer di origine manca una chiave, tale chiave non sarà presente nel computer di destinazione.
Numero di occorrenze: Illimitato
Elementi padre:<regole>
Elementi figlio:<objectSet> (il computer di destinazione elimina tutti gli elementi figlio).
Sintassi:
<destinationCleanup filter=ScriptInvocation>
</destinationCleanup>
Impostazione | Obbligatorio? | Value |
---|---|---|
filter | Sì | Script seguito da un numero qualsiasi di argomenti stringa separati da una virgola e racchiusi tra parentesi. Ad esempio: MyScripts.AScript ("Arg1","Arg2") .Lo script viene chiamato per ogni oggetto enumerato dai set di oggetti nella regola di inclusione. Lo script di filtro restituisce un valore booleano. Se il valore restituito è TRUE, viene eseguita la migrazione dell'oggetto. Se è FALSE, non viene eseguita la migrazione. |
Ad esempio:
<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>
<rilevare>
Anche se l'elemento <detect> è ancora supportato, Microsoft consiglia di non usare più l'elemento <detect> perché potrebbe essere deprecato nelle versioni future di USMT. Se l'elemento <detect> è deprecato, richiederebbe una riscrittura di tutti gli script che usano l'elemento <detect> . Microsoft consiglia invece di usare l'elemento <di rilevamento> . L'elemento <di rilevamento> consente istruzioni booleane complesse più chiaramente formulate
L'elemento <detect> può essere usato per determinare se il componente è presente in un sistema. Se tutti gli elementi di rilevamento> figlio< all'interno di un <elemento di rilevamento> vengono risolti in TRUE, l'elemento <detect> viene risolto in TRUE. Se gli elementi di rilevamento> figlio< vengono risolti in FALSE, l'elemento di rilevamento> padre< viene risolto in FALSE. Se non è presente alcuna <sezione di rilevamento> degli elementi, USMT presuppone che il componente sia presente.
Per ogni <elemento di rilevamento> possono essere presenti più elementi di condizione> figlio< o <objectSet>, che vengono aggiunti logicamente da un operatore OR. Se almeno una condizione> o<un elementoobjectSet> restituisce TRUE, l'elemento detect restituisce TRUE.<<>
Numero di occorrenze: illimitato
Elementi padre:<rileva>, <namedElements>
Elementi figlio obbligatori:<condition>
Elementi figlio facoltativi:<objectSet>
Sintassi:
<detect name="ID" context="User|System|UserAndSystem">
</detect>
Impostazione | Obbligatorio? | Value |
---|---|---|
name | Sì, quando <il rilevamento> è figlio di <namedElements> No, quando <il rilevamento> è un elemento figlio da <rilevare> |
Quando viene specificato l'ID , gli elementi figlio non vengono elaborati. Vengono invece elaborati tutti gli altri <elementi di rilevamento> con lo stesso nome dichiarati all'interno dell'elemento <namedElements> . |
contesto | No (default = UserAndSystem) |
Definisce l'ambito di questo parametro, ovvero se elaborare questo componente nel contesto dell'utente specifico, nell'intero sistema operativo o in entrambi. L'ambito più grande possibile viene impostato dall'elemento componente. Ad esempio, se un <elemento componente> ha un contesto User e un <elemento rules> ha un contesto UserAndSystem, l'elemento <rules> si comporta come se avesse un contesto user. Se l'elemento <rules> avesse un contesto di System, funzionerebbe come se l'elemento <rules> non fosse presente.
|
Per esempi, vedere gli esempi per <il rilevamento>.
<Rileva>
Sebbene l'elemento <detects> sia ancora supportato, Microsoft consiglia di non usare più l'elemento <detects> perché potrebbe essere deprecato nelle versioni future di USMT. Se l'elemento <detects> è deprecato, richiederebbe una riscrittura di tutti gli script che usano l'elemento <detects> . Microsoft consiglia invece di usare l'elemento <di rilevamento> se l'elemento padre è <role> o <namedElements> oppure usare l'elemento <conditions> se l'elemento padre è <regole>. L'elemento <di rilevamento> consente istruzioni booleane complesse più chiaramente formulate e l'elemento <conditions> consente la formulazione di istruzioni booleane complesse.
L'elemento <detects> è un contenitore per uno o più <elementi di rilevamento> . Se tutti gli elementi figlio <rilevano> che all'interno di un oggetto rileva> che< l'elemento viene risolto in TRUE, <il> rilevamento viene risolto in TRUE. Se uno degli elementi di rilevamento> figlio< viene risolto in FALSE, <il> rilevamento viene risolto in FALSE. Per evitare che l'elemento <rileva> l'elemento da scrivere all'interno di un componente, creare l'elemento <detects> sotto l'elemento <namedElements> e quindi farvi riferimento. Se non è presente alcuna <sezione dell'elemento> di rilevamento, USMT presuppone che il componente sia presente. I risultati di ogni <elemento rileva> vengono uniti dall'operatore OR per formare la regola usata per rilevare l'elemento padre.
Sintassi:
<detects name="ID" context="User|System|UserAndSystem">
</detects>
Numero di occorrenze: Illimitato.
Elementi padre:<ruolo>, <regole>, <namedElements>
Elementi figlio necessari:<detect>
Impostazione | Obbligatorio? | Value |
---|---|---|
name | Sì, quando <rileva> è un elemento figlio di <namedElements> No, quando <rileva> è figlio di <un ruolo> o <di regole> |
Quando viene specificato l'ID, non vengono elaborati elementi di rilevamento> figlio<. Vengono invece elaborati tutti gli> altri< elementi con lo stesso nome dichiarati all'interno dell'elemento <namedElements>. |
contesto | No (default = UserAndSystem) |
Definisce l'ambito di questo parametro: se elaborare questo componente nel contesto dell'utente specifico, nell'intero sistema operativo o in entrambi. L'ambito più grande possibile viene impostato dall'elemento> componente<. Ad esempio, se un <elemento componente> ha un contesto User e un <elemento rules> ha un contesto UserAndSystem, l'elemento <rules> agirebbe come se avesse un contesto user. Se l'elemento <rules> avesse un contesto di System, funzionerebbe come se l'elemento <rules> non fosse presente.
Il parametro di contesto viene ignorato per <rilevare gli> elementi che si trovano all'interno <degli elementi delle regole> . |
L'esempio seguente proviene dal MigApp.xml
file .
<detects>
<detect>
<condition>MigXmlHelper.DoesFileVersionMatch("%Lotus123InstPath%\123w.exe","ProductVersion","9.*")</condition>
</detect>
<detect>
<condition>MigXmlHelper.DoesFileVersionMatch("%SmartSuiteInstPath%\smartctr.exe","ProductVersion","99.*")</condition>
</detect>
</detects>
<scoperta>
L'elemento <di rilevamento> è un contenitore per un <elemento conditions> . Il risultato degli elementi della condizione> figlio<, che si trovano sotto l'elemento <conditions>, determina il risultato di questo elemento. Ad esempio, se tutti gli elementi delle condizioni> figlio< all'interno dell'elemento <di rilevamento> vengono risolti in TRUE, l'elemento <di rilevamento> viene risolto in TRUE. Se uno degli elementi delle condizioni> figlio< viene risolto in FALSE, l'elemento <di rilevamento> viene risolto in FALSE.
Inoltre, i risultati di ogni <sezione di rilevamento> all'interno dell'elemento <ruolo> vengono uniti dall'operatore OR per formare la regola di rilevamento dell'elemento padre. Ovvero, se una delle <sezioni di rilevamento> viene risolta in TRUE, l'elemento del< ruolo> viene elaborato. In caso contrario, l'elemento <del ruolo> non viene elaborato.
Usare l'elemento <di rilevamento> sotto l'elemento <namedElements> per non scrivere all'interno di un componente. Includere quindi una sezione di rilevamento> corrispondente< sotto l'elemento <role> per controllare se viene eseguita la migrazione del componente. Se non è presente una <sezione di rilevamento> per un componente, USMT presuppone che il componente sia presente.
Numero di occorrenze: Illimitato.
Elementi padre:<ruolo>, <namedElements>
Elementi figlio:<condizioni>
Sintassi:
<detection name="ID" context="User|System|UserAndSystem">
</detection>
Impostazione | Obbligatorio? | Value |
---|---|---|
name |
|
Se dichiarato, il contenuto dell'elemento <di rilevamento> viene ignorato e viene valutato il contenuto dell'elemento <di rilevamento> con lo stesso nome dichiarato nell'elemento <namedElements> . |
contesto | No, default = UserAndSystem | Definisce l'ambito di questo parametro: se elaborare questo componente nel contesto dell'utente specifico, nell'intero sistema operativo o in entrambi.
|
Ad esempio:
<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>
e
<role role="Settings">
<detection>
<conditions>
<condition>MigXmlHelper.DoesFileVersionMatch("%QuickTime5Exe%","ProductVersion","QuickTime 5.*")</condition>
<condition>MigXmlHelper.DoesFileVersionMatch("%QuickTime5Exe%","ProductVersion","QuickTime 6.*")</condition>
</conditions>
</detection>
<displayName>
L'elemento <displayName> è un campo obbligatorio all'interno di ogni <elemento del componente> .
Numero di occorrenze: una volta per ogni componente
Elementi padre:<componente>
Elementi figlio: nessuno
Sintassi:
<displayName _locID="ID">ComponentName</displayName>
Impostazione | Obbligatorio? | Value |
---|---|---|
locID | No | Questo parametro è destinato all'uso interno di USMT. Non usare questo parametro. |
ComponentName | Sì | Nome del componente. |
Ad esempio:
<displayName>Command Prompt settings</displayName>
<ambiente>
L'elemento< environment> è un contenitore per <gli elementi di variabile> in cui è possibile definire le variabili per l'uso in un file .xml. Tutte le variabili di ambiente definite in questo modo sono private. Ovvero, sono disponibili solo per i componenti figlio e il componente in cui sono stati definiti. Per due scenari di esempio, vedere Esempi.
Numero di occorrenze: illimitato
Elementi padre:<ruolo>, <componente>, <namedElements>
Elementi figlio obbligatori:<variabile>
Elementi figlio facoltativi:<condizioni>
Sintassi:
<environment name="ID" context="User|System|UserAndSystem">
</environment>
Impostazione | Obbligatorio? | Value |
---|---|---|
name | Sì, quando <l'ambiente> è figlio di <namedElements> No, quando <l'ambiente> è figlio di un ruolo> o<<di un componente> |
Quando viene dichiarato come figlio del ruolo> o<<degli elementi del componente>, se viene dichiarato ID, USMT ignora il contenuto dell'elemento< di ambiente> e il contenuto dell'elemento di< ambiente> con lo stesso nome dichiarato nell'elemento <namedElements> viene elaborato. |
contesto | No (default = UserAndSystem) |
Definisce l'ambito di questo parametro: se elaborare questo componente nel contesto dell'utente specifico, nell'intero sistema operativo o in entrambi. L'ambito più grande possibile viene impostato dall'elemento componente<>. Ad esempio, se un <elemento componente> ha un contesto User e un <elemento rules> ha un contesto UserAndSystem, l'elemento <rules> agirebbe come se avesse un contesto user. Se l'elemento <rules> avesse un contesto di System, funzionerebbe come se <le regole> non fossero presenti.
|
Esempi
Scenario di esempio 1
In questo scenario, generare la posizione degli oggetti in fase di esecuzione a seconda della configurazione del computer di destinazione. Ad esempio, se un'applicazione scrive dati nella directory in cui è installata l'applicazione e gli utenti possono installare l'applicazione in qualsiasi punto del computer. Se l'applicazione scrive un valore hklm\software\companyname\install [path\]
del Registro di sistema e quindi aggiorna questo valore con il percorso in cui è installata l'applicazione, l'unico modo per eseguire correttamente la migrazione dei dati necessari consiste nel definire una variabile di ambiente. Ad esempio:
<environment>
<variable name="INSTALLPATH">
<script>MigXmlHelper.GetStringContent("Registry","\software\companyname\install [path]")</script>
</variable>
</environment>
È quindi possibile usare una regola di inclusione come indicato di seguito. Qualsiasi funzione script <> può essere usata per eseguire attività simili.
<include>
<objectSet>
<pattern type="File">%INSTALLPATH%\ [*.xyz]</pattern>
</objectSet>
</include>
In secondo luogo, i valori del Registro di sistema possono essere filtrati in modo da contenere i dati necessari. Nell'esempio seguente viene estratta la prima stringa (prima del separatore ",
") nel valore del Registro di sistema 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>
Scenario di esempio 2
In questo scenario è necessario eseguire la migrazione di cinque file denominati File1.txt
, File2.txt
e così via da %SYSTEMDRIVE%\data\userdata\dir1\dir2\
. Per eseguire la migrazione di questi file, la regola di inclusione> seguente< deve trovarsi in un file .xml:
<include>
<objectSet>
<pattern type="File">%SYSTEMDRIVE%\data\userdata\dir1\dir2 [File1.txt]</pattern>
<pattern type="File">%SYSTEMDRIVE%\data\userdata\dir1\dir2 [File2.txt]</pattern>
<pattern type="File">%SYSTEMDRIVE%\data\userdata\dir1\dir2 [File3.txt]</pattern>
<pattern type="File">%SYSTEMDRIVE%\data\userdata\dir1\dir2 [File4.txt]</pattern>
<pattern type="File">%SYSTEMDRIVE%\data\userdata\dir1\dir2 [File5.txt]</pattern>
</objectSet>
</include>
Anziché digitare il percorso cinque volte, creare una variabile per la posizione come indicato di seguito:
<environment>
<variable name="DATAPATH">
<text>%SYSTEMDRIVE%\data\userdata\dir1\dir2 </text>
</variable>
</environment>
Specificare quindi la variabile in una <regola di inclusione> come indicato di seguito:
<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>
L'elemento <exclude> determina gli oggetti di cui non viene eseguita la migrazione, a meno che non sia presente un elemento di inclusione> più specifico< che esegue la migrazione di un oggetto. Se è presente un <elemento di inclusione> ed <esclusione> per lo stesso oggetto, l'oggetto viene incluso. Per ogni <elemento di esclusione>, possono essere presenti più elementi objectSet> figlio<.
Numero di occorrenze: Illimitato
Elementi padre:<regole>
Elementi figlio:<objectSet>
Funzioni helper: Con questo elemento è possibile utilizzare le funzioni filtro di esclusione> seguenti<:
CompareStringContent
,IgnoreIrrelevantLinks
,AnswerNo
,NeverRestore
eSameRegContent
.
Sintassi:
<exclude filter="ScriptInvocation">
</exclude>
Impostazione | Obbligatorio? | Value |
---|---|---|
filter | No (impostazione predefinita = No) |
Script seguito da un numero qualsiasi di argomenti stringa separati da una virgola e racchiusi tra parentesi. Ad esempio: MyScripts.AScript ("Arg1","Arg2") .Lo script viene chiamato per ogni oggetto enumerato dai set di oggetti nella regola di inclusione. Lo script di filtro restituisce un valore booleano. Se il valore restituito è TRUE, viene eseguita la migrazione dell'oggetto. Se è FALSE, non viene eseguita la migrazione. |
Ad esempio, dal MigUser.xml
file:
<exclude>
<objectSet>
<pattern type="File">%CSIDL_MYMUSIC%\* [*]</pattern>
<pattern type="File">%CSIDL_MYPICTURES%\* [*]</pattern>
<pattern type="File">%CSIDL_MYVIDEO%\* [*]</pattern>
</objectSet>
</exclude>
<excludeAttributes>
L'elemento <excludeAttributes> può essere usato per determinare quali parametri associati a un oggetto non vengono migrati. Se sono presenti conflitti tra gli <elementi includeAttributes> ed <excludeAttributes> , il modello più specifico determina i modelli di cui non viene eseguita la migrazione. Se un oggetto non dispone di un <elemento includeAttributes> o <excludeAttributes> , viene eseguita la migrazione di tutti i relativi parametri.
Numero di occorrenze: Illimitato
Elementi padre:<regole>
Elementi figlio:<objectSet>
Sintassi:
<excludeAttributes attributes="Security|TimeFields|Security,TimeFields">
</excludeAttributes>
Impostazione | Obbligatorio? | Value |
---|---|---|
Attributi | Sì | Specifica gli attributi da escludere. È possibile specificare uno dei valori seguenti o entrambi. Se si specificano entrambi, devono essere separati da virgolette. Ad esempio, "Security","TimeFields" :
|
Esempio:
<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/miguser">
<!-- This component migrates the files in the Video folder -->
<component type="System" context="System">
<displayName>System Data</displayName>
<role role="Data">
<rules>
<!-- Include all of the text files, which are immediately in the drive where the operating system is installed -->
<include>
<objectSet>
<pattern type="File">%SYSTEMDRIVE%\ [*.txt]</pattern>
</objectSet>
</include>
<!-- Exclude the time stamps from the text file starting with the letter a -->
<excludeAttributes attributes="TimeFields">
<objectSet>
<pattern type="File">%SYSTEMDRIVE%\ [a*.txt]</pattern>
</objectSet>
</excludeAttributes>
<!-- include the time stamps from the text file aa.txt -->
<includeAttributes attributes="TimeFields">
<objectSet>
<pattern type="File">%SYSTEMDRIVE%\ [aa.txt]</pattern>
</objectSet>
</includeAttributes>
<!-- Logoff the user after LoadState successfully completed. -->
<externalProcess when="post-apply">
<commandLine>
logoff
</commandLine>
</externalProcess>
</rules>
</role>
<!-- Migrate
all doc files from the system
all power point files
all visio design files
all my c++ program files -->
<extensions>
<extension>DOC</extension>
<extension>PPT</extension>
<extension>VXD</extension>
<extension>PST</extension>
<extension>CPP</extension>
</extensions>
</component>
</migration>
<Estensioni>
L'elemento <extensions> è un contenitore per uno o più <elementi di estensione> .
Numero di occorrenze: zero o uno
Elementi padre:<componente>
Elementi figlio obbligatori:<estensione>
Sintassi:
<extensions>
</extensions>
<estensione>
L'elemento <di estensione> può essere usato per specificare i documenti di un'estensione specifica.
Numero di occorrenze: illimitato
Elementi padre:<estensioni>
Elementi figlio: nessuno
Sintassi:
<extension>FilenameExtension</extension>
Impostazione | Obbligatorio? | Value |
---|---|---|
FilenameExtension | Sì | Estensione del nome file. |
Ad esempio, per eseguire la migrazione di tutti i file *.doc dal computer di origine, specificando il codice seguente nell'elemento componente<>:
<extensions>
<extension>doc</extension>
<extensions>
equivale a specificare il codice seguente sotto l'elemento <rules> :
<include>
<objectSet>
<script>MigXmlHelper.GenerateDrivePatterns ("* [*.doc]", "Fixed")</script>
</objectSet>
</include>
Per un altro esempio di come usare l'elemento di <estensione> , vedere l'esempio per <excludeAttributes>.
<externalProcess>
L'elemento <externalProcess> può essere usato per eseguire una riga di comando durante il processo di migrazione. Ad esempio, potrebbe essere necessario eseguire un comando dopo il completamento del processo LoadState .
Numero di occorrenze: Illimitato
Elementi padre:<regole>
Elementi figlio obbligatori:<commandLine>
Sintassi:
<externalProcess when="pre-scan|scan-success|post-scan|pre-apply|apply-success|post-apply">
</externalProcess>
Impostazione | Obbligatorio? | Value |
---|---|---|
quando | Sì | Indica quando deve essere eseguita la riga di comando. Questo valore può essere uno dei valori seguenti:
|
Per un esempio di come usare l'elemento <externalProcess> , vedere l'esempio per <excludeAttributes>.
<icon>
Questo elemento è un elemento USMT interno. Non usare questo elemento.
<include>
L'elemento <include> determina cosa eseguire la migrazione, a meno che non sia presente una regola di esclusione> più specifica<. È possibile specificare uno script per essere più specifico per estendere la definizione di ciò che deve essere raccolto. Per ogni <elemento di inclusione> , possono essere presenti più <elementi objectSet> .
Numero di occorrenze: Illimitato
Elementi padre:<regole>
Elemento figlio obbligatorio:<objectSet>
Funzioni helper: Le funzioni di filtro di inclusione> seguenti< possono essere usate con questo elemento:
CompareStringContent
,IgnoreIrrelevantLinks
,AnswerNo
eNeverRestore
.
Sintassi:
<include filter="ScriptInvocation">
</include>
Impostazione | Obbligatorio? | Value |
---|---|---|
filter | No. Se questo parametro non viene specificato, vengono elaborati tutti i modelli all'interno dell'elemento objectSet> figlio<. |
Script seguito da un numero qualsiasi di argomenti stringa separati da una virgola e racchiusi tra parentesi. Ad esempio: MyScripts.AScript ("Arg1","Arg2") .Lo script viene chiamato per ogni oggetto enumerato dai set di oggetti nella <regola di inclusione> . Lo script di filtro restituisce un valore booleano. Se il valore restituito è TRUE, viene eseguita la migrazione dell'oggetto. Se è FALSE, non viene eseguita la migrazione. |
L'esempio seguente è tratto dal MigUser.xml
file :
<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>
<includere> ed <escludere> funzioni di filtro
Le funzioni seguenti restituiscono un valore booleano. Possono essere usati per eseguire la migrazione di determinati oggetti in base a quando vengono soddisfatte determinate condizioni.
AnswerNo
Questo filtro restituisce sempre FALSE.
Sintassi:
AnswerNo ()
CompareStringContent
Sintassi:
CompareStringContent("StringContent","CompareType")
Impostazione Obbligatorio? Value StringContent Sì Stringa su cui eseguire il controllo. CompareType Sì Stringa. Usare uno dei valori seguenti: -
Uguale (senza distinzione tra maiuscole e minuscole). La funzione restituisce TRUE se la rappresentazione di stringa dell'oggetto corrente elaborato dal motore di migrazione è identica a
StringContent
. -
NULLo qualsiasi altro valore. La funzione restituisce TRUE se la rappresentazione di stringa dell'oggetto corrente elaborato dal motore di migrazione non corrisponde
StringContent
a .
-
Uguale (senza distinzione tra maiuscole e minuscole). La funzione restituisce TRUE se la rappresentazione di stringa dell'oggetto corrente elaborato dal motore di migrazione è identica a
IgnoreIrrelevantLinks
Questo filtro consente di escludere i file .lnk che puntano a un oggetto non valido nel computer di destinazione. Lo screening avviene nel computer di destinazione, quindi tutti i file .lnk vengono salvati nell'archivio durante ScanState. Vengono quindi schermati quando viene eseguito lo strumento LoadState .
Sintassi:
IgnoreIrrelevantLinks ()
Ad esempio:
<include filter='MigXmlHelper.IgnoreIrrelevantLinks()'> <objectSet> <pattern type="File">%CSIDL_COMMON_VIDEO%\* [*]</pattern> </objectSet> </include>
NeverRestore
Questa funzione può essere usata per raccogliere gli oggetti specificati dal computer di origine, ma non per eseguire la migrazione degli oggetti al computer di destinazione. Quando viene eseguita con lo strumento ScanState , questa funzione restituisce TRUE. Quando viene eseguita con lo strumento LoadState , questa funzione restituisce FALSE. Questa funzione può essere usata per controllare il valore di un oggetto nel computer di destinazione, ma non c'è alcuna intenzione di eseguire la migrazione dell'oggetto alla destinazione.
Sintassi:
NeverRestore()
Nell'esempio seguente, HKCU\Control Panel\International [Locale] è incluso nell'archivio, ma non viene migrato nel computer di destinazione:
<include filter="MigXmlHelper.NeverRestore()"> <objectSet> <pattern type="Registry">HKCU\Control Panel\International [Locale]</pattern> </objectSet> </include>
<includeAttributes>
L'elemento <includeAttributes> può essere usato per determinare se alcuni parametri associati a un oggetto vengono migrati insieme all'oggetto stesso. In caso di conflitti tra gli <elementi includeAttributes> ed <excludeAttributes> , il modello più specifico determina quali parametri vengono migrati. Se un oggetto non dispone di un <elemento includeAttributes> o <excludeAttributes> , viene eseguita la migrazione di tutti i relativi parametri.
Numero di occorrenze: illimitato
Elementi padre:<regole>
Elementi figlio:<objectSet>
Sintassi:
<includeAttributes attributes="Security|TimeFields|Security,TimeFields">
</includeAttributes>
Impostazione | Obbligatorio? | Value |
---|---|---|
Attributi | Sì | Specifica gli attributi da includere in un oggetto migrato. È possibile specificare uno dei valori seguenti o entrambi. Se si specificano entrambi, devono essere separati da virgolette. Ad esempio, "Security","TimeFields" :
|
Per un esempio di come usare l'elemento <includeAttributes> , vedere l'esempio per <excludeAttributes>.
<biblioteca>
Questo elemento è un elemento USMT interno. Non usare questo elemento.
<ubicazione>
L'elemento <location> definisce la posizione dell'elemento <oggetto> .
Numero di occorrenze: una volta per ogni <oggetto>
Elementi padre:<oggetto>
Elementi figlio:<script>
Sintassi:
<location type="typeID">ObjectLocation</location>
Impostazione | Obbligatorio? | Valore |
---|---|---|
tipo | Sì | typeID può essere Registro di sistema o File. |
ObjectLocation | Sì | Posizione dell'oggetto. |
L'esempio seguente è tratto dal MigApp.xml
file :
<addObjects>
<object>
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [UpgradeVersion]</location>
<attributes>DWORD</attributes>
<bytes>0B000000</bytes>
</object>
<object>
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [Lang]</location>
<attributes>DWORD</attributes>
<bytes>00000000</bytes>
</object>
</addObjects>
<locationModify>
L'elemento <locationModify> può essere usato per modificare la posizione e il nome di un oggetto prima della migrazione dell'oggetto al computer di destinazione. L'elemento< locationModify> viene elaborato solo quando lo strumento LoadState viene eseguito nel computer di destinazione. In altre parole, questo elemento viene ignorato dallo strumento ScanState . L'elemento< locationModify> crea la cartella appropriata nel computer di destinazione, se non esiste già.
Numero di occorrenze: Illimitato
Elementi padre:<regole>
Elemento figlio obbligatorio:<objectSet>
Funzioni helper: Le funzioni locationModify> seguenti< possono essere usate con questo elemento:
ExactMove
,RelativeMove
eMove
.
Sintassi:
<locationModify script="ScriptInvocation">
</locationModify>
Impostazione | Obbligatorio? | Value |
---|---|---|
copione | Sì | Script seguito da un numero qualsiasi di argomenti stringa separati da una virgola e racchiusi tra parentesi. Ad esempio: MyScripts.AScript ("Arg1","Arg2") .Lo script viene chiamato per ogni oggetto enumerato dai set di oggetti nella regola di inclusione. Lo script di filtro restituisce un valore booleano. Se il valore restituito è TRUE, viene eseguita la migrazione dell'oggetto. Se è FALSE, non viene eseguita la migrazione. |
L'esempio seguente è tratto dal MigApp.xml
file :
<locationModify script="MigXmlHelper.RelativeMove('%CSIDL_APPDATA%\Microsoft\Office','%CSIDL_APPDATA%')">
<objectSet>
<pattern type="File">%CSIDL_APPDATA%\Microsoft\Office\ [Access10.pip]</pattern>
</objectSet>
</locationModify>
<Funzioni locationModify>
Le funzioni seguenti modificano la posizione degli oggetti durante la migrazione quando si usa l'elemento <locationModify> . Queste funzioni vengono chiamate per ogni oggetto che l'elemento objectSet> padre< enumera. L'elemento< locationModify> crea la cartella appropriata nel computer di destinazione, se non esiste già.
ExactMove
La funzione ExactMove sposta tutti gli oggetti corrispondenti dall'elemento objectSet> padre< nell'oggetto ObjectEncodedLocation specificato. Questa funzione può essere usata per spostare un singolo file in un percorso diverso nel computer di destinazione. Se il percorso di destinazione è un nodo, tutti gli oggetti di origine corrispondenti vengono scritti nel nodo senza sottodirectory. Se il percorso di destinazione è un foglia, il motore di migrazione esegue la migrazione di tutti gli oggetti di origine corrispondenti nella stessa posizione. Se si verifica una collisione, si applicano gli algoritmi di collisione normali.
Sintassi:
ExactMove(ObjectEncodedLocation)
Impostazione Obbligatorio? Value ObjectEncodedLocation Sì Percorso di destinazione per tutti gli oggetti di origine. Ad esempio:
<locationModify script="MigXmlHelper.ExactMove('HKCU\Keyboard Layout\Toggle [HotKey]')"> <objectSet> <pattern type="Registry">HKCU\Keyboard Layout\Toggle []</pattern> </objectSet> </locationModify>
Sposta
La funzione Move sposta gli oggetti in una posizione diversa nel computer di destinazione. Questa funzione crea inoltre sottodirectory superiori al CSIDL più lungo nel nome dell'oggetto di origine.
Sintassi:
Move(DestinationRoot)
Impostazione Obbligatorio? Value DestinationRoot Sì Posizione in cui vengono spostati gli oggetti di origine. Se necessario, questa funzione crea tutte le sottodirectory superiori al CSIDL più lungo nel nome dell'oggetto di origine. RelativeMove
La funzione RelativeMove può essere usata per raccogliere e spostare dati. Le variabili di ambiente possono essere usate nelle radici di origine e di destinazione, ma possono essere definite in modo diverso nei computer di origine e di destinazione.
Sintassi:
RelativeMove(SourceRoot,DestinationRoot)
Impostazione Obbligatorio? Value SourceRoot Sì Posizione da cui vengono spostati gli oggetti. Gli oggetti di origine enumerati dall'elemento objectSet> padre< che non si trovano in questa posizione non vengono spostati. DestinationRoot Sì Posizione in cui vengono spostati gli oggetti di origine nel computer di destinazione. Se necessario, questa funzione crea tutte le sottodirectory precedenti a SourceRoot.
Ad esempio:
<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>
Questo elemento è un elemento USMT interno. Non usare questo elemento.
<fabbricante>
L'elemento <manufacturer> definisce il produttore per il componente, ma non influisce sulla migrazione.
Numero di occorrenze: zero o uno
Elementi padre:<componente>
Elementi figlio: nessuno
Sintassi:
<manufacturer>Name</manufacturer>
Impostazione | Obbligatorio? | Value |
---|---|---|
Nome | Sì | Nome del produttore per il componente. |
<fondersi>
L'elemento <merge> determina cosa accade quando si verifica una collisione. Una collisione si verifica quando un oggetto di cui viene eseguita la migrazione è già presente nel computer di destinazione. Se questo elemento non viene specificato, il comportamento predefinito per il Registro di sistema è che l'oggetto di origine sovrascriva l'oggetto di destinazione. Il comportamento predefinito per i file consiste nel rinominare il file di origine in OriginalFileName(1).OriginalExtension
. Questo elemento specifica solo le operazioni da eseguire quando si verifica una collisione. Non include oggetti. Pertanto, per la migrazione degli oggetti, <è necessario specificare regole di inclusione> insieme all'elemento <di merge> . Quando un oggetto viene elaborato e viene rilevata una collisione, USMT seleziona la regola di unione più specifica. Applica quindi la regola per risolvere il conflitto. Ad esempio, se una <regola di merge> è impostata su <sourcePriority> e una <regola di merge> è impostata su <destinationPriority>, USMT userà la <regola destinationPriority> perché è la più specifica.C:\subfolder\* [*]
C:\* [*]
Per un esempio di questo elemento, vedere Conflitti e precedenza.
Numero di occorrenze: Illimitato
Elementi padre:<regole>
Elemento figlio obbligatorio:<objectSet>
Funzioni helper: Con questo elemento è possibile usare le funzioni di merge> seguenti<:
SourcePriority
,DestinationPriority
,FindFilePlaceByPattern
,LeafPattern
,NewestVersion
,HigherValue()
eLowerValue()
.
Sintassi:
<merge script="ScriptInvocation">
</merge>
Impostazione | Obbligatorio? | Value |
---|---|---|
copione | Sì | Script seguito da un numero qualsiasi di argomenti stringa separati da una virgola e racchiusi tra parentesi. Ad esempio: MyScripts.AScript ("Arg1","Arg2") .Lo script viene chiamato per ogni oggetto enumerato dai set di oggetti nella <regola di inclusione> . Lo script di filtro restituisce un valore booleano. Se il valore restituito è TRUE, viene eseguita la migrazione dell'oggetto. Se è FALSE, non viene eseguita la migrazione. |
L'esempio seguente è tratto dal MigUser.xml
file :
<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>
<funzioni di merge>
Queste funzioni controllano il modo in cui vengono risolte le collisioni.
DestinationPriority
Specifica di mantenere l'oggetto presente nel computer di destinazione e di non eseguire la migrazione dell'oggetto dal computer di origine.
Ad esempio:
<merge script="MigXmlHelper.DestinationPriority()"> <objectSet> <pattern type="Registry">HKCU\Software\Microsoft\Office\16.0\PhotoDraw\ [MyPictures]</pattern> <pattern type="Registry">HKCU\Software\Microsoft\Office\16.0\PhotoDraw\Settings\ [PicturesPath]</pattern> <pattern type="Registry">HKCU\Software\Microsoft\Office\16.0\PhotoDraw\Settings\ [AdditionalPlugInPath]</pattern> </objectSet> </merge>
FindFilePlaceByPattern
La funzione FindFilePlaceByPattern salva i file con un contatore di incremento quando si verifica una collisione. Si tratta di una stringa che contiene uno di ogni costrutto: <F>, <E>, <N> in qualsiasi ordine.
Sintassi:
FindFilePlaceByPattern(FilePattern)
Impostazione Obbligatorio? Value FilePattern Sì - <F> viene sostituito dal nome del file originale.
- <N> viene sostituito da un contatore di incremento fino a quando non si verifica alcuna collisione con gli oggetti nel computer di destinazione.
- <E> viene sostituito dall'estensione del nome file originale.
Ad esempio,<F> (<N>).<E>
modifica il fileMyDocument.doc
di origine inMyDocument (1).doc
nel computer di destinazione.NewestVersion
La funzione NewestVersion risolve i conflitti nel computer di destinazione in base alla versione del file.
Sintassi:
NewestVersion(VersionTag)
Impostazione Obbligatorio? Value VersionTag Sì Campo della versione selezionato. Questo campo può essere FileVersion
oProductVersion
. Il file con la versione versionTag più recente determina quali conflitti vengono risolti in base alla versione del file. Ad esempio, seMyfile.txt
contiene FileVersion 1 e lo stesso file nel computer di destinazione contiene FileVersion 2, il file nella destinazione rimane.HigherValue()
Questa funzione può essere usata per unire i valori del Registro di sistema. I valori del Registro di sistema vengono valutati come valori numerici e quello con il valore superiore determina quali valori del Registro di sistema vengono uniti.
LowerValue()
Questa funzione può essere usata per unire i valori del Registro di sistema. I valori del Registro di sistema vengono valutati come valori numerici e quello con il valore inferiore determina quali valori del Registro di sistema vengono uniti.
SourcePriority
Specifica di eseguire la migrazione dell'oggetto dal computer di origine e di eliminare l'oggetto presente nel computer di destinazione.
Ad esempio:
<merge script="MigXmlHelper.SourcePriority()"> <objectSet> <pattern type="Registry">%HklmWowSoftware%\Microsoft\Office\14.0\Common\Migration\Publisher [UpgradeVersion]</pattern> <pattern type="Registry">%HklmWowSoftware%\Microsoft\Office\15.0\Common\Migration\Publisher [UpgradeVersion]</pattern> <pattern type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Publisher [UpgradeVersion]</pattern> </objectSet> </merge>
<migrazione>
L'elemento <di migrazione> è il singolo elemento radice di un file di.xml di migrazione ed è obbligatorio. Ogni file.xml deve avere un URL di migrazione univoco. L'urlid di ogni file specificato nella riga di comando deve essere univoco. Gli urlid devono essere univoci perché USMT usa l'urlid per definire i componenti all'interno del file.
Numero di occorrenze: uno
Elementi padre: nessuno
Elementi figlio obbligatori:<componente>
Elementi figlio facoltativi:<library>, <namedElements>
Sintassi:
<migration urlid="*UrlID/*Name">
</migration>
Impostazione | Obbligatorio? | Value |
---|---|---|
urlid | Sì | UrlID è un identificatore di stringa che identifica in modo univoco questo file .xml . Questo parametro deve essere un nome senza due punti, come definito dalla specifica degli spazi dei nomi XML. Ogni file.xml di migrazione deve avere un urlid univoco. Se due file .xml migrazione hanno lo stesso urlid, il secondo file.xml specificato nella riga di comando non viene elaborato. Per altre informazioni sugli spazi dei nomi XML, vedere Usare spazi dei nomi XML. |
Nome | No | Sebbene non sia obbligatorio, è consigliabile usare il nome del file .xml . |
L'esempio seguente è tratto dal MigApp.xml
file :
<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/migapp">
</migration>
MigXMLHelper.FileProperties
Questa funzione helper filtro può essere usata per filtrare la migrazione dei file in base alle dimensioni del file e agli attributi di data.
Funzione helper | MigXMLHelper.FileProperties (proprietà, operatore, valueToCompare) |
---|---|
Proprietà | filesize, dateCreated, dateModified, dateAccessed |
Operatore | range, neq, lte, lt, eq, gte, gte |
valueToCompare | Valore confrontato. Ad esempio: Data: "2023/05/15-2020/05/17", "2023/05/15" Dimensioni: numero con B, KB, MB o GB alla fine. "5 GB", "1 KB-1 MB" |
<component context="System" type="Application">
<displayName>File_size</displayName>
<role role="Data">
<rules>
<include filter='MigXmlHelper.FileProperties("dateAccessed","range","2023/05/15-2020/05/17")'>
<objectSet>
<pattern type="File">%SYSTEMDRIVE%\DOCS\* [*]</pattern>
</objectSet>
</include>
</rules>
</role>
</component>
<namedElements>
L'elemento <namedElements> può essere usato per definire elementi denominati. Questi elementi possono essere usati in qualsiasi componente nel file .xml . Per un esempio di come usare questo elemento, vedere il MigApp.xml
file .
Sintassi:
<namedElements>
</namedElements>
Numero di occorrenze: Illimitato
Elementi padre:<migrazione>
Elementi figlio:<ambiente>, <regole>, <condizioni>, <rilevamento>, <rileva>, <rileva>
Per un esempio di questo elemento, vedere il MigApp.xml
file .
<oggetto>
L'elemento <oggetto> rappresenta un file o una chiave del Registro di sistema.
Numero di occorrenze: Illimitato
Elementi padre:<addObjects>
Elementi figlio obbligatori:<posizione>, <attributi>
Elementi figlio facoltativi:<byte>
Sintassi:
<object>
</object>
L'esempio seguente è tratto dal MigApp.xml
file :
<addObjects>
<object>
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [UpgradeVersion]</location>
<attributes>DWORD</attributes>
<bytes>0B000000</bytes>
</object>
<object>
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\16.0\Common\Migration\Office [Lang]</location>
<attributes>DWORD</attributes>
<bytes>00000000</bytes>
</object>
</addObjects>
<objectSet>
L'elemento <objectSet> contiene un elenco di modelli di oggetto, ad esempio percorsi di file, percorsi del Registro di sistema e così via. Tutti gli elementi delle condizioni> figlio< vengono valutati per primi. Se tutti gli elementi delle condizioni> figlio< restituiscono FALSE, l'elemento <objectSet> restituisce un set vuoto. Per ogni elemento padre, possono essere presenti solo più <elementi objectSet> .
Numero di occorrenze: Illimitato
Elementi padre:<variabile>, <contenuto>, <includere>, <escludere>, <unire>, <contentModify>, <locationModify>, <destinationCleanup>, <includeAttributes>, <excludeAttributes>, <unconditionalExclude>, <detect>
Elementi figlio facoltativi:<contenuto>, <condizioni>, <condizione>
Sintassi:
<objectSet>
</objectSet>
L'esempio seguente è tratto dal MigUser.xml
file :
<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>
Questo elemento è un elemento USMT interno. Non usare questo elemento.
<Percorsi>
Questo elemento è un elemento USMT interno. Non usare questo elemento.
<motivo>
Questo elemento può essere usato per specificare più oggetti. È possibile usare più <elementi pattern> per ogni <elemento objectSet> e vengono combinati. Se si specificano i file, Microsoft consiglia di usare GenerateDrivePatterns
invece con <lo script> .
GenerateDrivePatterns
è fondamentalmente uguale a una <regola di modello> , senza la specifica della lettera di unità. Ad esempio, le due righe di codice seguenti sono simili:
<pattern type="File">C:\Folder\* [Sample.doc]</pattern>
<script>MigXmlHelper.GenerateDrivePatterns("\Folder\* [Sample.doc]","Fixed"</script>
Numero di occorrenze: Illimitato
Elementi padre:<objectSet>
Elementi figlio: nessuno, ma Path [oggetto] deve essere valido.
Sintassi:
<pattern type="typeID">Path [object]</pattern>
Impostazione | Obbligatorio? | Valore |
---|---|---|
tipo | Sì |
typeID può essere Registry, File o Ini. Se typeId è Ini, non è consentito uno spazio tra Path e l'oggetto . Ad esempio, il formato seguente è corretto quando type="Ini": <pattern type="Ini">%WinAmp5InstPath%\Winamp.ini|WinAmp[keeponscreen]</pattern> |
Percorso [oggetto] | Sì | Modello di percorso file o registro valido, seguito da almeno uno spazio, seguito da parentesi quadre [] che contengono l'oggetto di cui eseguire la migrazione.
|
Ad esempio:
Per eseguire la migrazione di una singola chiave del Registro di sistema:
<pattern type="Registry">HKLM\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Cache [Persistent]</pattern>
Per eseguire la migrazione della
C:\EngineeringDrafts
cartella e di tutte le sottocartelle dall'unità C:<pattern type="File">C:\EngineeringDrafts\* [*]</pattern>
Per eseguire la migrazione solo della
C:\EngineeringDrafts
cartella, escluse le sottocartelle, dall'unità C:Per eseguire la migrazione del
Sample.doc
file daC:\EngineeringDrafts
:<pattern type="File"> C:\EngineeringDrafts\ [Sample.doc]</pattern>
Per eseguire la migrazione del
Sample.doc
file da dove esiste nel modello di utilizzo dell'unità C: nel modo seguente. Se nell'unità C: sono presenti più file con lo stesso nome, viene eseguita la migrazione di tutti questi file.<pattern type="File"> C:\* [Sample.doc] </pattern>
Per altri esempi su come usare questo elemento, vedere Escludere file e impostazioni, Reindirizzare file e impostazioni, Includere file e impostazioni ed esempi XML personalizzati.
<elaborazione>
Questo elemento può essere usato per eseguire uno script durante un punto specifico all'interno del processo di migrazione. I valori restituiti non sono previsti dagli script specificati. Se sono presenti valori restituiti, vengono ignorati.
Sintassi:
<processing when="pre-scan|scan-success|post-scan|pre-apply|apply-success|post-apply">
</processing>
Impostazione | Obbligatorio? | Value |
---|---|---|
quando | Sì | Indica quando eseguire lo script. Questo valore può essere uno dei valori seguenti:
|
<plug-in>
Questo elemento è un elemento USMT interno. Non usare questo elemento.
<ruolo>
L'elemento <role> è obbligatorio in un file di.xml personalizzato. Quando si specifica l'elemento <del ruolo> , è possibile creare un componente concreto. Il componente è definito dai parametri specificati a livello di <componente> e con il ruolo specificato qui.
Numero di occorrenze: Ogni <componente> può avere uno, due o tre elementi del ruolo> figlio<.
Elementi padre:<componente>, <ruolo>
Elementi figlio obbligatori:<regole>
Elementi figlio facoltativi:<ambiente>, <rilevamento>, <componente>, <ruolo>, <rileva>, <plug-in>
Sintassi:
<role role="Container|Binaries|Settings|Data">
</role>
Impostazione | Obbligatorio? | Value |
---|---|---|
ruolo | Sì | Definisce il ruolo per il componente. Il ruolo può essere uno dei seguenti:
|
L'esempio seguente proviene dal MigUser.xml
file . Per altri esempi, vedere il MigApp.xml
file:
<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>
L'elemento <rules> è obbligatorio in un file di.xml personalizzato. Questo elemento contiene regole eseguite durante la migrazione se l'elemento del componente> padre< è selezionato, a meno che l'elemento condizione> figlio<, se presente, restituisca FALSE. Per ogni <elemento di regole>, possono essere presenti più elementi di regole> figlio<.
Numero di occorrenze: illimitato
Elementi padre:<ruolo>, <regole>, <namedElements>
Elementi figlio necessari:<include>
Elementi figlio facoltativi:<rules>, <exclude>, <unconditionalExclude,merge><>, <contentModify>, <locationModify>, <destinationCleanup>, <addObjects>, <externalProcess>, <processing>, <includeAttributes>, <excludeAttributes>, condizioni, <rileva>
Sintassi:
<rules name="ID" context="User|System|UserAndSystem">
</rules>
Impostazione | Obbligatorio? | Value |
---|---|---|
name | Sì, quando <le regole> sono figlio di <namedElements> No, quando <le regole> sono figlio di qualsiasi altro elemento |
Quando viene specificato l'ID , gli elementi figlio non vengono elaborati. Vengono invece elaborati tutti gli altri <elementi delle regole> con lo stesso nome dichiarati all'interno <di namedElements> . |
contesto | No (default = UserAndSystem) |
Definisce l'ambito di questo parametro: se elaborare questo componente nel contesto dell'utente specifico, nell'intero sistema operativo o in entrambi. L'ambito più grande possibile viene impostato dall'elemento componente. Ad esempio, se un <elemento componente> ha un contesto User e un <elemento rules> ha un contesto UserAndSystem, l'elemento <rules> agirebbe come se avesse un contesto user. Se <le regole> avessero un contesto di sistema, funzionerebbero come se <le regole> non fossero presenti.
|
L'esempio seguente è tratto dal MigUser.xml
file :
<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>
<copione>
Il valore restituito richiesto dallo <script> dipende dall'elemento padre.
Numero di occorrenze: Una volta per <variabile>, illimitata per <objectSet> ed <elaborazione>
Elementi padre:<objectSet>, <variabile>, <elaborazione>
Elementi figlio: nessuno
Sintassi e funzioni helper:
Sintassi generale:
<script>ScriptWithArguments</script>
GetStringContent può essere usato quando <lo script> si trova all'interno di <una variabile>.
Sintassi:
<script>MigXmlHelper.GetStringContent("ObjectType","EncodedLocationPattern", "ExpandContent")</script>
Esempio:
<script>MigXMLHelper.GetStringContent("Registry","HKLM\Software\MyApp\Installer [EXEPATH]")</script>
È possibile usare GenerateUserPatterns quando <lo script> si trova all'interno di< objectSet>.
Sintassi:
<script>MigXmlHelper.GenerateUserPatterns("ObjectType","EncodedLocationPattern","ProcessCurrentUser")</script>
Esempio:
<script>MigXmlHelper.GenerateUserPatterns ("File","%USERPROFILE%\* [*.doc]", "FALSE")</script>
GenerateDrivePatterns può essere usato quando <lo script> si trova all'interno di< objectSet>.
Sintassi:
<script>MigXmlHelper.GenerateDrivePatterns("PatternSegment","DriveType")</script>
Esempio:
<script>MigXmlHelper.GenerateDrivePatterns("* [sample.doc]", "Fixed")</script>
Gli script simple executing possono essere usati con <elementi script> inclusi negli <elementi di elaborazione> : AskForLogoff, ConvertToShortFileName, KillExplorer, RemoveEmptyDirectories, RestartExplorer, RegisterFonts, StartService, StopService, SyncSCM.
Sintassi:
<script>MigXmlHelper.ExecutingScript</script>
Esempio:
<script>MigXmlHelper.KillExplorer()</script>
Impostazione | Obbligatorio? | Value |
---|---|---|
ScriptWithArguments | Sì | Script seguito da un numero qualsiasi di argomenti stringa separati da una virgola e racchiusi tra parentesi. Ad esempio: MyScripts.AScript ("Arg1","Arg2") .Lo script viene chiamato per ogni oggetto enumerato dai set di oggetti nella <regola di inclusione> . Lo script di filtro restituisce un valore booleano. Se il valore restituito è TRUE, viene eseguita la migrazione dell'oggetto. Se è FALSE, non viene eseguita la migrazione. Il valore restituito richiesto dallo <script> dipende dall'elemento padre.
|
Esempi:
Per eseguire la migrazione del file Sample.doc da qualsiasi unità nel computer di origine, usare <lo script> come indicato di seguito. Se esistono più file con lo stesso nome, viene eseguita la migrazione di tutti questi file.
<script>MigXmlHelper.GenerateDrivePatterns("* [sample.doc]", "Fixed")</script>
Per altri esempi su come usare questo elemento, vedere Escludere file e impostazioni, reindirizzare file e impostazioni ed esempi XML personalizzati.
<Funzioni script>
Le funzioni seguenti possono essere usate con l'elemento <script>
Funzioni di generazione di stringhe e modelli
Queste funzioni restituiscono una stringa o un modello.
GetStringContent
GetStringContent può essere usato con <elementi script> all'interno <di elementi variabili> . Se possibile, questa funzione restituisce la rappresentazione di stringa dell'oggetto specificato. In caso contrario, restituisce NULL. Per gli oggetti file questa funzione restituisce sempre NULL.
Sintassi:
GetStringContent("ObjectType","EncodedLocationPattern", "ExpandContent")
Impostazione Obbligatorio? Value ObjectType Sì Tipo di oggetto. Può essere Registry o Ini (per un file .ini ). EncodedLocationPattern Sì - Se il tipo di oggetto è Registry, EncodedLocationPattern deve essere un percorso del Registro di sistema valido. Ad esempio:
HKLM\SOFTWARE\MyKey[]
. - Se il tipo di oggetto è Ini, EncodedLocationPattern deve essere nel formato seguente:
IniFilePath|SectionName[SettingName]
ExpandContent No (default=TRUE) Può essere TRUE o FALSE. Se FALSE, la posizione specificata non viene espansa prima della restituzione. Ad esempio:
<variable name="MSNMessengerInstPath"> <script>MigXmlHelper.GetStringContent("Registry","%HklmWowSoftware%\Microsoft\MSNMessenger [InstallationDirectory]")</script> </variable>
- Se il tipo di oggetto è Registry, EncodedLocationPattern deve essere un percorso del Registro di sistema valido. Ad esempio:
GenerateDrivePatterns
La
GenerateDrivePatterns
funzione esegue l'iterazione di tutte le unità disponibili e seleziona quelle che corrispondono al tipo di unità richiesto. Quindi concatena le unità selezionate con la parte finale di PatternSegment per formare un modello di file con codifica completa. Ad esempio, se PatternSegment èPath [file.txt]
e DriveType èFixed
, la funzione generaC:\Path [file.txt]
e altri modelli se sono presenti unità fisse diverse da C:. Non è possibile specificare variabili di ambiente con questa funzione.GenerateDrivePatterns
può essere usato con <gli elementi script> che si trovano all'interno <di objectSet> che si trovano all'interno <di include>/<exclude>.Sintassi:
GenerateDrivePatterns("PatternSegment","DriveType")
Impostazione Obbligatorio? Value PatternSegment Sì Suffisso di un modello codificato. Il valore viene concatenato con una specifica di unità, ad esempio "c:", per formare un modello di file codificato completo. Ad esempio, "* [*.doc]". PatternSegment non può essere una variabile di ambiente. DriveType Sì Tipo di unità per cui devono essere generati i modelli. È possibile specificare uno degli elementi seguenti: - Risolto
- CDROM
- Rimovibile
- Remoto
Vedere l'ultimo componente nel
MigUser.xml
file per un esempio di questo elemento.GenerateUserPatterns
La
GenerateUserPatterns
funzione scorre tutti gli utenti di cui viene eseguita la migrazione, escludendo l'utente attualmente elaborato se <ProcessCurrentUser> è FALSE ed espande il modello specificato nel contesto di ogni utente. Ad esempio, se gli utenti A, B e C hanno profili inC:\Users
, chiamandoGenerateUserPattens('File','%userprofile% [*.doc]','TRUE')
, la funzione helper genera i tre modelli seguenti:"C:\Users\A\* [*.doc]"
"C:\Users\B\* [*.doc]"
"C:\Users\C\* [*.doc]"
Sintassi:
GenerateUserPatterns("ObjectType","EncodedLocationPattern","ProcessCurrentUser")
Impostazione Obbligatorio? Value ObjectType Sì Definisce il tipo di oggetto. Può essere File o Registro di sistema. EncodedLocationPattern Sì Modello di posizione. Le variabili di ambiente sono consentite. ProcessCurrentUser Sì Può essere TRUE o FALSE. Indica se i modelli devono essere generati per l'utente corrente.
Esempio:
Se GenerateUserPattens('File','%userprofile% [*.doc]','FALSE')
viene chiamato mentre USMT elabora l'utente A, questa funzione genera solo modelli per gli utenti B e C. Questa funzione helper può essere usata per compilare regole complesse. Ad esempio, per eseguire la migrazione di tutti i .doc
file dal computer di origine, ma se l'utente X non viene migrato, non eseguire la .doc
migrazione di alcun file dal profilo dell'utente X.
L'esempio seguente è il codice di esempio per questo scenario. Il primo <elemento rules> esegue la migrazione di tutti i .doc
file nel computer di origine, ad eccezione di quelli all'interno C:\Users
di . I secondi <elementi delle regole> eseguono la migrazione di tutti i .doc
file, C:\Users
ad eccezione dei .doc
file nei profili degli altri utenti. Poiché il secondo <elemento regole> viene elaborato in ogni contesto utente migrato, il risultato finale è il comportamento desiderato. Il risultato finale è quello previsto.
<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
La MigXmlHelper.GenerateDocPatterns
funzione helper richiama il finder di documenti per analizzare il sistema alla ricerca di tutti i file di cui è possibile eseguire la migrazione. Può essere richiamato nel contesto di sistema o utente per mettere a fuoco l'analisi.
Impostazione | Obbligatorio? | Value |
---|---|---|
ScanProgramFiles | No (impostazione predefinita = FALSE) | Può essere TRUE o FALSE. Il parametro ScanProgramFiles determina se il finder documenti analizza o meno la directory Programmi per raccogliere estensioni di file registrate per applicazioni note. Ad esempio, se impostato su TRUE , individua ed esegue la migrazione di.jpg file nella directory Photoshop, se .jpg è un'estensione di file registrata in Photoshop. |
IncludePatterns | No (impostazione predefinita = TRUE) | Può essere TRUE o FALSE. TRUE genera modelli di inclusione e può essere aggiunto sotto l'elemento <di inclusione> . FALSE genera modelli di esclusione e può essere aggiunto sotto l'elemento <exclude> . |
SystemDrive | No (impostazione predefinita = FALSE) | Può essere TRUE o FALSE. Se TRUE, limita tutti i modelli all'unità di sistema. |
<!-- 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>
Esecuzione semplice di script
Gli script seguenti non hanno alcun valore restituito. Gli errori seguenti possono essere usati con <gli elementi script> inclusi negli <elementi di elaborazione>
AskForLogoff(). Richiede all'utente di disconnettersi al termine della migrazione. Ad esempio:
<processing when="apply-success"> <script>MigXmlHelper.AskForLogoff()</script> </processing>
ConvertToShortFileName(RegistryEncodedLocation). Se RegistryEncodedLocation è il percorso completo di un file esistente, questa funzione converte il file nel nome del file breve e quindi aggiorna il valore del Registro di sistema.
KillExplorer(). Arresta Explorer.exe per il contesto utente corrente. L'arresto Explorer.exe consente l'accesso a determinate chiavi e file che vengono mantenuti aperti quando è in esecuzione Explorer.exe. Ad esempio:
<processing when="pre-apply"> <script>MigXmlHelper.KillExplorer()</script> </processing>
RegisterFonts(FileEncodedLocation). Registra il tipo di carattere specificato o tutti i tipi di carattere nella directory specificata. Ad esempio:
<processing when="apply-success">
<script>MigXmlHelper.RegisterFonts("%CSIDL_COMMON_FONTS%")</script>
</processing>
RemoveEmptyDirectories (DirectoryEncodedPattern). Elimina tutte le directory vuote che corrispondono a DirectoryEncodedPattern nel computer di destinazione.
RestartExplorer(). Riavvia Explorer.exe alla fine della migrazione. Ad esempio:
<processing when="post-apply"> <script>MigXmlHelper.RestartExplorer()</script> </processing>
StartService (ServiceName, OptionalParam1, OptionalParam2,...). Avvia il servizio identificato da ServiceName. ServiceName è la sottochiave in
HKLM\System\CurrentControlSet\Services
che contiene i dati per il servizio specificato. I parametri facoltativi, se presenti, vengono passati all'API StartService. Per altre informazioni, vedere l'articolo Funzione StartServiceA (winsvc.h).StopService (ServiceName). Arresta il servizio identificato da ServiceName. ServiceName è la sottochiave in
HKLM\System\CurrentControlSet\Services
che contiene i dati per il servizio specificato.SyncSCM(ServiceShortName). Legge il valore del tipo Start dal Registro di sistema
(HKLM\System\CurrentControlSet\Services\ServiceShortName [Start])
dopo che il valore è stato modificato dal motore di migrazione e quindi sincronizza Service Control Manager (SCM) con il nuovo valore.
<Testo>
L'elemento <di testo> può essere usato per impostare un valore per qualsiasi variabile di ambiente all'interno di uno dei file di.xml di migrazione.
Numero di occorrenze: Una volta in ogni <elemento variabile> .
Elementi padre:<variabile>
Elementi figlio: Nessuno.
Sintassi:
<text>NormalText</text>
Impostazione | Valore |
---|---|
NormalText | Questo testo viene interpretato come testo normale. |
Ad esempio:
<variable name="QuickTime5or6DataSys">
<text>%CSIDL_COMMON_APPDATA%\QuickTime</text>
</variable>
<unconditionalExclude>
L'elemento <unconditionalExclude> esclude dalla migrazione i file e i valori del Registro di sistema specificati, indipendentemente dalle altre regole di inclusione in qualsiasi file di.xml di migrazione o nel Config.xml
file. Gli oggetti dichiarati qui non vengono migrati perché questo elemento ha la precedenza su tutte le altre regole. Ad esempio, anche se sono presenti regole di inclusione> esplicite< per includere .mp3
i file, se sono esclusi con questa opzione, non viene eseguita la migrazione.
Usare questo elemento per escludere tutti i .mp3
file dal computer di origine. In alternativa, se si esegue C:\UserData
il backup usando un altro metodo, l'intera cartella può essere esclusa dalla migrazione. Usare questo elemento con cautela. Se un'applicazione necessita di un file escluso, l'applicazione potrebbe non funzionare correttamente nel computer di destinazione.
Numero di occorrenze: Illimitato.
Elementi padre:<regole>
Elementi figlio:<objectSet>
Sintassi:
<unconditionalExclude></unconditionalExclude>
Il file .xml seguente esclude tutti i .mp3
file dalla migrazione. Per altri esempi su come usare questo elemento, vedere Exclude Files and Settings (Escludi file e impostazioni).
<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/excludefiles">
<component context="System" type="Documents">
<displayName>Test</displayName>
<role role="Data">
<rules>
<unconditionalExclude>
<objectSet>
<script>MigXmlHelper.GenerateDrivePatterns ("* [*.mp3]", "Fixed")</script>
</objectSet>
</unconditionalExclude>
</rules>
</role>
</component>
</migration>
<variabile>
L'elemento <variabile> è obbligatorio in un elemento di <ambiente> . Per ogni <elemento variabile> deve essere presente un <oggettoSet>, <uno script> o <un elemento di testo> . Il contenuto dell'elemento <variabile> assegna un valore di testo alla variabile di ambiente. Questo elemento dispone delle tre opzioni seguenti:
Se l'elemento <variabile> contiene un <elemento di testo> , il valore dell'elemento variabile è il valore dell'elemento <di testo> .
Se l'elemento <variabile> contiene un <elemento script> e la chiamata dello script produce una stringa non Null, il valore dell'elemento <variabile> è il risultato della chiamata allo script.
Se l'elemento <variabile> contiene un <elemento objectSet> e la valutazione dell'elemento <objectSet> produce almeno un modello di oggetto, il valore del primo oggetto che corrisponde al modello di oggetto risultante è il valore dell'elemento variabile.
Numero di occorrenze: Illimitato
Elementi padre:<ambiente>
Elementi figlio obbligatori:<testo>, <script> o <objectSet>
Sintassi:
<variable name="ID" remap=TRUE|FALSE>
</variable>
Impostazione | Obbligatorio? | Value |
---|---|---|
name | Sì |
ID è un valore stringa che corrisponde al nome utilizzato per fare riferimento alla variabile di ambiente. Microsoft consiglia di iniziare l'ID con il nome del componente per evitare conflitti con lo spazio dei nomi. Ad esempio, se il nome del componente è MyComponent e si desidera specificare una variabile che sia il percorso di installazione del componente. MyComponent.InstallPath |
rimappare | No, default = FALSE | Specifica se valutare questa variabile di ambiente come variabile di ambiente di nuovo mapping. Gli oggetti che si trovano in un percorso sottostante al valore di questa variabile di ambiente vengono spostati automaticamente nel punto in cui la variabile di ambiente punta nel computer di destinazione. |
L'esempio seguente è tratto dal MigApp.xml
file :
<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>
L'elemento <version> definisce la versione per il componente, ma non influisce sulla migrazione.
Numero di occorrenze: zero o uno
Elementi padre:<componente>
Elementi figlio: nessuno
Sintassi:
<version>ComponentVersion</version>
Impostazione | Obbligatorio? | Value |
---|---|---|
ComponentVersion | Sì | Versione del componente, che può contenere modelli. |
Ad esempio:
<version>4.*</version>
<windowsObjects>
L'elemento <windowsObjects> è solo per uso interno USMT. Non usare questo elemento.
Appendice
Specifica delle posizioni
Specifica di percorsi codificati. Il percorso codificato usato in tutte le funzioni helper è una rappresentazione di stringa non ambigua per il nome di un oggetto. La posizione codificata è composta dalla parte del nodo, facoltativamente seguita dalla foglia racchiusa tra parentesi quadre. Questo formato distingue chiaramente tra nodi e foglie.
Ad esempio, specificare il file
C:\Windows\Notepad.exe
come segue:c:\Windows[Notepad.exe]
. Analogamente, specificare la directoryC:\Windows\System32
come segue:c:\Windows\System32
. Si noti l'assenza del[]
costrutto.La rappresentazione del Registro di sistema è simile. Il valore predefinito di una chiave del Registro di sistema è rappresentato come costrutto vuoto
[]
. Ad esempio, il valore predefinito per la chiave delHKLM\SOFTWARE\MyKey
Registro di sistema èHKLM\SOFTWARE\MyKey[]
.Specifica dei modelli di posizione. La specifica di un modello di posizione è simile a quella di una posizione effettiva. L'eccezione è che sia il nodo che la parte foglia accettano modelli. Tuttavia, un modello dal nodo non si estende alla foglia.
Ad esempio, il modello
c:\Windows\*
corrisponde alla directory di Windows e a tutte le sottodirectory, ma non corrisponde a nessuno dei file in tali directory. Per trovare una corrispondenza anche con i file,c:\Windows\*[*]
è necessario specificare.
Funzioni USMT interne
Le funzioni seguenti sono destinate solo all'uso interno di USMT. Non usarli in un file .xml .
AntiAlias
ConvertScreenSaver
ConvertShowIEOnDesktop
ConvertToOfficeLangID
MigrateActiveDesktop
MigrateAppearanceUPM
MigrateDisplayCS
MigrateDisplaySS
MigrateIEAutoSearch
MigrateMouseUPM
MigrateSoundSysTray
MigrateTaskBarss
SetPstPathInMapiStruc
Tag di versione validi
I tag di versione seguenti possono essere usati con varie funzioni helper:
"CompanyName"
"FileDescription"
"FileVersion"
"InternalName"
"LegalCopyright"
"OriginalFilename"
"ProductName"
"ProductVersion"
I tag di versione seguenti contengono valori che possono essere confrontati:
"FileVersion"
"ProductVersion"