Libreria di elementi XML
Panoramica
Questo argomento descrive gli elementi XML e le funzioni helper che puoi usare per creare file XML di migrazione da usare con Utilità di migrazione stato utente (USMT). Si presuppone che tu conosca i concetti di base di XML. .
In questo argomento
Oltre agli elementi XML e alle funzioni helper, questo argomento spiega come specificare percorsi codificati e pattern di percorsi, funzioni solo per uso interno in USMT e tag di versione che puoi usare con le funzioni helper.
Elementi e funzioni helper
Appendice
Specificare i percorsi
Funzioni USMT interne
Tag di versione validi
Elementi e funzioni helper
La tabella seguente descrive gli elementi XML e le funzioni helper che puoi usare con USMT.
Elementi A-K | Elementi L-Z | Funzioni helper |
---|---|---|
<addObjects> <attributes> <bytes> <commandLine> <component> <condition> <conditions> <content> <contentModify> <description> <destinationCleanup> <detect> <detects> <detection> <displayName> <environment> <exclude> <excludeAttributes> <extensions> <extension> <externalProcess> <icon> <include> <includeAttributes> |
<library> <location> <locationModify> <_locDefinition> <manufacturer> <merge> <migration> <namedElements> <object> <objectSet> <path> <paths> <pattern> <processing> <plugin> <role> <rules> <script> <text> <unconditionalExclude> <variable> <version> <windowsObjects> |
Funzioni <condition> Funzioni <content> Funzioni <contentModify> Funzioni di filtro <include> ed <exclude> Funzioni <locationModify> Funzioni <merge> Funzioni <script> Funzioni USMT interne |
<addObjects>
L'elemento <addObjects> emula l'esistenza di uno o più oggetti nel computer di origine. Gli elementi figlio <object> forniscono i dettagli degli oggetti emulati. Se il contenuto è un elemento <script>, il risultato della chiamata sarà una matrice di oggetti.
Numero di occorrenze: illimitate
Elementi padre: <rules>
Elementi figlio obbligatori: <object> Devi inoltre specificare <location> e <attributes> come elementi figlio di questo elemento <object>.
Elementi figlio facoltativi: <conditions>, <condition>, <script>
Sintassi:
<addObjects>
</addObjects>
L'esempio seguente è tratto dal file MigApp.xml:
<addObjects>
<object>
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\12.0\Common\Migration\Office [UpgradeVersion]</location>
<attributes>DWORD</attributes>
<bytes>0B000000</bytes>
</object>
<object>
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\12.0\Common\Migration\Office [Lang]</location>
<attributes>DWORD</attributes>
<bytes>00000000</bytes>
</object>
</addObjects>
<attributes>
L'elemento <attributes> definisce gli attributi di una chiave del Registro di sistema o di un file.
Numero di occorrenze: una per ogni <object>
Elementi padre: <object>
Elementi figlio: nessuno
Sintassi:
<attributes>Contenuto</attributes>
Impostazione | Obbligatoria? | Valore |
---|---|---|
Contenuto |
Sì |
Il contenuto dipende dal tipo di oggetto specificato.
|
L'esempio seguente è tratto dal file MigApp.xml:
<object>
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\12.0\Common\Migration\Office [Lang]</location>
<attributes>DWORD</attributes>
<bytes>00000000</bytes>
</object>
<bytes>
Devi specificare l'elemento <bytes> solo per i file perché l'elemento <bytes> verrà ignorato se <location> corrisponde a una chiave del Registro di sistema o a una directory.
Numero di occorrenze: zero o una
Elementi padre: <object>
Elementi figlio: nessuno
Sintassi:
<bytes string="Yes|No" expand="Yes|No">Contenuto</bytes>
Impostazione | Obbligatoria? | Valore |
---|---|---|
string |
No (impostazione predefinita = No) |
Determina se Contenuto deve essere interpretato come stringa o come byte. |
expand |
No (impostazione predefinita = Yes) |
Quando il parametro expand è impostato su Yes, il contenuto dell'elemento <bytes> viene prima espanso nel contesto del computer di origine e quindi interpretato. |
Contenuto |
Sì |
Dipende dal valore di string.
|
L'esempio seguente è tratto dal file MigApp.xml:
<object>
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\12.0\Common\Migration\Office [Lang]</location>
<attributes>DWORD</attributes>
<bytes>00000000</bytes>
</object>
<commandLine>
Puoi usare l'elemento <commandLine> per avviare o arrestare un servizio o un'applicazione prima o dopo l'esecuzione degli strumenti ScanState e LoadState.
Numero di occorrenze: illimitate
Elementi padre: <externalProcess>
Elementi figlio: nessuno
Sintassi:
<commandLine>StringaRigaDiComando</commandLine>
Impostazione | Obbligatoria? | Valore |
---|---|---|
StringaRigaDiComando |
Sì |
Una riga di comando valida. |
<component>
L'elemento <component> è obbligatorio in un file XML personalizzato. Questo elemento definisce il costrutto più semplice di un file XML di migrazione. Nel file MigApp.xml, ad esempio, "Microsoft® Office 2003" è un componente che contiene un altro elemento, "Microsoft Office Access® 2003". Puoi usare gli elementi figlio per definire il componente.
Puoi annidare un componente all'interno di un altro, ossia l'elemento <component> può essere un figlio dell'elemento <role> all'interno dell'elemento <component> in due casi: 1) quando l'elemento <component> padre è un contenitore oppure 2) se l'elemento <component> figlio ha lo stesso ruolo dell'elemento <component> padre.
Numero di occorrenze: illimitate
Elementi padre: <migration>, <role>
Elementi figlio obbligatori: <role>, <displayName>
Elementi figlio facoltativi: <manufacturer>, <version>, <description>, <paths>, <icon>, <environment>, <extensions>
Sintassi:
<component type="System|Application|Device|Documents" context="User|System|UserAndSystem" defaultSupported="TRUE|FALSE|YES|NO"
hidden="Yes|No">
</component>
Impostazione | Obbligatoria? | Valore |
---|---|---|
type |
Sì |
Puoi usare le indicazioni seguenti per raggruppare le impostazioni e definire il tipo di componente.
|
context |
No (impostazione predefinita = UserAndSystem) |
Definisce l'ambito del parametro, ovvero se elaborare il componente nel contesto dello specifico utente, in tutto il sistema operativo o in entrambi i contesti. L'ambito più vasto possibile è impostato dall'elemento <component>. Ad esempio, se un elemento <component> ha un contesto User e un elemento <rules> ha un contesto UserAndSystem, l'elemento <rules> opera come se avesse un contesto User. Se un elemento <rules> ha un contesto System, opera 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), non verrà eseguita la migrazione del componente a meno che non esista un componente equivalente nel computer di destinazione. Quando type="System" e defaultSupported="FALSE" non verrà eseguita la migrazione delle impostazioni a meno che non esista un componente equivalente nei file XML specificati nella riga di comando LoadState. Ad esempio, il file predefinito MigSys.xml contiene componenti con type="System" e defaultSupported="FALSE". Se specifichi questo file nella riga di comando di ScanState, devi anche specificare il file nella riga di comando di LoadState per le impostazioni di cui eseguire la migrazione. Il motivo è dovuto al fatto che lo strumento LoadState deve rilevare un componente equivalente. In altri termini, il componente deve avere lo stesso urlid di migrazione del file XML e un nome visualizzato identico. In caso contrario lo strumento LoadState non eseguirà la migrazione di queste impostazioni dall'archivio. Questo è utile quando il computer di origine esegue Windows XP e intendi eseguire la migrazione sia in Windows Vista che in Windows XP, perché puoi usare lo stesso archivio per entrambi i computer di destinazione. |
hidden |
|
Questo parametro è riservato per uso interno in USMT. |
Per un esempio, vedi uno dei file XML di migrazione predefiniti.
<condition>
Anche se l'elemento <condition> è supportato per gli elementi <detect>, <objectSet> e <addObjects>, consigliamo di non usarlo. Questo elemento potrebbe essere deprecato nelle versioni future di USMT, rendendo così necessaria la riscrittura degli script. Se devi usare una condizione con gli elementi <objectSet> e <addObjects>, ti consigliamo di usare l'elemento <conditions> più versatile, che consente di formulare istruzioni booleane complesse.
Il risultato dell'elemento <condition> è un valore booleano. Puoi usare questo elemento per specificare le condizioni di valutazione dell'elemento padre. Se una delle condizioni presenti restituisce FALSE, l'elemento padre non sarà valutato.
Numero di occorrenze: illimitate.
Elementi padre: <conditions>, <detect>, <objectSet>, <addObjects>
Elementi figlio: nessuno
Funzioni helper: con questo elemento puoi usare le Funzioni <condition> seguenti: DoesOSMatch, IsNative64Bit(), IsOSLaterThan, IsOSEarlierThan, DoesObjectExist, DoesFileVersionMatch, IsFileVersionAbove, IsFileVersionBelow, IsSystemContext, DoesStringContentEqual, DoesStringContentContain, IsSameObject, IsSameContent e IsSameStringContent.
Sintassi:
<condition negation="Yes|No">NomeScript</condition>
Impostazione | Obbligatoria? | Valore |
---|---|---|
negation |
No (impostazione predefinita = No) |
"Yes" inverte il valore vero/falso della condizione. |
NomeScript |
Sì |
Script definito in questa sezione della migrazione. |
Ad esempio:
Nell'esempio di codice seguente, gli elementi <condition> A e B sono uniti con l'operatore AND perché si trovano in sezioni <conditions> separate. Ad esempio:
<detection>
<conditions>
<condition>A</condition>
</conditions>
<conditions operation="AND">
<condition>B</condition>
</conditions>
</detection>
Nell'esempio di codice seguente, tuttavia, gli elementi <condition> A e B sono uniti con l'operatore OR perché si trovano nella stessa sezione <conditions>.
<detection>
<conditions>
<condition>A</condition>
<condition>B</condition>
</conditions>
</detection>
Funzioni <condition>
Le funzioni <condition> restituiscono un valore booleano. Puoi usare questi elementi nelle condizioni <addObjects>.
Funzioni per la versione del sistema operativo
Funzioni per il contenuto degli oggetti
Funzioni per la versione del sistema operativo
DoesOSMatch
Per tutte le corrispondenze la distinzione tra maiuscole e minuscole non è rilevante.
Sintassi: DoesOSMatch("TipoSO","VersioneSO")
Impostazione Obbligatoria? Valore TipoSO
Sì
L'unico valore valido per questa impostazione è NT. Tieni presente, tuttavia, che devi specificare questa impostazione per il corretto funzionamento delle funzioni <condition>.
VersioneSO
Sì
Versione principale, versione secondaria, numero di build e versione del dischetto del servizio corretto, separati da punti. Ad esempio,
5.0.2600.Service Pack 1
. Puoi anche specificare in modo parziale la versione tramite un pattern. Ad esempio,5.0.*
.Ad esempio:
<condition>MigXmlHelper.DoesOSMatch("NT","*")</condition>
IsNative64Bit
La funzione IsNative64Bit restituisce TRUE se il processo di migrazione viene eseguito come processo a 64 bit nativo, ovvero un processo in esecuzione in un sistema a 64 bit senza Windows on Windows (WOW). In caso contrario, restituisce FALSE.
IsOSLaterThan
In tutti i confronti non viene applicata la distinzione tra maiuscole e minuscole.
Sintassi: IsOSLaterThan("TipoSO","VersioneSO")
Impostazione Obbligatoria? Valore TipoSO
Sì
Può essere 9x oppure NT. Se TipoSO non corrisponde al tipo del sistema operativo corrente, restituisce FALSE. Ad esempio, se il sistema operativo corrente è basato su Windows NT e TipoSO è "9x", il risultato sarà FALSE.
VersioneSO
Sì
Versione principale, versione secondaria, numero di build e versione del dischetto del servizio corretto, separate da punti. Ad esempio,
5.0.2600.Service Pack 1
. È anche possibile specificare in modo parziale la versione, ma non è consentito l'uso di pattern. Ad esempio,5.0
.La funzione IsOSLaterThan restituisce TRUE se la versione del sistema operativo corrente è successiva o uguale a VersioneSO.
Ad esempio:
<condition negation="Yes">MigXmlHelper.IsOSLaterThan("NT","6.0")</condition>
IsOSEarlierThan
In tutti i confronti non viene applicata la distinzione tra maiuscole e minuscole.
Sintassi: IsOSEarlierThan("TipoSO","VersioneSO")
Impostazione Obbligatoria? Valore TipoSO
Sì
Può essere 9x oppure NT. Se TipoSO non corrisponde al tipo del sistema operativo corrente, restituisce FALSE. Ad esempio, se il sistema operativo corrente è basato su Windows NT e TipoSO è "9x", il risultato sarà FALSE.
VersioneSO
Sì
Versione principale, versione secondaria, numero di build e versione del dischetto del servizio corretto, separate da punti. Ad esempio,
5.0.2600.Service Pack 1
. È anche possibile specificare in modo parziale la versione, ma non è consentito l'uso di pattern. Ad esempio,5.0
.La funzione IsOSEarlierThan restituisce TRUE se la versione del sistema operativo corrente è precedente a VersioneSO.
Funzioni per il contenuto degli oggetti
DoesObjectExist
La funzione DoesObjectExist restituisce TRUE se esistono oggetti corrispondenti al pattern del percorso. In caso contrario, restituisce FALSE. Il pattern del percorso viene espanso prima di tentare l'enumerazione.
Sintassi: DoesObjectExist("TipoOggetto","PatternPercorsoCodificato")
Impostazione Obbligatoria? Valore TipoOggetto
Sì
Definisce il tipo di oggetto. Può essere File o Registry.
PatternPercorsoCodificato
Sì
Specificare i percorsi. Le variabili di ambiente sono consentite.
Per un esempio di questo elemento, vedi il file MigApp.xml.
DoesFileVersionMatch
Per il controllo del pattern non viene fatta distinzione tra maiuscole e minuscole.
Sintassi: DoesFileVersionMatch("PercorsoFileCodificato","TagVersione","ValoreVersione")
Impostazione Obbligatoria? Valore PercorsoFileCodificato
Sì
Specificare i percorsi per il file che verrà controllato. Le variabili di ambiente sono consentite.
TagVersione
Sì
Valore del Tag di versione validi che verrà controllato.
ValoreVersione
Sì
Pattern 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 ValoreVersione.
Sintassi: IsFileVersionAbove("PercorsoFileCodificato","TagVersione","ValoreVersione")
Impostazione Obbligatoria? Valore PercorsoFileCodificato
Sì
Specificare i percorsi per il file che verrà controllato. Le variabili di ambiente sono consentite.
TagVersione
Sì
Valore del Tag di versione validi che verrà controllato.
ValoreVersione
Sì
Valore con cui eseguire il confronto. Non è possibile specificare un pattern.
IsFileVersionBelow
Sintassi: IsFileVersionBelow("PercorsoFileCodificato","TagVersione","ValoreVersione")
Impostazione Obbligatoria? Valore PercorsoFileCodificato
Sì
Specificare i percorsi per il file che verrà controllato. Le variabili di ambiente sono consentite.
TagVersione
Sì
Valore del Tag di versione validi che verrà controllato.
ValoreVersione
Sì
Valore con cui eseguire il confronto. Non è possibile specificare un pattern.
IsSystemContext
La funzione IsSystemContext restituisce TRUE se il contesto corrente è "System". In caso contrario, restituisce FALSE.
Sintassi: IsSystemContext()
DoesStringContentEqual
La funzione DoesStringContentEqual restituisce TRUE se la rappresentazione stringa dell'oggetto specificato è identica a
StringContent
.Sintassi: DoesStringContentEqual("TipoOggetto","PercorsoCodificato","ContenutoStringa")
Impostazione Obbligatoria? Valore TipoOggetto
Sì
Definisce il tipo di oggetto. Può essere File o Registry.
PercorsoCodificato
Sì
Specificare i percorsi per l'oggetto che verrà esaminato. È possibile specificare variabili di ambiente.
ContenutoStringa
Sì
Stringa in base alla quale verrà eseguito il controllo.
Ad esempio:
<condition negation="Yes">MigXmlHelper.DoesStringContentEqual("File","%USERNAME%","")</condition>
DoesStringContentContain
La funzione DoesStringContentContain restituisce TRUE se è presente almeno una occorrenza di StringaDaTrovare nella rappresentazione stringa dell'oggetto.
Sintassi: DoesStringContentContain("TipoOggetto","PercorsoCodificato","StringaDaTrovare")
Impostazione Obbligatoria? Valore TipoOggetto
Sì
Definisce il tipo di oggetto. Può essere File o Registry.
PercorsoCodificato
Sì
Specificare i percorsi per l'oggetto che verrà esaminato. È possibile specificare variabili di ambiente.
StringaDaTrovare
Sì
Stringa che verrà cercata nel contenuto dell'oggetto specificato.
IsSameObject
La funzione IsSameObject restituisce TRUE se i percorsi codificati specificati corrispondono allo stesso oggetto fisico. In caso contrario, restituisce FALSE.
Sintassi: IsSameObject("TipoOggetto","PercorsoCodificato1","PercorsoCodificato2")
Impostazione Obbligatoria? Valore TipoOggetto
Sì
Definisce il tipo di oggetto. Può essere File o Registry.
PercorsoCodificato1
Sì
Specificare i percorsi per il primo oggetto. È possibile specificare variabili di ambiente.
PercorsoCodificato2
Sì
Specificare i percorsi 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 restituisce TRUE se il contenuto degli oggetti specificati è uguale. In caso contrario, restituisce FALSE. Il contenuto verrà confrontato byte per byte.
Sintassi: IsSameContent("TipoOggetto1","PercorsoCodificato1","TipoOggetto2","PercorsoCodificato2")
Impostazione Obbligatoria? Valore TipoOggetto1
Sì
Definisce il tipo del primo oggetto. Può essere File o Registry.
PercorsoCodificato1
Sì
Specificare i percorsi per il primo oggetto. È possibile specificare variabili di ambiente.
TipoOggetto2
Sì
Definisce il tipo del secondo oggetto. Può essere File o Registry.
PercorsoCodificato2
Sì
Specificare i percorsi per il secondo oggetto. È possibile specificare variabili di ambiente.
IsSameStringContent
La funzione IsSameStringContent restituisce TRUE se il contenuto degli oggetti specificati è uguale. In caso contrario, restituisce FALSE. Il contenuto verrà interpretato come stringa.
Sintassi: IsSameStringContent("TipoOggetto1","PercorsoCodificato1","TipoOggetto2","PercorsoCodificato2")
Impostazione Obbligatoria? Valore TipoOggetto1
Sì
Definisce il tipo del primo oggetto. Può essere File o Registry.
PercorsoCodificato1
Sì
Specificare i percorsi per il primo oggetto. È possibile specificare variabili di ambiente.
TipoOggetto2
Sì
Definisce il tipo del secondo oggetto. Può essere File o Registry.
PercorsoCodificato2
Sì
Specificare i percorsi per il secondo oggetto. È possibile specificare variabili di ambiente.
<conditions>
L'elemento <conditions> restituisce un valore booleano usato per specificare le condizioni di valutazione dell'elemento padre. USMT valuta gli elementi figlio, quindi unisce i risultati con gli operatori AND o OR in base al parametro operation.
Numero di occorrenze: illimitate all'interno di un altro elemento <conditions>. Una sola occorrenza in <detection>, <rules>, <addObjects> e <objectSet>
Elementi padre: <conditions>, <detection>, <environment>, <rules>, <addObjects> e <objectSet>
Elementi figlio: <conditions>, <condition>
Sintassi:
<conditions operation="AND|OR">
</conditions>
Impostazione | Obbligatoria? | Valore |
---|---|---|
operation |
No (impostazione predefinita = AND) |
Definisce l'operazione booleana eseguita sui risultati ottenuti dagli elementi figlio. |
L'esempio seguente è tratto dal file MigApp.xml:
<environment name="GlobalEnv">
<conditions>
<condition negation="Yes">MigXmlHelper.IsNative64Bit()</condition>
</conditions>
<variable name="HklmWowSoftware">
<text>HKLM\Software</text>
</variable>
</environment>
<content>
Puoi usare l'elemento <content> per specificare un elenco di pattern di oggetti per ottenere un set di oggetti dal computer di origine. Viene valutato ogni <objectSet> in un elemento <content>. Per ogni elenco di pattern di oggetti risultante, vengono enumerati gli oggetti corrispondenti e il relativo contenuto viene filtrato in base al parametro filter. La matrice di stringhe risultante è l'output dell'elemento <content>. Lo script di filtro restituisce una matrice di percorsi. L'elemento <objectSet> padre può contenere più elementi <content> figlio.
Numero di occorrenze: illimitate
Elementi padre: <objectSet>
Elementi figlio: <objectSet>
Funzioni helper: con questo elemento puoi usare le Funzioni <content> seguenti: ExtractSingleFile, ExtractMultipleFiles ed ExtractDirectory.
Sintassi:
<content filter="ChiamataScript">
</content>
Impostazione | Obbligatoria? | Valore |
---|---|---|
filter |
Sì |
Script seguito da qualsiasi numero di argomenti stringa separati da una virgola e racchiusi tra parentesi. Ad esempio Lo script viene chiamato per ogni oggetto enumerato dai set di oggetti nella regola <include>. Lo script del filtro restituisce un valore booleano. Se il valore restituito è TRUE, verrà eseguita la migrazione dell'oggetto. Se è FALSE, non verrà eseguita la migrazione. |
Funzioni <content>
Le funzioni seguenti generano pattern dal contenuto di un oggetto. Queste funzioni vengono chiamate per ogni oggetto enumerato dall'elemento <objectSet> padre.
ExtractSingleFile
Se il valore del Registro di sistema è di tipo MULTI-SZ, viene elaborato solo il primo segmento. Il pattern 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, la funzione restituisce NULL.
Sintassi: ExtractSingleFile(Separatori,SuggerimentiPercorsi)
Impostazione Obbligatoria? Valore Separatori
Sì
Elenco di possibili separatori che possono seguire la specifica del file in questo nome del valore del Registro di sistema. Ad esempio, se il contenuto è "C:\Windows\Notepad.exe,-2", il separatore è una virgola. Puoi specificare NULL.
SuggerimentiPercorsi
Sì
Elenco di percorsi aggiuntivi separati da punti e virgola (;), in cui la funzione cercherà un file corrispondente al contenuto corrente. Ad esempio, se il contenuto è "Notepad.exe" e il percorso è la variabile di ambiente %Path%, la funzione troverà Notepad.exe in %windir% e restituirà “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ù pattern, uno per ogni file individuato nel contenuto del valore del Registro di sistema specificato. Se il valore del Registro di sistema è di tipo MULTI-SZ, il separatore MULTI-SZ è considerato un separatore per impostazione predefinita. Nel caso di MULTI-SZ, pertanto, l'argomento <Separatori> deve essere NULL.
I pattern restituiti corrispondono ai percorsi codificati per i file che devono esistere nel sistema. Se la specifica è corretta nel valore del Registro di sistema, ma il file non esiste, non sarà incluso nell'elenco risultante.
Sintassi: ExtractMultipleFiles(Separatori,SuggerimentiPercorsi)
Impostazione Obbligatoria? Valore Separatori
Sì
Elenco di possibili separatori che possono seguire la specifica del file in questo nome del valore del Registro di sistema. Ad esempio, se il contenuto è "C:\Windows\Notepad.exe,-2", il separatore è una virgola. Questo parametro deve essere NULL per l'elaborazione di valori del Registro di sistema di tipo MULTI-SZ.
SuggerimentiPercorsi
Sì
Elenco di percorsi aggiuntivi separati da punti e virgola (;), in cui la funzione cercherà un file corrispondente al contenuto corrente. Ad esempio, se il contenuto è "Notepad.exe" e il percorso è la variabile di ambiente %Path%, la funzione troverà Notepad.exe in %windir% e restituirà “c:\Windows [Notepad.exe]”. Puoi specificare NULL.
ExtractDirectory
La funzione ExtractDirectory restituisce un pattern corrispondente al 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, la funzione restituisce NULL. Se il valore del Registro di sistema è di tipo MULTI-SZ, verrà elaborato solo il primo segmento.
Sintassi: ExtractDirectory(Separatori,LivelliTaglio,SuffissoPattern)
Impostazione Obbligatoria? Valore Separatori
No
Elenco di possibili separatori che possono seguire la specifica del file in questo nome del valore del Registro di sistema. Ad esempio, se il contenuto è "C:\Windows\Notepad.exe,-2", il separatore è una virgola. Devi specificare NULL per l'elaborazione di valori del Registro di sistema di tipo MULTI-SZ.
LivelliTaglio
Sì
Numero di livelli da eliminare dalla fine della specifica di directory. Usa questa funzione per estrarre una directory radice quando disponi di un valore del Registro di sistema che punta all'interno di tale directory radice in un percorso noto.
SuffissoPattern
Sì
Pattern da aggiungere alla specifica di 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 venga scritto nel computer di destinazione. Per ogni elemento <contentModify> possono esistere più elementi <objectSet>. Questo elemento restituisce il nuovo contenuto dell'oggetto in corso di elaborazione.
Numero di occorrenze: illimitate
Elementi padre: <rules>
Elementi figlio obbligatori: <objectSet>
Funzioni helper: con questo elemento puoi usare le Funzioni <contentModify> seguenti: ConvertToDWORD, ConvertToString, ConvertToBinary, KeepExisting, OffsetValue, SetValueByTable, MergeMultiSzContent e MergeDelimitedContent.
Sintassi:
<contentModify script="ChiamataScript">
</contentModify>
Impostazione | Obbligatoria? | Valore |
---|---|---|
script |
Sì |
Script seguito da qualsiasi numero di argomenti stringa separati da una virgola e racchiusi tra parentesi. Ad esempio Lo script verrà chiamato per ogni oggetto enumerato dai set di oggetti nella regola di inclusione. Lo script del filtro restituisce un valore booleano. Se il valore restituito è TRUE, verrà eseguita la migrazione dell'oggetto. Se è FALSE, non verrà eseguita la migrazione. |
Funzioni <contentModify>
Le funzioni seguenti modificano il contenuto degli oggetti durante la migrazione. Queste funzioni vengono chiamate per ogni oggetto enumerato dall'elemento <objectSet> padre.
ConvertToDWORD
La funzione ConvertToDWORD converte in un valore DWORD il contenuto dei valori del Registro di sistema enumerati dall'elemento <objectSet> padre. Ad esempio, ConvertToDWORD convertirà la stringa "1" nel valore DWORD 0x00000001. Se la conversione non riesce, verrà applicato il valore di ValorePredefinitoInCasoDiErrore.
Sintassi: ConvertToDWORD(ValorePredefinitoInCasoDiErrore)
Impostazione Obbligatoria? Valore ValorePredefinitoInCasoDiErrore
No
Valore che verrà scritto nel nome del valore se la conversione non riesce. È possibile specificare NULL e verrà scritto 0 se la conversione non riesce.
ConvertToString
La funzione ConvertToString converte in una stringa il contenuto dei valori del Registro di sistema corrispondenti all'elemento <objectSet> padre. Ad esempio, il valore DWORD 0x00000001 verrà convertito nella stringa "1". Se la conversione non riesce, verrà applicato il valore di ValorePredefinitoInCasoDiErrore.
Sintassi: ConvertToString(ValorePredefinitoInCasoDiErrore)
Impostazione Obbligatoria? Valore ValorePredefinitoInCasoDiErrore
No
Valore che verrà scritto nel nome del valore se la conversione non riesce. È possibile specificare NULL e verrà scritto 0 se la conversione non riesce.
Ad esempio:
<contentModify script="MigXmlHelper.ConvertToString('1')"> <objectSet> <pattern type="Registry">HKCU\Control Panel\Desktop [ScreenSaveUsePassword]</pattern> </objectSet> </contentModify>
ConvertToBinary
La funzione ConvertToBinary converte in un tipo binario il contenuto dei valori del Registro di sistema corrispondenti all'elemento <objectSet> padre.
Sintassi: ConvertToBinary ()
OffsetValue
La funzione OffsetValue aggiunge o sottrae Valore dal valore dell'oggetto migrato, quindi riscrive il risultato nel valore del Registro di sistema nel computer di destinazione. Ad esempio, se l'oggetto migrato è un DWORD con valore 14, e Valore è "-2", il valore del Registro di sistema sarà 12 nel computer di destinazione.
Sintassi: OffsetValue(Valore)
Impostazione Obbligatoria? Valore Valore
Sì
Rappresentazione stringa di un valore numerico. Può essere positivo o negativo. Ad esempio,
OffsetValue(2)
.SetValueByTable
La funzione SetValueByTable cerca una corrispondenza tra il valore dal computer di origine e la tabella di origine. Se il valore è presente, verrà applicato il valore equivalente nella tabella di destinazione. Se il valore non è presente o se non esiste un valore equivalente nella tabella di destinazione, verrà applicato ValorePredefinitoInCasoDiErrore.
Sintassi: SetValueByTable(TabellaOrigine,TabellaDestinazione,ValorePredefinitoInCasoDiErrore)
Impostazione Obbligatoria? Valore TabellaOrigine
Sì
Elenco di valori separati da virgole possibili per i valore del Registro di sistema di origine.
TabellaDestinazione
No
Elenco di valori convertiti separati da virgole.
ValorePredefinitoInCasoDiErrore
No
Il valore che verrà applicato nel computer di destinazione se 1) il valore per il computer di origine non corrisponde a TabellaOrigine oppure 2) TabellaDestinazione non contiene un valore equivalente.
Se ValorePredefinitoInCasoDiErrore è NULL, il valore non verrà modificato nel computer di destinazione.
KeepExisting
Puoi usare la funzione KeepExisting in presenza di conflitti nel computer di destinazione. Questa funzione mantiene (non sovrascrive) gli attributi specificati per l'oggetto nel computer di destinazione.
Sintassi: KeepExisting("StringaOpzione","StringaOpzione","StringaOpzione",…)
Impostazione Obbligatoria? Valore StringaOpzione
Sì
StringaOpzione può essere Security, TimeFields o FileAttrib:lettera. Puoi specificare una sola StringaOpzione di ogni tipo. Non specificare più di una StringaOpzione con lo stesso valore. Se lo fai, verrà mantenuta l'opzione più a destra di tale tipo. Ad esempio, non specificare ("FileAttrib:H", "FileAttrib:R") perché verrà valutato solo l'attributo di sola lettura. Specifica invece ("FileAttrib:HR") per mantenere entrambi gli attributi nascosto e di sola lettura nel computer di destinazione.
- Sicurezza: Mantiene il descrittore di sicurezza dell'oggetto di destinazione se esiste.
- TimeFields. Mantiene i timestamp dell'oggetto di destinazione. Questo parametro può essere usato solo per i file.
- FileAttrib:lettera. Mantiene il valore di attributo dell'oggetto di destinazione (attivato o disattivato) per l'insieme specificato di attributi dei file. Questo parametro può essere usato solo per i file. Per i valori seguenti non viene fatta distinzione tra maiuscole e minuscole, ma USMT ignorerà qualsiasi valore non valido o ripetuto oppure con uno spazio dopo "FileAttrib:". Puoi specificare qualsiasi combinazione degli attributi seguenti:
- A = archivio
- C = compresso
- E = crittografato
- H = nascosto
- I = contenuto non indicizzato
- O = offline
- R = sola lettura
- S = sistema
- T = temporaneo
- A = archivio
- Sicurezza: Mantiene il descrittore di sicurezza dell'oggetto di destinazione se esiste.
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à esistenti nel computer di destinazione.
Instruction
eString
rimuovono o aggiungono contenuto al valore MULTI-SZ risultante. Gli elementi duplicati verranno rimossi.Sintassi: MergeMultiSzContent (Istruzione,Stringa,Istruzione,Stringa,…)
Impostazione Obbligatoria? Valore Istruzione
Sì
I valori a disposizione sono:
- Add. Aggiunge la stringa corrispondente al valore MULTI-SZ risultante, se non è già presente.
- Remove. Rimuove la stringa corrispondente dal valore MULTI-SZ risultante.
Stringa
Sì
Stringa da aggiungere o rimuovere.
- Add. Aggiunge la stringa corrispondente al valore MULTI-SZ risultante, se non è già presente.
MergeDelimitedContent
La funzione MergeDelimitedContent unisce il contenuto dei valori del Registro di sistema enumerati dall'elemento <objectSet> padre con il contenuto dei valori del Registro di sistema equivalenti già esistenti nel computer di destinazione. Il contenuto viene considerato un elenco di elementi separati da uno dei caratteri specificati nel parametro Delimitatori. Gli elementi duplicati verranno rimossi.
Sintassi: MergeDelimitedContent(Delimitatori,Istruzione,Stringa,…)
Impostazione Obbligatoria? Valore Delimitatori
Sì
Singolo carattere che verrà usato per separare il contenuto dell'oggetto in corso di elaborazione. Il contenuto verrà considerato un elenco di elementi separato da Delimitatori.
Con il delimitatore ".", ad esempio, la stringa verrà separata in base a un punto.
Istruzione
Sì
Può essere uno dei valori seguenti:
- Add. Aggiunge Stringa al valore MULTI-SZ risultante, se non è già presente.
- Remove. Rimuove Stringa dal valore MULTI-SZ risultante.
Stringa
Sì
Stringa da aggiungere o rimuovere.
- Add. Aggiunge Stringa al valore MULTI-SZ risultante, se non è già presente.
<description>
L'elemento <description> definisce una descrizione per il componente ma non influisce sulla migrazione.
Numero di occorrenze: zero o una
Elementi padre: <component>
Elementi figlio: nessuno
Sintassi:
<description>DescrizioneComponente</description>
Impostazione | Obbligatoria? | Valore |
---|---|---|
DescrizioneComponente |
Sì |
Descrizione del componente. |
L'esempio di codice seguente mostra come definire la descrizione "My custom component" con l'elemento <description>:
<description>My custom component<description>
<destinationCleanup>
L'elemento <destinationCleanup> elimina gli oggetti, come 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 al momento dell'esecuzione dello strumento LoadState nel computer di destinazione, ovvero l'elemento viene ignorato dallo strumento ScanState.
Importante
Usa questa opzione con estrema cautela perché eliminerà gli oggetti dal computer di destinazione.
Per ogni elemento <destinationCleanup> possono esistere più elementi <objectSet>. Un uso comune di questo elemento è quando vuoi assicurarti che un componente venga incluso nella migrazione se una chiave del Registro di sistema risulta mancante nel computer di origine. In questo caso, puoi eliminare tutte le chiavi del Registro di sistema per il componente prima di eseguire la migrazione delle chiavi del Registro di sistema di origine. Potrai essere così sicuro che se una chiave manca nel computer di origine mancherà anche nel computer di destinazione.
Numero di occorrenze: illimitate
Elementi padre: <rules>
Elementi figlio: <objectSet> (tieni presente che il computer di destinazione eliminerà tutti gli elementi figlio.)
Sintassi:
<destinationCleanup filter=ChiamataScript>
</destinationCleanup>
Impostazione | Obbligatoria? | Valore |
---|---|---|
filter |
Sì |
Script seguito da qualsiasi numero di argomenti stringa separati da una virgola e racchiusi tra parentesi. Ad esempio Lo script verrà chiamato per ogni oggetto enumerato dai set di oggetti nella regola di inclusione. Lo script del filtro restituisce un valore booleano. Se il valore restituito è TRUE, verrà eseguita la migrazione dell'oggetto. Se è FALSE, non verrà 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>
<detect>
Anche se l'elemento <detect> è ancora supportato, sconsigliamo di usarlo perché potrebbe essere deprecato nelle versioni future di USMT. In tal caso, diventerebbe necessario riscrivere gli script. Consigliamo invece di usare l'elemento <detection>.
Puoi usare l'elemento <detect> per stabilire se un componente è presente in un sistema. Se tutti gli elementi figlio <detect> in un elemento <detect> corrispondono a TRUE, anche l'elemento <detect> corrisponde a TRUE. Se qualsiasi elemento figlio <detect> corrisponde a FALSE, il relativo elemento padre <detect> corrisponde a FALSE. In assenza di una sezione per l'elemento <detect>, USMT presuppone che il componente sia presente.
Per ogni elemento <detect> possono esistere più elementi figlio <condition> o <objectSet>, che verranno uniti logicamente tramite un operatore OR. Se almeno un elemento <condition> o <objectSet> restituisce TRUE, allora l'elemento <detect> restituisce TRUE.
Numero di occorrenze: illimitate
Elementi padre: <detects>, <namedElements>
Elementi figlio obbligatori: <condition>
Elementi figlio facoltativi: <objectSet>
Sintassi:
<detect name="ID" context="User|System|UserAndSystem">
</detect>
Impostazione | Obbligatoria? | Valore |
---|---|---|
name |
Sì, quando <detect> è un figlio di <namedElements> No, quando <detect> è un figlio di <detects> |
Quando si specifica ID, gli eventuali elementi figlio non vengono elaborati. Verranno invece elaborati gli eventuali altri elementi <detect> con lo stesso nome dichiarati nell'elemento <namedElements>. |
context |
No (impostazione predefinita = UserAndSystem) |
Definisce l'ambito del parametro: se elaborare il componente nel contesto dello specifico utente, in tutto il sistema operativo o in entrambi. L'ambito più vasto possibile è impostato dall'elemento component. Ad esempio, se un elemento <component> ha un contesto User e un elemento <rules> ha un contesto UserAndSystem, l'elemento <rules> opera come se avesse un contesto User. Se l'elemento <rules> ha un contesto System, opera come se l'elemento <rules> non fosse presente.
|
Per esempi di questo elemento, vedi gli esempi per <detection>.
<detects>
Anche se l'elemento <detects> è ancora supportato, sconsigliamo di usarlo perché potrebbe essere deprecato nelle versioni future di USMT e potrebbe quindi diventare necessario riscrivere gli script. Consigliamo invece di usare l'elemento <detection> se l'elemento padre è <role> o <namedElements>, e di usare l'elemento <conditions> se l'elemento padre è <rules>. L'uso di <detection> consente di formulare più chiaramente istruzioni booleane complesse.
L'elemento <detects> è un contenitore per uno o più elementi <detect>. Se tutti gli elementi figlio <detect> in un elemento <detects> corrispondono a TRUE, anche <detects> corrisponde a TRUE. Se qualsiasi elemento figlio <detect> corrisponde a FALSE, <detects> corrisponde a FALSE. Se non vuoi scrivere gli elementi <detects> in un componente, puoi creare l'elemento <detects> all'interno dell'elemento <namedElements> e quindi farvi riferimento. In assenza di una sezione per l'elemento <detects>, USMT presuppone che il componente sia presente. I risultati di ogni elemento <detects> vengono uniti tramite l'operatore OR per comporre la regola usata per rilevare l'elemento padre.
Sintassi:
<detects name="ID" context="User|System|UserAndSystem">
</detects>
Numero di occorrenze: illimitate.
Elementi padre: <role>, <rules>, <namedElements>
Elementi figlio obbligatori: <detect>
Impostazione | Obbligatoria? | Valore |
---|---|---|
name |
Sì, quando <detects> è un figlio di <namedElements> No, quando <detects> è un figlio di <role> o <rules> |
Quando si specifica ID, nessun elemento figlio <detect> viene elaborato. Verranno invece elaborati gli eventuali altri elementi <detects> con lo stesso nome dichiarati nell'elemento <namedElements>. |
context |
No (impostazione predefinita = UserAndSystem) |
Definisce l'ambito del parametro: se elaborare il componente nel contesto dello specifico utente, in tutto il sistema operativo o in entrambi. L'ambito più vasto possibile è impostato dall'elemento <component>. Ad esempio, se un elemento <component> ha un contesto User e un elemento <rules> ha un contesto UserAndSystem, l'elemento <rules> opera come se avesse un contesto User. Se l'elemento <rules> ha un contesto System, opera come se l'elemento <rules> non fosse presente.
Il parametro context viene ignorato per gli elementi <detects> inclusi in elementi <rules>. |
L'esempio seguente è tratto dal file MigApp.xml.
<detects>
<detect>
<condition>MigXmlHelper.DoesFileVersionMatch("%Lotus123InstPath%\123w.exe","ProductVersion","9.*")</condition>
</detect>
<detect>
<condition>MigXmlHelper.DoesFileVersionMatch("%SmartSuiteInstPath%\smartctr.exe","ProductVersion","99.*")</condition>
</detect>
</detects>
<detection>
L'elemento <detection> è un contenitore per un elemento <conditions>. Il risultato di questo elemento dipende dal risultato degli elementi figlio <condition>, posizionati all'interno dell'elemento <conditions>. Ad esempio, se tutti gli elementi figlio <conditions> nell'elemento <detection> corrispondono a TRUE, allora l'elemento <detection> corrisponde a TRUE. Se qualsiasi elemento figlio <conditions> corrisponde a FALSE, allora l'elemento <detection> corrisponde a FALSE.
I risultati di ogni sezione <detection> nell'elemento <role>, inoltre, vengono uniti tramite l'operatore OR per comporre la regola di rilevamento dell'elemento padre. Ciò significa che se una delle sezioni <detection> corrisponde a TRUE, allora verrà elaborato l'elemento <role>. In caso contrario, l'elemento <role> non verrà elaborato.
Usa l'elemento <detection> all'interno dell'elemento <namedElements> se non vuoi scriverlo in un componente. Includi quindi una sezione <detection> corrispondente nell'elemento <role> per controllare se viene eseguita la migrazione del componente. In assenza di una sezione <detection> per un componente, USMT presuppone che il componente sia presente.
Numero di occorrenze: illimitate.
Elementi padre: <role>, <namedElements>
Elementi figlio: <conditions>
Sintassi:
<detection name="ID" context="User|System|UserAndSystem">
</detection>
Impostazione | Obbligatoria? | Valore |
---|---|---|
name |
|
Se dichiarato, il contenuto dell'elemento <detection> viene ignorato e verrà valutato il contenuto dell'elemento <detection> con lo stesso nome dichiarato nell'elemento <namedElements>. |
context |
No (impostazione predefinita = UserAndSystem) |
Definisce l'ambito del parametro: se elaborare il componente nel contesto dello specifico utente, in tutto il 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 in ogni elemento <component>.
Numero di occorrenze: una per ogni componente
Elementi padre: <component>
Elementi figlio: nessuno
Sintassi:
<displayName _locID="ID">NomeComponente</displayName>
Impostazione | Obbligatoria? | Valore |
---|---|---|
locID |
No |
Questo parametro è riservato per uso interno in USMT. Non usare questo parametro. |
NomeComponente |
Sì |
Nome per il componente. |
Ad esempio:
<displayName>Command Prompt settings</displayName>
<environment>
L'elemento <environment> è un contenitore per gli elementi <variable> in cui puoi definire le variabili da usare nel file XML. Tutte le variabili di ambiente definite in questo modo saranno private, ossia saranno disponibili solo per i relativi componenti figlio e per il componente in cui sono state definite. Per due scenari di esempio, vedi Esempi.
Numero di occorrenze: illimitate
Elementi padre: <role>, <component>, <namedElements>
Elementi figlio obbligatori: <variable>
Elementi figlio facoltativi: <conditions>
Sintassi:
<environment name="ID" context="User|System|UserAndSystem">
</environment>
Impostazione | Obbligatoria? | Valore |
---|---|---|
name |
Sì, quando <environment> è un figlio di <namedElements> No, quando <environment> è un figlio di <role> o <component> |
Quando questo elemento viene dichiarato come figlio degli elementi <role> o <component>, se la dichiarazione include ID, USMT ignora il contenuto dell'elemento <environment> e viene elaborato il contenuto dell'elemento <environment> con lo stesso nome dichiarato nell'elemento <namedElements>. |
context |
No (impostazione predefinita = UserAndSystem) |
Definisce l'ambito del parametro: se elaborare il componente nel contesto dello specifico utente, in tutto il sistema operativo o in entrambi. L'ambito più vasto possibile è impostato dall'elemento <component>. Ad esempio, se un elemento <component> ha un contesto User e un elemento <rules> ha un contesto UserAndSystem, l'elemento <rules> opera come se avesse un contesto User. Se l'elemento <rules> ha un contesto System, opera come se <rules> non fosse presente.
|
Scenario di esempio 1
In questo scenario, vuoi generare il percorso degli oggetti in fase di esecuzione, a seconda della configurazione nel computer di destinazione. Puoi avere la necessità di eseguire questa operazione, ad esempio, se un'applicazione scrive i dati nella directory di installazione e gli utenti possono installarla ovunque nel computer. Se l'applicazione scrive un valore del Registro di sistema hklm\software\companyname\install [path] e poi aggiorna questo valore con il percorso di installazione dell'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>
Puoi quindi usare una regola di inclusione come segue. Puoi usare una delle Funzioni <script> per eseguire attività simili.
<include>
<objectSet>
<pattern type="File">%INSTALLPATH%\ [*.xyz]</pattern>
</objectSet>
</include>
Puoi anche filtrare i valori del Registro di sistema che contengono i dati necessari. L'esempio seguente estrae 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, vuoi eseguire la migrazione di cinque file denominati File1.txt, File2.txt e così via, da %SYSTEMDRIVE%\data\userdata\dir1\dir2\. A tale scopo, deve essere presente la seguente regola <include> 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, puoi creare una variabile per il percorso come segue:
<environment>
<variable name="DATAPATH">
<text>%SYSTEMDRIVE%\data\userdata\dir1\dir2 </text>
</variable>
</environment>
Puoi quindi specificare la variabile in una regola <include> come segue:
<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 che non verranno inclusi nella migrazione, a meno che non esista un elemento <include> più specifico che imposta la migrazione di un oggetto. In presenza di un elemento <include> e uno <exclude> per lo stesso oggetto, questo verrà incluso. Per ogni elemento <exclude> possono esistere più elementi <objectSet> figlio.
Numero di occorrenze: illimitate
Elementi padre: <rules>
Elementi figlio: <objectSet>
Funzioni helper: con questo elemento puoi usare le Funzioni di filtro <include> ed <exclude> seguenti: CompareStringContent, IgnoreIrrelevantLinks, AnswerNo, NeverRestore e SameRegContent.
Sintassi:
<exclude filter="ChiamataScript">
</exclude>
Impostazione | Obbligatoria? | Valore |
---|---|---|
filter |
No (impostazione predefinita = No) |
Script seguito da qualsiasi numero di argomenti stringa separati da una virgola e racchiusi tra parentesi. Ad esempio Lo script verrà chiamato per ogni oggetto enumerato dai set di oggetti nella regola di inclusione. Lo script del filtro restituisce un valore booleano. Se il valore restituito è TRUE, verrà eseguita la migrazione dell'oggetto. Se è FALSE, non verrà eseguita la migrazione. |
Ecco un esempio tratto dal file MigUser.xml:
<exclude>
<objectSet>
<pattern type="File">%CSIDL_MYMUSIC%\* [*]</pattern>
<pattern type="File">%CSIDL_MYPICTURES%\* [*]</pattern>
<pattern type="File">%CSIDL_MYVIDEO%\* [*]</pattern>
</objectSet>
</exclude>
<excludeAttributes>
Puoi usare l'elemento <excludeAttributes> per stabilire quali parametri associati a un oggetto non verranno inclusi nella migrazione. In presenza di conflitti tra gli elementi <includeAttributes> ed <excludeAttributes>, il pattern più specifico determina i pattern che non verranno inclusi nella migrazione. Se un oggetto non ha un elemento <includeAttributes> o <excludeAttributes>, verrà eseguita la migrazione di tutti i relativi parametri.
Numero di occorrenze: illimitate
Elementi padre: <rules>
Elementi figlio: <objectSet>
Sintassi:
<excludeAttributes attributes="Security|TimeFields|Security,TimeFields">
</excludeAttributes>
Parametro | Obbligatoria? | Valore |
---|---|---|
attributes |
Sì |
Specifica gli attributi da escludere. È possibile specificare uno o entrambi i seguenti elementi, separati da virgolette. Ad esempio,
|
Esempio:
<migration urlid="https://www.microsoft.com/migration/1.0/migxmlext/miguser">
<!-- This component migrates My Video files -->
<component type="System" context="System">
<displayName>System Data</displayName>
<role role="Data">
<rules>
<!-- Include all of the text files, which are immediately in the drive where the operating system is installed -->
<include>
<objectSet>
<pattern type="File">%SYSTEMDRIVE%\ [*.txt]</pattern>
</objectSet>
</include>
<!-- Exclude the time stamps from the text file starting with the letter a -->
<excludeAttributes attributes="TimeFields">
<objectSet>
<pattern type="File">%SYSTEMDRIVE%\ [a*.txt]</pattern>
</objectSet>
</excludeAttributes>
<!-- include the time stamps from the text file aa.txt -->
<includeAttributes attributes="TimeFields">
<objectSet>
<pattern type="File">%SYSTEMDRIVE%\ [aa.txt]</pattern>
</objectSet>
</includeAttributes>
<!-- Logoff the user after loadstate successfully completed. -->
<externalProcess when="post-apply">
<commandLine>
logoff
</commandLine>
</externalProcess>
</rules>
</role>
<!-- Migrate
all doc files from the system
all power point files
all visio design files
all my c++ program files -->
<extensions>
<extension>DOC</extension>
<extension>PPT</extension>
<extension>VXD</extension>
<extension>PST</extension>
<extension>CPP</extension>
</extensions>
</component>
</migration>
<extensions>
L'elemento <extensions> è un contenitore per uno o più elementi <extension>.
Numero di occorrenze: zero o una
Elementi padre: <component>
Elementi figlio obbligatori: <extension>
Sintassi:
<extensions>
</extensions>
<extension>
Puoi usare l'elemento <extension> per specificare i documenti con una specifica estensione.
Numero di occorrenze: illimitate
Elementi padre: <extensions>
Elementi figlio: nessuno
Sintassi:
<extension>EstensioneNomeFile</extension>
Impostazione | Obbligatoria? | Valore |
---|---|---|
EstensioneNomeFile |
Sì |
Estensione di file. |
Per eseguire la migrazione di tutti i file con estensione DOC dal computer di origine, ad esempio, puoi specificare il codice seguente all'interno dell'elemento <component>:
<extensions>
<extension>doc</extension>
<extensions>
Equivale a specificare il codice seguente nell'elemento <rules>:
<include>
<objectSet>
<script>MigXmlHelper.GenerateDrivePatterns ("* [*.doc]", "Fixed")</script>
</objectSet>
</include>
Per un altro esempio di come usare l'elemento <extension>,vedi l'esempio per <excludeAttributes>.
<externalProcess>
Puoi usare l'elemento <externalProcess> per eseguire una riga di comando durante il processo di migrazione. Potresti avere la necessità, ad esempio, di eseguire un comando dopo il completamento del processo LoadState.
Numero di occorrenze: illimitate
Elementi padre: <rules>
Elementi figlio obbligatori: <commandLine>
Sintassi:
<externalProcess when="pre-scan|scan-success|post-scan|pre-apply|apply-success|post-apply">
</externalProcess>
Impostazione | Obbligatoria? | Valore |
---|---|---|
when |
Sì |
Indica quando deve essere eseguita la riga di comando. I valori a disposizione sono:
|
Per un esempio di come usare l'elemento <externalProcess>, vedi l'esempio per <excludeAttributes>.
<icon>
Questo è un elemento USMT interno. Non usare questo elemento.
<include>
L'elemento <include> determina cosa includere nella migrazione, a meno che non sia presente una regola <exclude> più specifica. Puoi usare uno script per estendere in modo più specifico la definizione degli oggetti da raccogliere. Per ogni elemento <include> possono esistere più elementi <objectSet>.
Numero di occorrenze: illimitate
Elementi padre: <rules>
Elemento figlio obbligatorio: <objectSet>
Funzioni helper: con questo elemento puoi usare le Funzioni di filtro <include> ed <exclude> seguenti: CompareStringContent, IgnoreIrrelevantLinks, AnswerNo e NeverRestore.
Sintassi:
<include filter="ChiamataScript">
</include>
Impostazione | Obbligatoria? | Valore |
---|---|---|
filter |
No. Se non si specifica questo parametro, verranno elaborati tutti i pattern all'interno dell'elemento <objectSet> figlio. |
Script seguito da qualsiasi numero di argomenti stringa separati da una virgola e racchiusi tra parentesi. Ad esempio Lo script verrà chiamato per ogni oggetto enumerato dai set di oggetti nella regola <include>. Lo script del filtro restituisce un valore booleano. Se il valore restituito è TRUE, verrà eseguita la migrazione dell'oggetto. Se è FALSE, non verrà eseguita la migrazione. |
L'esempio seguente è tratto dal file MigUser.xml:
<component type="Documents" context="User">
<displayName _locID="miguser.myvideo">My Video</displayName>
<paths>
<path type="File">%CSIDL_MYVIDEO%</path>
</paths>
<role role="Data">
<detects>
<detect>
<condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_MYVIDEO%")</condition>
</detect>
</detects>
<rules>
<include filter='MigXmlHelper.IgnoreIrrelevantLinks()'> <objectSet> <pattern type="File">%CSIDL_MYVIDEO%\* [*]</pattern> </objectSet> </include>
<merge script="MigXmlHelper.DestinationPriority()">
<objectSet>
<pattern type="File">%CSIDL_MYVIDEO% [desktop.ini]</pattern>
</objectSet>
</merge>
</rules>
</role>
</component>
Funzioni di filtro <include> ed <exclude>
Le funzioni seguenti restituiscono un valore booleano. Puoi usarle per eseguire la migrazione di oggetti specifici in base a particolari condizioni.
AnswerNo
Questo filtro restituisce sempre FALSE.
Sintassi: AnswerNo ()
CompareStringContent
Sintassi: CompareStringContent("ContenutoStringa","TipoConfronto")
Impostazione Obbligatoria? Valore ContenutoStringa
Sì
Stringa in base alla quale eseguire il confronto.
TipoConfronto
Sì
Stringa. Usa uno dei valori seguenti:
- Equal (senza distinzione tra maiuscole e minuscole). La funzione restituisce TRUE se la rappresentazione stringa dell'oggetto corrente elaborata dal motore di migrazione è identica a
StringContent
.
- NULLo qualsiasi altro valore. La funzione restituisce TRUE se la rappresentazione stringa dell'oggetto corrente elaborata dal motore di migrazione non corrisponde a
StringContent
.
- Equal (senza distinzione tra maiuscole e minuscole). La funzione restituisce TRUE se la rappresentazione stringa dell'oggetto corrente elaborata dal motore di migrazione è identica a
IgnoreIrrelevantLinks
Questo filtro esclude i file con estensione lnk che puntano a un oggetto non valido nel computer di destinazione. Nota che l'operazione di filtro viene eseguita nel computer di destinazione, quindi tutti i file con estensione lnk verranno salvati nell'archivio durante ScanState. Verranno poi esclusi durante l'esecuzione dello strumento LoadState.
Sintassi: IgnoreIrrelevantLinks ()
Ad esempio:
<include filter='MigXmlHelper.IgnoreIrrelevantLinks()'> <objectSet> <pattern type="File">%CSIDL_COMMON_VIDEO%\* [*]</pattern> </objectSet> </include>
NeverRestore
Puoi usare questa funzione per raccogliere gli oggetti specificati dal computer di origine senza poi eseguirne la migrazione nel computer di destinazione. Se eseguita con lo strumento ScanState, questa funzione restituisce TRUE. Se eseguita con lo strumento LoadState, questa funzione restituisce FALSE. Questa funzione potrebbe esserti utile per controllare il valore di un oggetto nel computer di destinazione, quando non vuoi eseguirne la migrazione nella destinazione.
Sintassi: NeverRestore()
Nell'esempio seguente, il valore HKCU\Control Panel\International [Locale] sarà incluso nell'archivio ma non ne verrà eseguita la migrazione nel computer di destinazione:
<include filter="MigXmlHelper.NeverRestore()"> <objectSet> <pattern type="Registry">HKCU\Control Panel\International [Locale]</pattern> </objectSet> </include>
<includeAttributes>
Puoi usare l'elemento <includeAttributes> per determinare se particolari parametri associati a un oggetto verranno inclusi nella migrazione insieme all'oggetto stesso. In presenza di conflitti tra gli elementi <includeAttributes> ed <excludeAttributes> , il pattern più specifico determinerà i parametri che verranno inclusi nella migrazione. Se un oggetto non ha un elemento <includeAttributes> o <excludeAttributes>, verrà eseguita la migrazione di tutti i relativi parametri.
Numero di occorrenze: illimitate
Elementi padre: <rules>
Elementi figlio: <objectSet>
Sintassi:
<includeAttributes attributes="Security|TimeFields|Security,TimeFields">
</includeAttributes>
Impostazione | Obbligatoria? | Valore |
---|---|---|
attributes |
Sì |
Specifica gli attributi da includere con un oggetto migrato. È possibile specificare uno o entrambi i seguenti elementi, separati da virgolette. Ad esempio,
|
Per un esempio di come usare l'elemento <includeAttributes>, vedi l'esempio per <excludeAttributes>.
<library>
Questo è un elemento USMT interno. Non usare questo elemento.
<location>
L'elemento <location> definisce il percorso dell'elemento <object>.
Numero di occorrenze: una per ogni <object>
Elementi padre: <object>
Elementi figlio: <script>
Sintassi:
<location type="IDtipo">PercorsoOggetto</location>
Impostazione | Obbligatoria? | Valore |
---|---|---|
type |
Sì |
IDtipo può essere Registry o File. |
PercorsoOggetto |
Sì |
Percorso dell'oggetto. |
L'esempio seguente è tratto dal file MigApp.xml:
<addObjects>
<object>
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\12.0\Common\Migration\Office [UpgradeVersion]</location>
<attributes>DWORD</attributes>
<bytes>0B000000</bytes>
</object>
<object>
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\12.0\Common\Migration\Office [Lang]</location>
<attributes>DWORD</attributes>
<bytes>00000000</bytes>
</object>
</addObjects>
<locationModify>
Puoi usare l'elemento <locationModify> per modificare il percorso e il nome di un oggetto prima di eseguirne la migrazione nel computer di destinazione. L'elemento <locationModify> viene elaborato solo al momento dell'esecuzione dello strumento LoadState nel computer di destinazione, ovvero viene ignorato dallo strumento ScanState. L'elemento <locationModify> creerà la cartella appropriata nel computer di destinazione, se non è già presente.
Numero di occorrenze: illimitate
Elementi padre: <rules>
Elemento figlio obbligatorio: <objectSet>
Funzioni helper: con questo elemento puoi usare le Funzioni <locationModify> seguenti: ExactMove, RelativeMove e Move.
Sintassi:
<locationModify script="ChiamataScript">
</locationModify>
Impostazione | Obbligatoria? | Valore |
---|---|---|
script |
Sì |
Script seguito da qualsiasi numero di argomenti stringa separati da una virgola e racchiusi tra parentesi. Ad esempio Lo script verrà chiamato per ogni oggetto enumerato dai set di oggetti nella regola di inclusione. Lo script del filtro restituisce un valore booleano. Se il valore restituito è TRUE, verrà eseguita la migrazione dell'oggetto. Se è FALSE, non verrà eseguita la migrazione. |
L'esempio seguente è tratto dal file MigApp.xml:
<locationModify script="MigXmlHelper.RelativeMove('%CSIDL_APPDATA%\Microsoft\Office','%CSIDL_APPDATA%')">
<objectSet>
<pattern type="File">%CSIDL_APPDATA%\Microsoft\Office\ [Access10.pip]</pattern>
</objectSet>
</locationModify>
Funzioni <locationModify>
Le funzioni seguenti modificano il percorso degli oggetti durante la migrazione quando si usa l'elemento <locationModify>. Queste funzioni vengono chiamate per ogni oggetto enumerato dall'elemento <objectSet> padre. L'elemento <locationModify> creerà la cartella appropriata nel computer di destinazione, se non è già presente.
ExactMove
La funzione ExactMove sposta tutti gli oggetti individuati dall'elemento <objectSet> padre nel PercorsoCodificatoOggetto specificato. Puoi usare questa funzione quando vuoi 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 verranno scritti nel nodo senza eventuali sottodirectory. Se il percorso di destinazione è una foglia, il motore di migrazione eseguirà la migrazione di tutti gli oggetti di origine corrispondenti nello stesso percorso. In caso di collisioni, verranno applicati i normali algoritmi.
Sintassi: ExactMove(PercorsoCodificatoOggetto)
Impostazione Obbligatoria? Valore PercorsoCodificatoOggetto
Sì
Specificare i percorsi 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>
Move
La funzione Move sposta gli oggetti in un percorso diverso nel computer di destinazione. Questa funzione crea inoltre le sottodirectory superiori al CSIDL più lungo nel nome di oggetto di origine.
Sintassi: Move(RadiceDestinazione)
Impostazione Obbligatoria? Valore RadiceDestinazione
Sì
Percorso in cui verranno spostati gli oggetti di origine. Se necessario, questa funzione creerà le eventuali sottodirectory superiori al CSIDL più lungo nel nome di oggetto di origine.
RelativeMove
Puoi usare la funzione RelativeMove per raccogliere e spostare dati. Tieni presente che puoi usare le variabili di ambiente nelle radici di origine e destinazione, ma queste potrebbero essere definite diversamente nei computer di origine e di destinazione.
Sintassi: RelativeMove(RadiceOrigine,RadiceDestinazione)
Impostazione Obbligatoria? Valore RadiceOrigine
Sì
Percorso da cui verranno spostati gli oggetti di origine. Qualsiasi oggetto di origine enumerato dall'elemento padre <objectSet> non presente in questo percorso non verrà spostato.
RadiceDestinazione
Sì
Percorso da cui gli oggetti di origine verranno spostati nel computer di destinazione. Se necessario, questa funzionerà creerà le eventuali sottodirectory superiori a RadiceOrigine.
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 è un elemento USMT interno. Non usare questo elemento.
<manufacturer>
L'elemento <manufacturer> definisce il produttore per il componente, ma non influisce sulla migrazione.
Numero di occorrenze: zero o una
Elementi padre: <component>
Elementi figlio: nessuno
Sintassi:
<manufacturer>Nome</manufacturer>
Impostazione | Obbligatoria? | Valore |
---|---|---|
Nome |
Sì |
Nome del produttore del componente. |
<merge>
L'elemento <merge> determina cosa accade in presenza di una collisione. Il termine collisione indica la situazione in cui un oggetto di cui eseguire la migrazione è già presente nel computer di destinazione. Se non specifichi questo elemento, il comportamento predefinito per il Registro di sistema prevede la sostituzione dell'oggetto di destinazione con l'oggetto di origine. Il comportamento predefinito per i file prevede la ridenominazione del file di origine in "NomeFileOriginale(1).EstensioneOriginale". Questo elemento specifica solo le azioni da eseguire in caso di collisione e non include oggetti. Per completare la migrazione degli oggetti, pertanto, devi specificare regole <include> insieme all'elemento <merge>. Se viene rilevata una collisione durante l'elaborazione di un oggetto, USMT selezionare la regola di unione più specifica e la applicherà per risolvere il conflitto. Ad esempio, se definisci una regola <merge> C:\* [*] impostata su <sourcePriority> e una regola <merge> C:\subfolder\* [*] impostata su <destinationPriority>, USMT usa la regola <destinationPriority> perché è più specifica.
Per un esempio di questo elemento, vedi Come funziona la regola <merge> quando si verificano collisioni di file?.
Numero di occorrenze: illimitate
Elementi padre: <rules>
Elemento figlio obbligatorio: <objectSet>
Funzioni helper: con questo elemento puoi usare le Funzioni <merge> seguenti: DestinationPriority, FindFilePlaceByPattern, LeafPattern, NewestVersion, HigherValue() e LowerValue().
Sintassi:
<merge script="ChiamataScript">
</merge>
Impostazione | Obbligatoria? | Valore |
---|---|---|
script |
Sì |
Script seguito da qualsiasi numero di argomenti stringa separati da una virgola e racchiusi tra parentesi. Ad esempio Lo script verrà chiamato per ogni oggetto enumerato dai set di oggetti nella regola <include>. Lo script del filtro restituisce un valore booleano. Se il valore restituito è TRUE, verrà eseguita la migrazione dell'oggetto. Se è FALSE, non verrà eseguita la migrazione. |
L'esempio seguente è tratto dal file MigUser.xml:
<rules>
<include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
<objectSet>
<pattern type="File">%CSIDL_MYVIDEO%\* [*]</pattern>
</objectSet>
</include>
<merge script="MigXmlHelper.DestinationPriority()">
<objectSet>
<pattern type="File">%CSIDL_MYVIDEO% [desktop.ini]</pattern>
</objectSet>
</merge>
</rules>
Funzioni <merge>
Queste funzioni impostano la modalità di risoluzione delle collisioni.
DestinationPriority
Specifica di mantenere l'oggetto 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\9.0\PhotoDraw\ [MyPictures]</pattern> <pattern type="Registry">HKCU\Software\Microsoft\Office\9.0\PhotoDraw\Settings\ [PicturesPath]</pattern> <pattern type="Registry">HKCU\Software\Microsoft\Office\9.0\PhotoDraw\Settings\ [AdditionalPlugInPath]</pattern> </objectSet> </merge>
FindFilePlaceByPattern
La funzione FindFilePlaceByPattern salva i file con un contatore incrementale in caso di collisione. Stringa che contiene uno dei costrutti seguenti in qualsiasi ordine: <F>, <E>, <N>.
Sintassi: FindFilePlaceByPattern(PatternFile)
Impostazione Obbligatoria? Valore PatternFile
Sì
- <F> verrà sostituito con il nome di file originale.
- <N> verrà sostituito con un contatore incrementale fino a quando non sono più presenti collisioni con gli oggetti nel computer di destinazione.
- <E> verrà sostituito dall'estensione di file originale.
Ad esempio,
<F> (<N>).<E>
sostituirà il file di origine MyDocument.doc con MyDocument (1).doc nel computer di destinazione.- <F> verrà sostituito con il nome di file originale.
NewestVersion
La funzione NewestVersion risolverà i conflitti nel computer di destinazione in base alla versione del file.
Sintassi: NewestVersion(TagVersione)
Impostazione Obbligatoria? Valore TagVersione
Sì
Campo della versione che verrà controllato. Può essere "FileVersion" o "ProductVersion". Dal file con la versione TagVersione più alta dipendono i conflitti che verranno risolti in base alla versione del file. Ad esempio, se MioFile, contiene FileVersion 1 e lo stesso file nel computer di destinazione contiene FileVersion 2, rimarrà il file nella destinazione.
HigherValue()
Puoi usare questa funzione per unire i valori del Registro di sistema. I valori del Registro di sistema verranno valutati come valori numerici e da quello con il valore più alto dipenderà la scelta dei valori del Registro di sistema che verranno uniti.
LowerValue()
Puoi usare questa funzione per unire i valori del Registro di sistema. I valori del Registro di sistema verranno valutati come valori numerici e da quello con il valore più basso dipenderà la scelta dei valori del Registro di sistema che verranno uniti.
SourcePriority
Specifica di eseguire la migrazione dell'oggetto dal computer di origine e di eliminare l'oggetto nel computer di destinazione.
Ad esempio:
<merge script="MigXmlHelper.SourcePriority()"> <objectSet> <pattern type="Registry">%HklmWowSoftware%\Microsoft\Office\12.0\Common\Migration\Publisher [UpgradeVersion]</pattern> <pattern type="Registry">%HklmWowSoftware%\Microsoft\Office\11.0\Common\Migration\Publisher [UpgradeVersion]</pattern> <pattern type="Registry">%HklmWowSoftware%\Microsoft\Office\10.0\Common\Migration\Publisher [UpgradeVersion]</pattern> </objectSet> </merge>
<migration>
L'elemento <migration> è il singolo elemento radice di un file XML di migrazione ed è obbligatorio. A ogni file XML deve essere assegnato un urlid di migrazione univoco. L'urlid di ogni file specificato nella riga di comando deve essere univoco. Il motivo è dovuto al fatto che USMT usa l'urlid per definire i componenti all'interno del file. Ad esempio, devi specificare quanto segue all'inizio di ogni file: <CustomFileName> è il nome del file, ad esempio "AppPersonalizzata".
Numero di occorrenze: una
Elementi padre: nessuno
Elementi figlio obbligatori: <component>
Elementi figlio facoltativi: <library>, <namedElements>
Sintassi:
<migration urlid="*UrlID/*Nome">
</migration>
Impostazione | Obbligatoria? | Valore |
---|---|---|
urlid |
Sì |
UrlID è un ID stringa che identifica in modo univoco questo file XML. Questo parametro deve essere un nome senza due punti, come definito nella specifica degli spazi dei nomi XML. Ogni file XML deve avere un urlid univoco. Se due file XML di migrazione hanno lo stesso urlid, il secondo file XML specificato nella riga di comando non verrà elaborato. Per altre informazioni sugli spazi dei nomi XML, vedi l'argomento relativo all'uso degli spazi dei nomi XML. |
Nome |
No |
Anche se non obbligatorio, è buona norma usare il nome del file XML. |
L'esempio seguente è tratto dal file MigApp.xml:
<migration urlid="https://www.microsoft.com/migration/1.0/migxmlext/migapp">
</migration>
MigXMLHelper.FileProperties
Questa funzione helper di filtro può essere usata per filtrare la migrazione dei file in base alle dimensioni e agli attributi di data dei file.
Funzione helper | MigXMLHelper.FileProperties (proprietà, operatore, valoreDaConfrontare) |
---|---|
proprietà |
filesize, dateCreated, dateModified, dateAccessed |
operatore |
range, neq, lte, lt, eq, gte, gt |
valoreDaConfrontare |
Il valore da confrontare. Ad esempio: Data: "15/05/2008-17/05/2005", "15/05/2008" Dimensioni: valore numerico seguito da B, KB, MB, o GB. "5GB", "1KB-1MB" |
<component context="System" type="Application">
<displayName>File_size</displayName>
<role role="Data">
<rules>
<include filter='MigXmlHelper.FileProperties("dateAccessed","range","2008/05/15-2008/05/17")'>
<objectSet>
<pattern type="File">%SYSTEMDRIVE%\DOCS\* [*]</pattern>
</objectSet>
</include>
</rules>
</role>
</component>
<namedElements>
Puoi usare l'elemento <namedElements> per definire elementi denominati. Puoi usare questi elementi in qualsiasi componente nel file XML. Per un esempio di come usare questo elemento, vedi il file MigApp.xml.
Sintassi:
<namedElements>
</namedElements>
Numero di occorrenze: illimitate
Elementi padre: <migration>
Elementi figlio: <environment>, <rules>, <conditions>, <detection>, <detects>, <detect>
Per un esempio di questo elemento, vedi il file MigApp.xml.
<object>
L'elemento <object> rappresenta un file o una chiave del Registro di sistema.
Numero di occorrenze: illimitate
Elementi padre: <addObjects>
Elementi figlio obbligatori: <location>, <attributes>
Elementi figlio facoltativi: <bytes>
Sintassi:
<object>
</object>
L'esempio seguente è tratto dal file MigApp.xml:
<addObjects>
<object>
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\12.0\Common\Migration\Office [UpgradeVersion]</location>
<attributes>DWORD</attributes>
<bytes>0B000000</bytes>
</object>
<object>
<location type="Registry">%HklmWowSoftware%\Microsoft\Office\12.0\Common\Migration\Office [Lang]</location>
<attributes>DWORD</attributes>
<bytes>00000000</bytes>
</object>
</addObjects>
<objectSet>
L'elemento <objectSet> contiene un elenco di pattern per gli oggetti, ad esempio percorsi di file, posizioni del Registro di sistema e così via. Verranno valutati per primi gli eventuali elementi figlio <conditions>. Se tutti gli elementi figlio <conditions> restituiscono FALSE, l'elemento <objectSet> restituirà un set vuoto. Per ogni elemento padre possono esistere solo più elementi <objectSet>.
Numero di occorrenze: illimitate
Elementi padre: <variable>, <content>, <include>, <exclude>, <merge>, <contentModify>, <locationModify>, <destinationCleanup>, <includeAttributes>, <excludeAttributes>, <unconditionalExclude>, <detect>
Elementi figlio obbligatori: <script> o <pattern>
Elementi figlio facoltativi: <content>, <conditions>, <condition>
Sintassi:
<objectSet>
</objectSet>
L'esempio seguente è tratto dal file MigUser.xml:
<component type="Documents" context="User">
<displayName _locID="miguser.mymusic">My Music</displayName>
<paths>
<path type="File">%CSIDL_MYMUSIC%</path>
</paths>
<role role="Data">
<detects>
<detect>
<condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_MYMUSIC%")</condition>
</detect>
</detects>
<rules>
<include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
<objectSet> <pattern type="File">%CSIDL_MYMUSIC%\* [*]</pattern> </objectSet>
</include>
<merge script="MigXmlHelper.DestinationPriority()">
<objectSet> <pattern type="File">%CSIDL_MYMUSIC%\ [desktop.ini]</pattern> </objectSet>
</merge>
</rules>
</role>
</component>
<path>
Questo è un elemento USMT interno. Non usare questo elemento.
<paths>
Questo è un elemento USMT interno. Non usare questo elemento.
<pattern>
Puoi usare questo elemento per specificare più oggetti Puoi specificare più elementi <pattern> per ogni elemento <objectSet> e questi verranno combinati. Per la specifica di file, potresti usare GenerateDrivePatterns con <script> in alternativa. GenerateDrivePatterns è fondamentalmente uguale a una regola <pattern>, senza la specifica della lettera di unità. Le due righe di codice seguenti, ad esempio, sono simili:
<pattern type="File">C:\Folder\* [Sample.doc]</pattern>
<script>MigXmlHelper.GenerateDrivePatterns("\Folder\* [Sample.doc]","Fixed"</script>
Numero di occorrenze: illimitate
Elementi padre: <objectSet>
Elementi figlio: nessuno ma Percorso [oggetto] deve essere valido.
Sintassi:
<pattern type="IDtipo">Percorso [oggetto]</pattern>
Impostazione | Obbligatoria? | Valore |
---|---|---|
type |
Sì |
IDtipo può essere Registry, File o Ini. Se IDtipo è Ini, non è possibile inserire uno spazio tra Percorso e oggetto. Il comando seguente, ad esempio, è corretto quanto type="Ini": <pattern type="Ini">%WinAmp5InstPath%\Winamp.ini|WinAmp[keeponscreen]</pattern> |
Percorso [oggetto] |
Sì |
Pattern valido per il Registro di sistema o un percorso di file, seguito da almeno uno spazio e 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 cartella EngineeringDrafts e delle eventuali sottocartelle dall'unità C:
<pattern type="File">C:\EngineeringDrafts\* [*]</pattern>
Per eseguire solo la migrazione della cartella EngineeringDrafts, escludendo eventuali sottocartelle, dall'unità C:
<pattern type="File"> C:\EngineeringDrafts\ [*]</pattern>
Per eseguire la migrazione del file Sample.doc da C:\EngineeringDrafts:
<pattern type="File"> C:\EngineeringDrafts\ [Sample.doc]</pattern>
Per eseguire la migrazione del file Sample.doc da qualunque posizione si trovi nell'unità C:, usa pattern nel modo seguente. Se esistono più file con lo stesso nome nell'unità C:, verrà eseguita la migrazione di tutti i file.
<pattern type="File"> C:\* [Sample.doc] </pattern>
Per altri esempi sull'uso di questo elemento, vedi Escludere file e impostazioni, Reindirizzare file e impostazioni, Includere file e impostazioni ed Esempi di XML personalizzati.
<processing>
Puoi usare questo elemento per eseguire uno script in un punto specifico nel processo di migrazione. Non sono previsti valori restituiti dagli script specificati e gli eventuali valori restituiti verranno ignorati.
Numero di occorrenze: illimitate
Elementi padre: <rules>
Elemento figlio obbligatorio: <script>
Sintassi:
<processing when="pre-scan|scan-success|post-scan|pre-apply|apply-success|post-apply">
</processing>
Impostazione | Obbligatoria? | Valore |
---|---|---|
when |
Sì |
Indica quando deve essere eseguito lo script. I valori a disposizione sono:
|
<plugin>
Questo è un elemento USMT interno. Non usare questo elemento.
<role>
L'elemento <role> è obbligatorio in un file XML personalizzato. Specificando l'elemento <role> puoi creare un componente concreto. Il componente verrà definito dai parametri specificati al livello <component> e con il ruolo specificato con questo elemento.
Numero di occorrenze: ogni elemento <component> può includere uno, due o tre elementi <role> figlio.
Elementi padre: <component>, <role>
Elementi figlio obbligatori: <rules>
Elementi figlio facoltativi: <environment>, <detection>, <component>, <role>, <detects>, <plugin>,
Sintassi:
<role role="Container|Binaries|Settings|Data">
</role>
Impostazione | Obbligatoria? | Valore |
---|---|---|
role |
Sì |
Definisce il ruolo per il componente. I valori a disposizione per role sono:
Puoi:
|
L'esempio seguente è tratto dal file MigUser.xml. Per altri esempi, vedi il file MigApp.xml:
<component type="System" context="User">
<displayName _locID="miguser.startmenu">Start Menu</displayName>
<paths>
<path type="File">%CSIDL_STARTMENU%</path>
</paths>
<role role="Settings">
<detects>
<detect>
<condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_STARTMENU%")</condition>
</detect>
</detects>
<rules>
<include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
<objectSet>
<pattern type="File">%CSIDL_STARTMENU%\* [*]</pattern>
</objectSet>
</include>
<merge script="MigXmlHelper.DestinationPriority()">
<objectSet>
<pattern type="File">%CSIDL_STARTMENU% [desktop.ini]</pattern>
<pattern type="File">%CSIDL_STARTMENU%\* [*]</pattern>
</objectSet>
</merge>
</rules>
</role>
</component>
<rules>
L'elemento <rules> è obbligatorio in un file XML personalizzato. Questo elemento contiene le regole che verranno eseguite durante la migrazione se viene selezionato l'elemento <component> padre, a meno che l'elemento <conditions> figlio, se presente, non restituisca FALSE. Per ogni elemento <rules> possono esistere più elementi <rules> figlio.
Numero di occorrenze: illimitate
Elementi padre: <role>, <rules>, <namedElements>
Elementi figlio obbligatori: <include>
Elementi figlio facoltativi: <rules>, <exclude>, <unconditionalExclude>,<merge>, <contentModify>, <locationModify>, <destinationCleanup>, <addObjects>, <externalProcess>, <processing>, <includeAttributes>, <excludeAttributes>, <conditions>, <detects>
Sintassi:
<rules name="ID" context="User|System|UserAndSystem">
</rules>
Impostazione | Obbligatoria? | Valore |
---|---|---|
name |
Sì, quando <rules> è un figlio di <namedElements> No, quando <rules> è un figlio di qualsiasi altro elemento |
Quando si specifica ID, gli eventuali elementi figlio non vengono elaborati. Verranno invece elaborati gli eventuali altri elementi <rules> con lo stesso nome dichiarati in <namedElements>. |
context |
No (impostazione predefinita = UserAndSystem) |
Definisce l'ambito del parametro, ovvero se elaborare il componente nel contesto dello specifico utente, in tutto il sistema operativo o in entrambi. L'ambito più vasto possibile è impostato dall'elemento <component>. Ad esempio, se un elemento <component> ha un contesto User e un elemento <rules> ha un contesto UserAndSystem, l'elemento <rules> opera come se avesse un contesto User. Se l'elemento <rules> ha un contesto System, opera come se <rules> non fosse presente.
|
L'esempio seguente è tratto dal file MigUser.xml:
<component type="Documents" context="User">
<displayName _locID="miguser.mymusic">My Music</displayName>
<paths>
<path type="File">%CSIDL_MYMUSIC%</path>
</paths>
<role role="Data">
<detects>
<detect>
<condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_MYMUSIC%")</condition>
</detect>
</detects>
<rules>
<include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
<objectSet>
<pattern type="File">%CSIDL_MYMUSIC%\* [*]</pattern>
</objectSet>
</include>
<merge script="MigXmlHelper.DestinationPriority()">
<objectSet>
<pattern type="File">%CSIDL_MYMUSIC%\ [desktop.ini]</pattern>
</objectSet>
</merge>
</rules>
</role>
</component>
<script>
Il valore restituito richiesto da <script> dipende dall'elemento padre.
Numero di occorrenze: una per <variable>, illimitate per <objectSet> e <processing>
Elementi padre: <objectSet>, <variable>, <processing>
Elementi figlio: nessuno
Sintassi e funzioni helper:
Sintassi generale: <script>ScriptConArgomenti</script>
Puoi usare Funzioni <script> quando l'elemento <script> è incluso in <variable>.
Sintassi: <script>MigXmlHelper.GetStringContent("TipoOggetto","PatternPercorsoCodificato", "EspansioneContenuto")</script>
Esempio:
<script>MigXMLHelper.GetStringContent("Registry","HKLM\Software\MyApp\Installer [EXEPATH]")</script>
Puoi usare Funzioni <script> quando l'elemento <script> è incluso in <objectSet>.
Sintassi: <script>MigXmlHelper.GenerateUserPatterns("TipoOggetto","PatternPercorsoCodificato","ElaborazioneUtenteCorrente")</script>
Esempio:
<script>MigXmlHelper.GenerateUserPatterns ("File","%USERPROFILE%\* [*.doc]", "FALSE")</script>
Puoi usare Funzioni <script> quando l'elemento <script> è incluso in <objectSet>.
Sintassi: <script>MigXmlHelper.GenerateDrivePatterns("SegmentoPattern","TipoUnità")</script>
Esempio:
<script>MigXmlHelper.GenerateDrivePatterns("* [sample.doc]", "Fixed")</script>
Puoi usare gli Funzioni <script> con gli elementi <script> inclusi in elementi <processing>: AskForLogoff, ConvertToShortFileName, KillExplorer, RemoveEmptyDirectories, RestartExplorer, RegisterFonts, StartService, StopService, SyncSCM.
Sintassi: <script>MigXmlHelper.ScriptEsecuzione</script>
Esempio:
<script>MigXmlHelper.KillExplorer()</script>
Impostazione | Obbligatoria? | Valore |
---|---|---|
ScriptConArgomenti |
Sì |
Script seguito da qualsiasi numero di argomenti stringa separati da una virgola e racchiusi tra parentesi. Ad esempio Lo script verrà chiamato per ogni oggetto enumerato dai set di oggetti nella regola <include>. Lo script del filtro restituisce un valore booleano. Se il valore restituito è TRUE, verrà eseguita la migrazione dell'oggetto. Se è FALSE, non verrà eseguita la migrazione. Il valore restituito richiesto da <script> dipende dall'elemento padre.
|
Esempi:
Per eseguire la migrazione del file Sample.doc da qualsiasi unità nel computer di origine, usa <script> come indicato di seguito. Se esistono più file con lo stesso nome, verrà eseguita la migrazione di tutti i file.
<script>MigXmlHelper.GenerateDrivePatterns("* [sample.doc]", "Fixed")</script>
Per altri esempi sull'uso di questo elemento, vedi Escludere file e impostazioni, Reindirizzare file e impostazioni, Reindirizzare file e impostazioni ed Esempi di XML personalizzati.
Funzioni <script>
Puoi usare le funzioni seguenti con l'elemento <script>
Funzioni per la generazione di stringhe e pattern
Script di semplice esecuzione
Funzioni per la generazione di stringhe e pattern
Queste funzioni restituiscono una stringa o un pattern.
GetStringContent
Puoi usare GetStringContent con elementi <script> inclusi in elementi <variable>. Se possibile, questa funzione restituisce la rappresentazione stringa dell'oggetto specificato. In caso contrario, restituisce NULL. Per gli oggetti file questa funzione restituisce sempre NULL.
Sintassi: GetStringContent("TipoOggetto","PatternPercorsoCodificato", "EspansioneContenuto")
Impostazione Obbligatoria? Valore TipoOggetto
Sì
Tipo di oggetto. Può essere Registry o Ini (per un file con estensione ini).
PatternPercorsoCodificato
Sì
- Se il tipo di oggetto è Registry, PatternPercorsoCodificato deve essere un percorso del Registro di sistema valido. Ad esempio, HKLM\SOFTWARE\MyKey[].
- Se il tipo di oggetto è Ini, PatternPercorsoCodificato deve essere nel formato seguente:
PercorsoFileIni|NomeSezione[NomeImpostazione]
EspansioneContenuto
No (impostazione predefinita = TRUE)
Può essere TRUE o FALSE. Se FALSE, il percorso specificato non verrà espanso prima della restituzione.
Ad esempio:
<variable name="MSNMessengerInstPath"> <script>MigXmlHelper.GetStringContent("Registry","%HklmWowSoftware%\Microsoft\MSNMessenger [InstallationDirectory]")</script> </variable>
- Se il tipo di oggetto è Registry, PatternPercorsoCodificato deve essere un percorso del Registro di sistema valido. Ad esempio, HKLM\SOFTWARE\MyKey[].
GenerateDrivePatterns
La funzione GenerateDrivePatterns eseguirà un'iterazione di tutte le unità disponibili e selezionerà quelle corrispondenti al tipo di unità richiesto. Le unità selezionate verranno concatenate con la parte finale di SegmentoPattern per formare un pattern di file codificato completo. Ad esempio, se SegmentoPattern è
Path [file.txt]
e TipoUnità èFixed
, la funzione genereràC:\Path [file.txt]
e altri pattern se esistono altre unità fisse oltre a C:. Non puoi specificare variabili di ambiente con questa funzione. Puoi usare GenerateDrivePatterns con elementi <script> inclusi in <objectSet> inclusi in <include>/<exclude>.Sintassi: GenerateDrivePatterns("SegmentoPattern","TipoUnità")
Impostazione Obbligatoria? Valore SegmentoPattern
Sì
Suffisso di un pattern codificato. Verrà concatenato con una specifica di unità, ad esempio "c:\", per comporre un Specificare i percorsi completo. Ad esempio, "* [*.doc]". SegmentoPattern non può essere una variabile di ambiente.
TipoUnità
Sì
Tipo di unità per cui devono essere generati i pattern. I valori possibili sono:
- Fixed
- CDROM
- Removable
- Remote
Per un esempio di questo elemento, vedi l'ultimo componente nel file MigUser.xml.
- Fixed
GenerateUserPatterns
Questa funzione eseguirà un'iterazione di tutti gli utenti specificati per la migrazione, ad esclusione dell'utente in corso di elaborazione se ElaborazioneUtenteCorrente è FALSE. Il pattern specificato verrà espanso nel contesto di ogni utente. Se per gli utenti A, B e C esiste un profilo in C:\Documents and Settings, ad esempio, chiamando
GenerateUserPattens('File','%userprofile% [*.doc]','TRUE')
la funzione helper genererà i tre pattern seguenti:"C:\Documents and Settings\A\* [*.doc]"
"C:\Documents and Settings\B\* [*.doc]"
"C:\Documents and Settings\C\* [*.doc]"
Sintassi: GenerateUserPatterns("TipoOggetto","PatternPercorsoCodificato","ElaborazioneUtenteCorrente")
Impostazione Obbligatoria? Valore TipoOggetto
Sì
Definisce il tipo di oggetto. Può essere File o Registry.
PatternPercorsoCodificato
Sì
Specificare i percorsi. Le variabili di ambiente sono consentite.
ElaborazioneUtenteCorrente
Sì
Può essere TRUE o FALSE. Indica se devono essere generati pattern per l'utente corrente.
Esempio:
Se si chiama GenerateUserPattens('File','%userprofile% [*.doc]','FALSE') durante l'elaborazione dell'utente A, la funzione genererà i pattern solo per gli utenti B e C. Puoi usare questa funzione helper per creare regole complesse. Ad esempio, eseguire la migrazione di tutti i file DOC dal computer di origine, ma se l'utente X non è incluso nella migrazione escludere dalla migrazione anche gli eventuali file DOC dal profilo dell'utente X.
L'esempio di codice seguente corrisponde a questo scenario. Il primo elemento <rules> esegue la migrazione di tutti i file DOC nel computer di origine con l'eccezione di quelli nella cartella C:\Documents and Settings. Il secondo elemento <rules> esegue la migrazione di tutti i file DOC nella cartella C:\Documents and Settings con l'eccezione dei file DOC nei profili degli altri utenti. Dato che il secondo elemento <rules> verrà elaborato nel contesto di ogni utente incluso nella migrazione, il risultato finale corrisponderà al 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
Questa funzione helper richiama lo strumento di ricerca dei documenti per analizzare il sistema e individuare tutti i file di cui è possibile eseguire la migrazione. Può essere richiamata nel contesto System o User per limitare l'analisi.
Impostazione | Obbligatoria? | Valore |
---|---|---|
AnalisiFileProgramma |
No (impostazione predefinita = FALSE) |
Può essere TRUE o FALSE. Il parametro AnalisiFileProgramma determina se lo strumento di ricerca dei documenti esegue o meno l'analisi della cartella Programmi per raccogliere le estensioni di file registrate per le applicazioni note. Se impostato su TRUE, ad esempio, verranno individuati e inclusi nella migrazione i file con estensione jpg nella directory di Photoshop, se l'estensione jpg è registrata per Photoshop. |
PatternInclusione |
No (impostazione predefinita = TRUE) |
Può essere TRUE o FALSE. L'impostazione TRUE causa la generazione dei pattern di inclusione ed è possibile aggiungerla nell'elemento <include>. L'impostazione FALSE causa la generazione dei pattern di esclusione ed è possibile aggiungerla nell'elemento <exclude>. |
UnitàSistema |
No (impostazione predefinita = FALSE) |
Può essere TRUE o FALSE. Se TRUE, tutti i pattern sono limitati 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>
Script di semplice esecuzione
Per gli script seguenti non è previsto un valore restituito. Puoi usare gli errori seguenti con elementi <script> inclusi negli elementi <processing>
AskForLogoff(). Richiede all'utente di disconnettersi al termine della migrazione. Ad esempio:
<processing when="apply-success"> <script>MigXmlHelper.AskForLogoff()</script> </processing>
ConvertToShortFileName(PercorsoCodificatoRegistroDiSistema). Se PercorsoCodificatoRegistroDiSistema è il percorso completo di un file esistente, questa funzione convertirà il file nel nome di file breve e quindi aggiornerà il valore del Registro di sistema.
KillExplorer(). Interrompe Explorer.exe per il contesto utente corrente. In questo modo è possibile accedere a chiavi e file specifici che vengono mantenuti aperti solo durante l'esecuzione di Explorer.exe. Ad esempio:
<processing when="pre-apply"> <script>MigXmlHelper.KillExplorer()</script> </processing>
RegisterFonts(PercorsoCodificatoFile). Registra il tipo di carattere specificato per tutti i tipi di carattere nella directory specificata. Ad esempio:
<processing when="apply-success"> <script>MigXmlHelper.RegisterFonts("%CSIDL_COMMON_FONTS%")</script> </processing>
**RemoveEmptyDirectories (PatternCodificatoDirectory).**Elimina qualsiasi directory vuota corrispondente a PatternCodificatoDirectory nel computer di destinazione.
RestartExplorer(). Riavvia Explorer.exe alla fine della migrazione. Ad esempio:
<processing when="post-apply"> <script>MigXmlHelper.RestartExplorer()</script> </processing>
StartService (NomeServizio, ParamFacoltativo1, ParamFacoltativo2,…). Avvia il servizio identificato da NomeServizio. NomeServizio è la sottochiave in HKLM\System\CurrentControlSet\Services che contiene i dati per il servizio specificato. I parametri facoltativi, se esistenti, verranno passati all'APIStartService. Per altre informazioni, vedi questo sito Web Microsoft.
StopService (NomeServizio). Arresta il servizio identificato da NomeServizio. NomeServizio è la sottochiave in HKLM\System\CurrentControlSet\Services che contiene i dati per il servizio specificato.
SyncSCM(NomeBreveServizio). Legge il valore del tipo di avvio dal Registro di sistema (HKLM\System\CurrentControlSet\Services\ServiceShortName [Start]) dopo la modifica da parte del motore di migrazione e quindi sincronizza Gestione controllo servizi con il nuovo valore.
<text>
Puoi usare l'elemento <text> per impostare un valore per qualsiasi variabile di ambiente inclusa in uno dei file XML di migrazione.
Numero di occorrenze: una in ogni elemento <variable>.
Elementi padre: <variable>
Elementi figlio: nessuno.
Sintassi:
<text>TestoNormale</text>
Impostazione | Valore |
---|---|
TestoNormale |
Valore 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 dalla presenza di altre regole di inclusione nei file XML di migrazione o nel file Config.xml. Gli oggetti qui dichiarati non verranno inclusi nella migrazione, perché questo elemento ha la precedenza su tutte le altre regole. Anche se sono presenti regole <include> esplicite per includere i file MP3, ad esempio, se usi questa opzione per escluderli, i file non verranno inclusi nella migrazione.
Usa questo elemento se vuoi escludere tutti i file MP3 dal computer di origine. In alternativa, se stai eseguendo il backup di C:\UserData usando un altro metodo, puoi escludere l'intera cartella dalla migrazione. Questo elemento deve tuttavia essere usato con cautela, perché se un'applicazione richiede un file escluso, l'applicazione potrebbe non funzionare correttamente nel computer di destinazione.
Numero di occorrenze: illimitate.
Elementi padre: <rules>
Elementi figlio: <objectSet>
Sintassi:
<unconditionalExclude></unconditionalExclude>
Il file XML seguente esclude tutti i file MP3 dalla migrazione. Per altri esempi di come usare questo elemento, vedi Escludere file e impostazioni.
<migration urlid="https://www.microsoft.com/migration/1.0/migxmlext/excludefiles">
<component context="System" type="Documents">
<displayName>Test</displayName>
<role role="Data">
<rules>
<unconditionalExclude>
<objectSet>
<script>MigXmlHelper.GenerateDrivePatterns ("* [*.mp3]", "Fixed")</script>
</objectSet>
</unconditionalExclude>
</rules>
</role>
</component>
</migration>
<variable>
L'elemento <variable> è obbligatorio in un elemento <environment>. Per ogni elemento <variable> deve esistere un solo elemento <objectSet>, <script> o <text>. Il contenuto dell'elemento <variable> assegna un valore di testo alla variabile di ambiente. Per questo elemento esistono le tre opzioni seguenti:
Se l'elemento <variable> contiene un elemento <text>, il valore dell'elemento <variable> sarà il valore dell'elemento <text>.
Se l'elemento <variable> contiene un elemento <script> e la chiamata dello script genera una stringa non NULL, il valore dell'elemento <variable> sarà il risultato della chiamata dello script.
Se l'elemento <variable> contiene un elemento <objectSet> e la valutazione dell'elemento <objectSet> genera almeno un pattern di oggetto, il valore del primo oggetto corrispondente al pattern di oggetto risultante sarà il valore dell'elemento <variable>.
Numero di occorrenze: illimitate
Elementi padre: <environment>
Elementi figlio obbligatori: <text>, <script> o <objectSet>
Sintassi:
<variable name="ID" remap=TRUE|FALSE>
</variable>
Impostazione | Obbligatoria? | Valore |
---|---|---|
name |
Sì |
ID è un valore stringa corrispondente al nome usato per fare riferimento alla variabile di ambiente. Consigliamo di specificare il nome del componente insieme all'ID per evitare collisioni nello spazio dei nomi. Se il nome del componente è MyComponent, ad esempio, e vuoi una variabile corrispondente al percorso di installazione del componente, potresti specificare |
remap |
No (impostazione predefinita = FALSE) |
Specifica se valutare la variabile di ambiente come variabile di ambiente di remapping. Gli oggetti che si trovano in un percorso al di sotto del valore di questa variabile di ambiente vengono spostati automaticamente nella posizione a cui punta la variabile di ambiente nel computer di destinazione. |
L'esempio seguente è tratto dal file MigApp.xml:
<environment>
<variable name="HklmWowSoftware">
<text>HKLM\Software</text>
</variable>
<variable name="WinZip8or9or10Exe">
<script>MigXmlHelper.GetStringContent("Registry","%HklmWowSoftware%\Microsoft\Windows\CurrentVersion\App Paths\winzip32.exe []")</script>
</variable>
</environment>
<version>
L'elemento <version> definisce la versione per il componente, ma non influisce sulla migrazione.
Numero di occorrenze: zero o una
Elementi padre: <component>
Elementi figlio: nessuno
Sintassi:
<version>VersioneComponente</version>
Impostazione | Obbligatoria? | Valore |
---|---|---|
VersioneComponente |
Sì |
Versione del componente che può contenere pattern. |
Ad esempio:
<version>4.*</version>
<windowsObjects>
L'elemento <windowsObjects> è riservato per uso interno in USMT. Non usare questo elemento.
Appendice
Specificare i percorsi
Specificare i percorsi codificati. Il percorso codificato usato in tutte le funzioni helper è una rappresentazione stringa non ambigua per il nome di un oggetto. La rappresentazione è composta dalla parte nodo seguita facoltativamente dalla parte foglia racchiusa tra parentesi quadre. Questo crea una netta distinzione tra i nodi e le foglie.
Ad esempio, specifica il file C:\Windows\Notepad.exe in questo modo:
c:\Windows[Notepad.exe]
. In modo analogo, specifica la directory C:\Windows\System32 in questo modo:c:\Windows\System32
. (Nota l'assenza del costrutto [].)La rappresentazione per il Registro di sistema è molto simile. Il valore predefinito di una chiave del Registro di sistema è rappresentato da un costrutto [] vuoto. Ad esempio, il valore predefinito della chiave del Registro di sistema HKLM\SOFTWARE\MyKey sarà
HKLM\SOFTWARE\MyKey[]
.Specificare pattern di percorso. Puoi specificare un pattern di percorso in modo simile a come specifichi un percorso effettivo. L'eccezione è rappresentata dal fatto che sia la parte del nodo che le parti foglia accettano pattern. Un pattern, tuttavia, non si estende dal nodo alla foglia.
Il pattern
c:\Windows\*
, ad esempio, corrisponderà alla directory Windows e a tutte le sottodirectory, ma non corrisponderà ad alcun file in queste directory. Per includere anche i file nelle corrispondenze, devi specificarec:\Windows\*[*]
.
Funzioni USMT interne
Le funzioni seguenti sono riservate per uso interno in USMT. Non usarle in alcun file XML.
AntiAlias
ConvertScreenSaver
ConvertShowIEOnDesktop
ConvertToOfficeLangID
MigrateActiveDesktop
MigrateAppearanceUPM
MigrateDisplayCS
MigrateDisplaySS
MigrateIEAutoSearch
MigrateMouseUPM
MigrateSoundSysTray
MigrateTaskBarSS
SetPstPathInMapiStruc
Tag di versione validi
Puoi usare i tag di versione seguenti con varie funzioni helper:
"CompanyName"
"FileDescription"
"FileVersion"
"InternalName"
"LegalCopyright"
"OriginalFilename"
"ProductName"
"ProductVersion"
I tag di versione seguenti contengono valori confrontabili:
"FileVersion"
“ProductVersion”