アプリケーション設定の移行

カスタム .xml ファイルを作成して、特定の基幹業務アプリケーションの設定を移行したり、ユーザー状態移行ツール (USMT) 5.0 の既定の移行動作を変更したりできます。ScanState と LoadState でこのファイルを使用するには、コマンド ラインでの実行時にカスタム .xml ファイルを指定する必要があります。

ここでは、MigApp.xml を使用しても既定では移行されないアプリケーションの設定を移行する、カスタム移行 .xml ファイルを作成する方法を説明します。このような設定は、アプリケーションをインストールした後、アプリケーションを初めて実行する前に移行する必要があります。

ここでは、アプリケーション固有のストアに設定を格納するアプリケーションを移行する方法については説明しません。設定情報をファイルまたはレジストリに格納するアプリケーションについてのみ、説明します。また、ユーザーがアプリケーションを使って作成したデータを移行する方法についても、ここでは説明しません。たとえば、アプリケーションで特定のテンプレートを使って .doc ファイルを作成することがありますが、ここでは .doc ファイルおよびテンプレート自体を移行する方法については説明しません。

このトピックの内容

  • 開始する前に

  • 手順 1: そのアプリケーションが移行元コンピューターにインストールされていることと、そのアプリケーションのバージョンが、移行先コンピューターにインストールするバージョンと同じであることを確かめます。。

  • 手順 2: 収集する設定を特定し、それぞれの設定が格納されるコンピューター上の場所を決めます。。

  • 手順 3: 収集した設定を適用する方法を特定します。。

  • 手順 4: アプリケーションの移行 XML コンポーネントを作成します。。

  • 手順 5: アプリケーション設定の移行をテストします。。

開始する前に

移行元コンピューターのオペレーティング システムを含むテスト コンピューターと、設定を移行するアプリケーションを特定しておく必要があります。たとえば、Windows Vista(R) から Windows(R) 8 への移行を計画している場合、テスト コンピューターに Windows Vista をインストールしてから、アプリケーションをインストールします。

手順 1: そのアプリケーションが移行元コンピューターにインストールされていることと、そのアプリケーションのバージョンが、移行先コンピューターにインストールするバージョンと同じであることを確かめます。

USMT によって設定を移行する前に、移行元コンピューターにアプリケーションがインストールされていることと、そのアプリケーションが適切なバージョンであることを調べる必要があります。そのアプリケーションが移行元コンピューターにインストールされていなければ、USMT でそのアプリケーションの設定を検索する時間が無駄になります。さらに、インストールされていないアプリケーションの設定が USMT によって収集されると、移行された設定によって移行先コンピューターで異常な動作が発生する可能性があります。さらに、アプリケーションのバージョンが複数存在するかどうか調べる必要があります。これは、新しいバージョンのアプリケーションで設定が別の場所に格納される場合、移行先コンピューターで予期しない結果が発生する可能性があるためです。

アプリケーションがインストールされていることを調べる方法は多数あります。最適な方法は、レジストリのアプリケーション アンインストール キーを調べてから、そのアプリケーションのインストールに使った実行可能ファイルをコンピューター上で検索することです。この両方の項目を調べることが重要なのは、同じアプリケーションの別々のバージョンでも同じアンインストール キーを使う場合があるためです。そのため、キーが存在していても、目的のバージョンのアプリケーションのものではないことがあります。

レジストリでアプリケーションのアンインストール キーを調べます。

多数のアプリケーションがインストールされている場合 (特に Microsoft(R) Windows(R) Installer テクノロジを使ってインストールされている場合)、アプリケーションのアンインストール キーは HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall に作成されます。たとえば、Adobe Acrobat Reader 7 をインストールすると、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall \{AC76BA86-7AD7-1033-7B44-A70000000000} というキーが作成されます。そのため、コンピューターにこのキーが含まれていれば、Adobe Acrobat Reader 7 がコンピューターにインストールされていることになります。レジストリ キーが存在するかどうかは、DoesObjectExist ヘルパー変数を使って調べることができます。

通常は、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall の下で、アプリケーションの名前、アプリケーションの実行可能ファイルの名前、またはアプリケーションの開発元の名前を検索することで、キーを見つけることができます。レジストリを検索するには、レジストリ エディター (%SystemRoot% にある Regedit.exe) を使います。

ファイル システム内で、アプリケーションの実行可能ファイルを調べます。

アプリケーションのインストールに使った実行可能ファイルのアプリケーション バイナリも調べる必要があります。それにはまず、アプリケーションがインストールされた場所と、実行可能ファイルの名前を調べる必要があります。ほとんどのアプリケーションでは、アプリケーション バイナリのインストール先がレジストリに格納されます。レジストリから、アプリケーションの名前、アプリケーションの実行可能ファイルの名前、またはアプリケーションの開発元の名前を検索して、インストール パスを含むレジストリ値を探します。アプリケーションの実行可能ファイルのパスがわかったら、DoesFileVersionMatch ヘルパー関数を使って、正しいバージョンのアプリケーション実行可能ファイルがあることを確かめます。この手順を実行する方法の例については、MigApp.xml ファイルの Windows Live(TM) Messenger に関するセクションをご覧ください。

手順 2: 収集する設定を特定し、それぞれの設定が格納されるコンピューター上の場所を決めます。

次に、ユーザー インターフェイスを使って、使用できるすべての設定の一覧を作成します。移行しない設定がある場合、一覧から削除します。それぞれの設定が格納されている場所を調べるには、その設定を変更して、レジストリやファイル システムの動作を監視する必要があります。アプリケーションがインストールされるときに作成されるバイナリ ファイルやレジストリ設定は、移行する必要はありません。いずれにせよ、アプリケーションを移行先コンピューターに再インストールする必要があるからです。カスタマイズできる設定だけを移行してください。

それぞれの設定が格納されている場所を特定する方法

  1. ファイルとレジストリの監視用のツール (Regmon ツール、Filemon ツールなど) を、Windows Sysinternals の Web サイトからダウンロードします。

  2. コンピューターのレジストリとファイル システムの動作を最小限に抑えるために、できるだけ多くのアプリケーションをシャットダウンしておきます。

  3. アプリケーションによる変更のみが表示されるように、ツールの出力をフィルター処理します。

    注意

    ほとんどのアプリケーションでは、ユーザー プロファイルの下に設定が格納されます。つまり、ファイル システムに格納される設定は %UserProfile% ディレクトリに置かれ、レジストリに格納される設定は HKEY_CURRENT_USER ハイブに置かれます。このようなアプリケーションの場合、ファイルとレジストリの監視用ツールの出力をフィルター処理して、その場所の下での動作のみが表示されるようにします。そうすることで、調べる必要がある出力結果が大幅に減ります。

  4. 監視ツールを起動し、設定を変更して、設定の変更時に実行されたレジストリとファイル システムへの書き込みを探します。加えた変更が実際に適用されるようにしてください。たとえば、Microsoft Word の設定を変更するために [オプション] ダイアログ ボックスのチェック ボックスをオンにした場合、通常は [OK] をクリックしてダイアログ ボックスを閉じるまで変更は適用されません。

  5. 設定を変更したら、ファイル システムとレジストリに生じた変化を調べます。1 つの設定に対して、ファイルやレジストリの値が複数存在することもあります。設定を変更するために最低限必要なファイルとレジストリの変更を特定する必要があります。この一連のファイルとレジストリ キーが、設定を移行するために移行する必要があるファイルとレジストリ キーになります。

    注意

    アプリケーションの設定を変更すると、必ずレジストリ キーへの書き込みが発生します。できれば、ファイルとレジストリの監視用ツールの出力をフィルター処理して、ファイルとレジストリ キー (レジストリ値) への書き込みのみを表示するようにしてください。

手順 3: 収集した設定を適用する方法を特定します。

移行元コンピューターのアプリケーションのバージョンが、移行先コンピューターのものと同じである場合、収集したファイルとレジストリ キーを変更する必要はありません。USMT では既定で、移行元コンピューターのファイルとレジストリ キーが、移行先コンピューターの対応する場所に移行されます。たとえば、C:\Documents and Settings\User1\My Documents フォルダーからファイルが収集され、移行先コンピューターのプロファイル ディレクトリが D:\Users\User1 にある場合、そのファイルは USMT によって自動的に D:\Users\User1\My Documents に移行されます。ただし、次の 3 つのケースでは、一部の設定の場所を変更する必要がある場合があります。

ケース 1: 移行先コンピューターのアプリケーションのバージョンが、移行元コンピューターのアプリケーションのバージョンよりも新しい。

この場合、移行元コンピューターの設定を変更しなくても、新しいバージョンのアプリケーションから読み取ることができる可能性があります。つまり、前のバージョンのアプリケーションから収集されたデータが、新しいバージョンのアプリケーションと互換性がある可能性があります。ただし、次のいずれかに該当する場合は、設定の場所を変更する必要があります。

  • **新しいバージョンのアプリケーションに、前のバージョンのアプリケーションの設定をインポートする機能がある。**このマッピングは、通常、設定が移行された後で新しいバージョンのアプリケーションをユーザーが最初に実行したときに実行されます。設定が移行された後に自動的にこの処理が実行されるアプリケーションもありますが、それ以外のアプリケーションでは、アプリケーションが前のバージョンからアップグレードされた場合にのみ、そのような処理が実行されます。アプリケーションをアップグレードすると、それ以前にインストールされていた前のバージョンのアプリケーションを表す、一連のファイルとレジストリ キーがインストールされます。新しいバージョンのアプリケーションをクリーン インストールした場合 (ほとんどの移行が該当します)、このような一連のファイルとレジストリ キーがコンピューターに存在しないため、マッピングが実行されません。新しいバージョンのアプリケーションでこのインポート処理が開始されるようにするために、移行スクリプトを使って、このような一連のファイルとレジストリ キーを移行先コンピューターに作成する必要がある場合があります。

    インポートを実行するために作成する必要がある一連のファイルとレジストリ キー (レジストリ値) を特定するには、前のバージョンのアプリケーションを新しいバージョンにアップグレードして、ファイル システムとレジストリに加えられる変更を監視します。その監視の方法については、「それぞれの設定が格納されている場所を特定する方法」をご覧ください。コンピューターに必要な一連のファイルがわかったら、<addObjects> 要素を使って、それを移行先コンピューターに追加します。

  • **新しいバージョンのアプリケーションから移行元コンピューターの設定を読み取ることができず、設定を新しい形式にインポートすることもできない。**このケースでは、移行元の各設定を移行先に割り当てるマッピングを作成する必要があります。それには、「それぞれの設定が格納されている場所を特定する方法」の手順を使って、新しいバージョンで各設定が格納される場所を調べます。マッピングを作成したら、<locationModify> 要素と、ヘルパー関数の RelativeMove および ExactMove を使って、移行先コンピューターの新しい場所に設定を適用します。

ケース 2: 移行先コンピューターにそのアプリケーションの設定が既に存在している。

設定は、アプリケーションをインストールした後、アプリケーションを初めて実行する前に移行することをお勧めします。これによって、設定を移行するときに移行先コンピューターに設定が存在しない状態にできます。移行の前にアプリケーションをインストールする場合、<destinationCleanup> 要素を使って、以前の設定をすべて削除する必要があります。何らかの理由で移行先コンピューターにある設定を維持する必要がある場合は、<merge> 要素と DestinationPriority ヘルパー関数を使用できます。

ケース 3: アプリケーションをインストールすると設定が上書きされる。

設定は、アプリケーションをインストールした後、アプリケーションを初めて実行する前に移行することをお勧めします。これによって、設定を移行するときに移行先コンピューターに設定が存在しない状態にできます。さらに、一部のアプリケーションをインストールすると、コンピューターの前の設定がすべて上書きされることもあります。このような場合、データを移行した後でアプリケーションをインストールすると、カスタマイズした設定が上書きされます。ユーザー プロファイルの外部に設定 (一般的にはすべてのユーザーに適用される設定) を格納するアプリケーションの場合、このようなことがよくあります。このような全ユーザーに適用される設定は、アプリケーションをインストールするときに上書きされ、既定値に置き換えられる場合があります。これを避けるには、アプリケーションをインストールした後で、ファイルと設定を移行先コンピューターに移行する必要があります。USMT では既定で、移行元コンピューターのデータによって、移行先コンピューターの同じ場所にある前のデータを上書きします。

手順 4: アプリケーションの移行 XML コンポーネントを作成します。

手順 1. ~ 3. を完了したら、収集した情報に基づいてアプリケーションを移行するためのカスタム移行 .xml ファイルを作成する必要があります。MigApp.xml にはこのトピックで説明した概念を示す例が多数含まれているため、このファイルをモデルとして使用できます。その他のサンプル .xml ファイルについては、「カスタム XML の例」をご覧ください。

注意

スクリプトを MigApp.xml ファイルに追加するのではなく、別の .xml ファイルを作成することをお勧めします。MigApp.xml ファイルは非常に大きいファイルであるため、内容を理解して編集することが難しいためです。また、何らかの理由で USMT を再インストールした場合、MigApp.xml ファイルは既定の内容で上書きされ、カスタマイズした内容が失われます。

重要

移行する必要がない情報 (アプリケーションのインストール パス、コンピューター名など) をユーザー プロファイルに格納するアプリケーションもあります。このようなファイルやレジストリ キーは、移行から除外してください。

スクリプトでは次の処理を実行する必要があります。

  1. 次の操作を実行して、そのアプリケーションの正しいバージョンがインストールされていることを調べます。

    • DoesObjectExist ヘルパー関数を使って、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall の下にあるインストール アンインストール キーを探します。

    • DoesFileVersionMatch ヘルパー関数を使って、正しいバージョンのアプリケーション実行可能ファイルかどうかを確かめます。

  2. 正しいバージョンのアプリケーションがインストールされている場合、それぞれの設定が移行先コンピューター上の適切な場所に移行されるようにします。

    • 移行元コンピューターと移行先コンピューターでアプリケーションのバージョンが同じである場合、<include> 要素と <exclude> 要素を使って各設定を移行します。

    • 移行先コンピューターのアプリケーションのバージョンが移行元コンピューターのアプリケーションのバージョンよりも新しいが、そのアプリケーションでは設定をインポートできない場合、スクリプトで 1) <addObjects> 要素を使ってインポートを開始する一連のファイルを追加するか、2) <locationModify> 要素とヘルパー関数の RelativeMove および ExactMove を使って移行先コンピューターの正しい場所に以前の設定を適用するマッピングを作成します。

    • 設定を移行する前にアプリケーションをインストールする必要がある場合、<destinationCleanup> 要素を使って、移行先コンピューターにある以前の設定をすべて削除してください。

.xml 要素とヘルパー関数について詳しくは、「XML 要素ライブラリ」をご覧ください。

手順 5: アプリケーション設定の移行をテストします。

テスト コンピューターに、移行先コンピューターにインストールされるオペレーティング システムをインストールします。たとえば、Windows(R) 7 から Windows 8 への移行を計画している場合、Windows 8 とアプリケーションをインストールします。次に、テスト コンピューターで LoadState を実行して、移行される設定をすべて確かめます。必要に応じて修正を加えます。必要な設定がすべて正しく移行されるまで、この手順を繰り返します。

データの収集と移行にかかる時間を短縮するには、一度に 1 人のユーザーのみを移行し、テスト対象のアプリケーションを除くすべてのコンポーネントを移行から除外します。移行に User1 のみを指定するには、「/ue:*\* /ui:user1」と入力します。詳しくは、「ファイルと設定の除外」と、「ScanState の構文」の「ユーザー オプション」をご覧ください。問題のトラブルシューティングを実行するには、進行状況ログ、ScanState ログ、LoadState ログを調べます。ログには、移行に関する問題を示す警告やエラーが記載されています。

関連項目

他のリソース

USMT XML リファレンス
競合と優先度
XML 要素ライブラリ
ログ ファイル