Migrando o Mozilla Firefox e Thunderbird através do USMT

Atualmente, o USMT realiza backup apenas do perfil do Mozilla Firefox 3 [1]. Você pode confirmar isto verificando o arquivo MigApp.xml.

Apesar de discussões no fórum TechNet da Microsoft sugerirem alterar a versão 3 do Firefox no MigApp.xml para * (consequentemente, envolvendo todas as versões do Firefox, não apenas a versão 3), esta abordagem falha com o lançamento da versão Quantum do Mozilla Firefox, na qual o Firefox vem pré-instalado na versão 64-bits, caso o sistema operacional seja 64-bits. Como a condição de detecção padrão do USMT detecta se o Mozilla Firefox encontra-se instalado através de uma verificação na chave de registro HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Mozilla\Mozilla Firefox *\bin, esta chave é inexistente em sistemas 64-bit com o Firefox Quantum instalado. Como resultado, a migração do Mozilla Firefox não é realizada.

Uma forma de detectar a presença do perfil do Mozilla Firefox e migra-lo (mesmo que o Mozilla Firefox não esteja instalado) é detectando diretamente se, no perfil do usuário, existe o perfil do Mozilla Firefox [3].

O conjunto de regras abaixo realizarão a migração do Mozilla Firefox e do Thunderbird [2][3] (por padrão, o USMT não realiza a migração do perfil do Thunderbird [1]).

Copie e cole o conjunto de regras abaixo em um novo arquivo de texto chamado CustomApp.xml. Para instruções de como adicionar regras customizadas ao MDT/WMA, leia este post.

<?xml version="1.0" encoding="UTF-8"?>
<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/migtestapp">

    <library prefix="MigSysHelper">MigSys.dll</library>

    <_locDefinition>
        <_locDefault _loc="locNone"/>
        <_locTag _loc="locData">displayName</_locTag>
    </_locDefinition>

    <namedElements>
        <!-- Global -->
        <environment name="GlobalEnvX64">
            <conditions>
                <condition>MigXmlHelper.IsNative64Bit()</condition>
            </conditions>
            <variable name="HklmWowSoftware">
                <text>HKLM\SOFTWARE\Wow6432Node</text>
            </variable>
            <variable name="ProgramFiles32bit">
                <text>%ProgramFiles(x86)%</text>
            </variable>
            <variable name="CommonProgramFiles32bit">
                <text>%CommonProgramFiles(x86)%</text>
            </variable>
        </environment>
        <environment name="GlobalEnv">
            <conditions>
                <condition negation="Yes">MigXmlHelper.IsNative64Bit()</condition>
            </conditions>
            <variable name="HklmWowSoftware">
                <text>HKLM\Software</text>
            </variable>
            <variable name="ProgramFiles32bit">
                <text>%ProgramFiles%</text>
            </variable>
            <variable name="CommonProgramFiles32bit">
                <text>%CommonProgramFiles%</text>
            </variable>
        </environment>

        <!-- Global USER -->
        <environment context="USER" name="GlobalEnvX64User">
            <conditions>
                <condition>MigXmlHelper.IsNative64Bit()</condition>
            </conditions>
            <variable name="VirtualStore_ProgramFiles32bit">
                <text>%CSIDL_VIRTUALSTORE_PROGRAMFILES(X86)%</text>
            </variable>
            <variable name="VirtualStore_CommonProgramFiles32bit">
                <text>%CSIDL_VIRTUALSTORE_COMMONPROGRAMFILES(X86)%</text>
            </variable>
        </environment>
        <environment context="USER" name="GlobalEnvUser">
            <conditions>
                <condition negation="Yes">MigXmlHelper.IsNative64Bit()</condition>
            </conditions>
            <variable name="VirtualStore_ProgramFiles32bit">
                <text>%CSIDL_VIRTUALSTORE_PROGRAMFILES%</text>
            </variable>
            <variable name="VirtualStore_CommonProgramFiles32bit">
                <text>%CSIDL_VIRTUALSTORE_COMMONPROGRAMFILES%</text>
            </variable>
        </environment>
    </namedElements>
	
    <!-- Edit the file MigApp.xml, replace the section about Firefox with the following -->
    <!-- see http://www.klaus-hartnegg.de/gpo/usmt -->

    <!-- Mozilla Firefox -->
    <component context="UserAndSystem" type="Application">
        <displayName _locID="migapp.firefox">Mozilla Firefox</displayName>
        <environment name="GlobalEnv"/>
        <environment name="GlobalEnvX64"/>
        <role role="Settings">
            <detection>
                <conditions>
                    <condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_APPDATA%\Mozilla\Firefox\* [*]")</condition>
                </conditions>
            </detection>
            <rules context="User">
                <destinationCleanup>
                    <objectSet>
                        <pattern type="File">%CSIDL_LOCAL_APPDATA%\Mozilla\Firefox\Profiles\* [*]</pattern>
                    </objectSet>
                </destinationCleanup>
                <include>
                    <objectSet>
                        <pattern type="File">%CSIDL_APPDATA%\Mozilla\Firefox\* [*]</pattern>
                    </objectSet>
                </include>
                <exclude>
                    <objectSet>
                        <pattern type="File">%CSIDL_APPDATA%\Mozilla\Firefox\Crash Reports\* [*]</pattern>
                    </objectSet>
                </exclude>
                <merge script="MigXmlHelper.SourcePriority()">
                    <objectSet>
                        <pattern type="File">%CSIDL_APPDATA%\Mozilla\Firefox\* [*]</pattern>
                    </objectSet>
                </merge>
            </rules>
        </role>
    </component>

    <!-- Mozilla Thunderbird -->
    <component context="UserAndSystem" type="Application">
        <displayName _locID="migapp.thunderbird">Mozilla Thunderbird</displayName>
        <environment name="GlobalEnv"/>
        <environment name="GlobalEnvX64"/>
        <role role="Settings">
            <detection>
                <conditions>
                    <condition>MigXmlHelper.DoesObjectExist("Registry","%HklmWowSoftware%\Mozilla\Mozilla Thunderbird *.*\bin [PathToExe]")</condition>
                </conditions>
            </detection>
            <rules context="User">
                <destinationCleanup>
                    <objectSet>
                        <pattern type="File">%CSIDL_LOCAL_APPDATA%\Thunderbird\Profiles\* [*]</pattern>
                    </objectSet>
                </destinationCleanup>
                <include>
                    <objectSet>
                        <pattern type="File">%CSIDL_APPDATA%\Thunderbird\* [*]</pattern>
                    </objectSet>
                </include>
                <exclude>
                    <objectSet>
                        <pattern type="File">%CSIDL_APPDATA%\Thunderbird\Crash Reports\* [*]</pattern>
                    </objectSet>
                </exclude>
                <merge script="MigXmlHelper.SourcePriority()">
                    <objectSet>
                        <pattern type="File">%CSIDL_APPDATA%\Thunderbird\* [*]</pattern>
                    </objectSet>
                </merge>
            </rules>
        </role>
    </component>
</migration>

Referências

  1. O que a USMT migra?. Referência técnica da USMT. Microsoft Windows IT Pro Center.
  2. Adding Firefox in custom.xml – USMT. http://www.windows-noob.com.
  3. Howto use User State Migration Tool (USMT) with Firefox & Thunderbird. Klaus Hartnegg.
Anúncios

Adicionando regras customizadas ao MDT/WMA

As boas práticas do USMT recomendam não editar os arquivos MigApp.XML e MigUser.XML diretamente, devido a atualizações no WADK possivelmente substituirem as alterações realizadas nos arquivos padrões de regras do USMT. Felizmente, o MDT permite a importação de regras específicas a ferramenta USMT, assim como o WMA.

Adicionando regras customizadas ao WMA

O Workstation Migration Assistant (interface gráfica ao USMT) permite a importação de regras customizadas editando o arquivo de configurações do programa (MigAssistant.exe.config), presente no mesmo local do executável do programa.

Edite o arquivo através do Bloco de notas ou Notepad++. Procure pela configuração MigrationRuleSet e adicione o(s) arquivo(s) de regras customizado(s) separados por vírgulas (não use espaços e respeite maiúsculas e minúsculas, inclusive em relação a extensão dos arquivos, caso elas estejam nomeadas em maiúsculas):

            <setting name="MigrationRuleSet" serializeAs="String">
                <value>MigUser.XML,MigApp.XML,CustomUser.xml,CustomApp.xml</value>
            </setting>

O WMA aceita caminhos completos para os arquivos de regras (por exemplo: C:\CustomUser.xml) e caminhos relativos (por exemplo: ..\CustomUser.xml). Variáveis (ex: %TEMP%\CustomUser.xml NÃO SÃO suportadas atualmente (WMA 1.10).

Adicionando regras customizadas ao MDT

Para adicionar regras customizadas ao MDT, abra o Deployment Workbench (disponível através do Menu iniciar > Microsoft Deployment Toolkit). Dê botão direito no Deployment Share que deseja editar e clique em Propriedades.

Na aba Rules, edite a caixa de texto e especifique as regras customizadas através da propriedade USMTMigFiles:

USMTMigFiles001=MigApp.xml
USMTMigFiles002=MigUser.xml
USMTMigFiles003=CustomUser.xml
USMTMigFiles004=CustomApp.xml

Primeiro você precisa especificar os arquivos xml originais que acompanham o MDT, eles são os dois primeiros da lista acima. Dpois, você especifica seu(s) arquivo(s) customizado(s).

Se desejar, você pode realizar a edição diretamente no arquivo CustomSettings.ini em DeploymentShare\Control.

Para que o MDT encontre o(s) arquivo(s) de regras customizado(s), você precisará copiá-los para DeploymentShare\Tools\[Arquitetura]\USMT.

Para não ter trabalho dobrado de manter o arquivo de regras customizado em dois locais diferentes (nos subdiretórios x86 e x64, referente a arquitetura), você pode copiar o(s) arquivo(s) de regras customizado(s) para uma única arquitetura (ex: apenas no subdiretório x64) e criar um hard link dos arquivos de regras na arquitetura remanescente (no caso, x86).

Com isso, ao editar o arquivo no subdiretório x64, a alteração será refletida automaticamente no arquivo de regras presente no subdiretório x86 (na verdade, o diretório x64 é o único local onde o arquivo de regras é encontrado no sistema, a instância que você vê no diretório x86 serão projetados por hard linking do diretório x64).

O comando abaixo criará um hard link do arquivo C:\DeploymentShare\Tools\x64\USMT5\CustomUser.xml para C:\DeploymentShare\Tools\x86\USMT5\CustomUser.xml [2]:

mklink /h C:\DeploymentShare\Tools\x86\USMT5\CustomUser.xml C:\DeploymentShare\Tools\x64\USMT5\CustomUser.xml

Referência

  1. MDT 2010: User State Migration. Scriptimus Ex Machina.
  2. mklink. Microsoft Docs.