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

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

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

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

開始する前に

ソース コンピューターのオペレーティング システムを含むテスト コンピューターを識別する必要があります。 テスト コンピューターには、設定を移行する必要があるアプリケーションも含まれている必要があります。 たとえば、Windows 10 から Windows 11 に移行する場合は、テスト コンピューターにWindows 10をインストールしてから、アプリケーションをインストールします。

手順 1: アプリケーションがソース コンピューターにインストールされていること、および移行先コンピューターにインストールするバージョンと同じバージョンであることを確認する

USMT が設定を移行する前に、アプリケーションがソース コンピューターにインストールされているかどうか、および正しいバージョンであるかどうかをチェックします。 ソース コンピューターにアプリケーションがインストールされていない場合でも、USMT はアプリケーションの設定の検索に時間を費やします。 さらに重要なのは、USMT がインストールされていないアプリケーションの設定を収集した場合、移行先のコンピューターが正しく機能しない設定を移行する可能性があります。 また、新しいバージョンでは設定が別の場所に格納される可能性があるため、アプリケーションのバージョンが複数あるかどうかを判断します。 アプリケーションのバージョンが一致しない場合、対象のコンピューターで予期しない結果が発生する可能性があります。

アプリケーションがインストールされているかどうかを検出する方法は多数あります。 ベスト プラクティスは、レジストリ内のアプリケーション アンインストール キーをチェックしてから、コンピューターでアプリケーションをインストールした実行可能ファイルを検索することです。 これらの両方の項目に対してチェックすることが重要です。同じアプリケーションの異なるバージョンが同じアンインストール キーを共有する場合があるためです。 キーが存在する場合でも、必要なアプリケーションの別のバージョンに対応できます。

アプリケーションのアンインストール キーのレジストリを確認する

多くのアプリケーション (特に Microsoft Windows インストーラー テクノロジを使用してインストールされているアプリケーション) がインストールされている場合、アプリケーション アンインストール キーは次の下に作成されます。

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

アプリケーションの名前、アプリケーション実行可能ファイルの名前、またはアプリケーションを作成する会社の名前。 にあるレジストリ エディターRegedit.exe%SystemRoot%使用して、レジストリを検索できます。

ファイル システムでアプリケーション実行可能ファイルを確認する

アプリケーションをインストールした実行可能ファイルのアプリケーション バイナリも確認する必要があります。 アプリケーション バイナリをチェックするには、アプリケーションのインストール場所と実行可能ファイルの名前を決定します。 ほとんどのアプリケーションは、アプリケーション バイナリのインストール場所をレジストリに格納します。 インストール パスを含むレジストリ値が見つかるまで、レジストリは次のいずれかの項目で検索する必要があります。

  • アプリケーションの名前。
  • アプリケーション実行可能ファイルの名前。
  • アプリケーションを作成する会社の名前。

アプリケーション実行可能ファイルへのパスが決定されると、ヘルパー関数をDoesFileVersionMatch使用して、アプリケーション実行可能ファイルの正しいバージョンをチェックできます。 ヘルパー関数の使用方法 DoesFileVersionMatch の例については、ファイルの Windows Live™ Messenger セクションを MigApp.xml 参照してください。

手順 2: 収集する設定を特定し、各設定がコンピューターに格納されている場所を決定する

次に、ユーザー インターフェイスに移動し、使用可能なすべての設定の一覧を作成します。 移行する必要のない設定がある場合は、一覧を減らすことができます。 各設定を格納する場所を決定するには、設定を変更します。 設定が変更されたら、プロセス モニターなどのツールを使用して、レジストリとファイル システムのアクティビティを 監視します。 アプリケーションのインストール時に作成されるバイナリ ファイルとレジストリ設定を移行する必要はありません。 アプリケーションがコピー先のコンピューターに再インストールされると、それらの設定が再作成されます。 カスタマイズした設定のみを移行する必要があります。

各設定の格納場所を決定する方法

  1. Sysinternals Web サイトから、プロセス モニター (Procmon) などのファイルとレジストリの監視ツールをダウンロードします。

  2. できるだけ多くのアプリケーションをシャットダウンして、コンピューター上のレジストリとファイル システムのアクティビティを制限します。

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

    ほとんどのアプリケーションは、ユーザー プロファイルの下に設定を格納します。 つまり、ファイル システムに格納されている設定はディレクトリの %UserProfile% 下にあり、レジストリに格納されている設定は Hive の下にあります HKEY_CURRENT_USER 。 これらのアプリケーションでは、ファイルとレジストリ監視ツールの出力をフィルター処理して、これらの場所でのみアクティビティを表示できます。 このフィルター処理により、検査する必要がある出力の量が大幅に削減されます。

  4. 監視ツールを起動し、設定を変更し、設定が変更されたときに発生したレジストリとファイル システムの書き込みを探します。 実際に行われた変更が有効になっていることを確認します。 たとえば、[オプション] ダイアログ ボックスの [チェック] ボックスを選択して Microsoft Wordの設定を変更した場合、通常、[OK] を選択してダイアログ ボックスが閉じられるまで変更は有効になりません。

  5. 設定が変更されたら、ファイル システムとレジストリの変更に注意してください。 設定ごとに複数のファイルまたはレジストリ値が存在する可能性があります。 この設定を変更するために必要なファイルとレジストリの変更の最小セットを特定する必要があります。 この一連のファイルとレジストリ キーは、設定を移行するために移行する必要があります。

    アプリケーション設定を変更すると、レジストリ キーへの書き込みが常に発生します。 可能であれば、ファイルとレジストリ モニター ツールの出力をフィルター処理して、ファイルとレジストリ キー/値への書き込みのみを表示します。

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

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

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

この場合、新しいバージョンのアプリケーションでは、ソース コンピューターから設定を変更せずに読み取ることができる場合があります。 つまり、古いバージョンのアプリケーションから収集されたデータは、アプリケーションの新しいバージョンと互換性がある場合があります。 ただし、次のいずれかの条件に該当する場合は、設定の場所を変更する必要があります。

  • 新しいバージョンのアプリケーションでは、以前のバージョンから設定をインポートできます。 このマッピングは、通常、設定の移行後にユーザーが新しいバージョンを初めて実行したときに発生します。 一部のアプリケーションでは、設定の移行後に設定が自動的にインポートされます。 ただし、他のアプリケーションは、アプリケーションが古いバージョンからアップグレードされた場合にのみ設定をインポートします。 アプリケーションがアップグレードされると、以前のバージョンのアプリケーションが以前にインストールされたことを示す一連のファイルやレジストリ キーがインストールされます。 新しいバージョンのクリーンインストールが実行された場合、コンピューターにはこれらのファイルとレジストリ キーが含まれません。 ファイルとレジストリ キーが存在しない場合、マッピングは発生しません。 新しいバージョンのアプリケーションをだましてこのインポート プロセスを開始するには、移行スクリプトでこれらのファイルやレジストリ キーを移行先コンピューターに作成する必要がある場合があります。

    インポートが機能するように作成する必要があるファイルやレジストリ キー/値を特定するには、次のようにします。

    1. 古いバージョンのアプリケーションを新しいバージョンにアップグレードします。
    2. 「各設定の保存先を決定する方法」で説明されているのと同じプロセスを使用して、ファイル システムとレジストリに加えられた変更を監視します。

    コンピューターに必要なファイルのセットがわかったら、 <addObjects> 要素を使用して、コピー先コンピューターに追加できます。

  • 新しいバージョンのアプリケーションでは、ソース コンピューターから設定を読み取ることができません。また、設定を新しい形式にインポートすることもできません。 この場合は、古い場所から新しい場所への各設定のマッピングを作成します。 マッピングを作成するには、「各設定を格納する場所を決定する方法」で説明されているプロセスを使用して、新しいバージョン の各設定を格納する場所を決定します。 マッピングを作成した後、locationModify> 要素と ヘルパー関数を使用して<、コピー先コンピューターの新しい場所に設定をRelativeMoveExactMove適用します。

ケース 2: ターゲット コンピューターにアプリケーションの設定が既に含まれている

Microsoft では、アプリケーションがインストールされた後、ユーザーが初めてアプリケーションを実行する前に設定を移行することをお勧めします。 このプロセスでは、設定を移行するときに、移行先コンピューターに設定が存在しないようにするため、このプロセスをお勧めします。 移行前にアプリケーションをインストールする必要がある場合は、destinationCleanup> 要素を使用して既存の設定を削除する<必要があります。 何らかの理由で、ターゲット コンピューター上の設定を保持する必要がある場合は、 <マージ> 要素と DestinationPriority ヘルパー関数を使用できます。

ケース 3: インストール時にアプリケーションによって設定が上書きされる

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

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

手順 1 ~ 3 を完了した後、更新された情報に基づいてアプリケーションを移行するカスタム移行 .xml ファイルを作成します。 このファイルは MigApp.xml 、この記事で説明する概念の多くの例が含まれているため、モデルとして使用できます。 別のサンプル .xml ファイルについては、「カスタム XML の例」も参照してください。

Microsoft では、ファイルにスクリプトを追加するのではなく、別の .xml ファイルを MigApp.xml 作成することをお勧めします。 ファイルは大きなファイルであり、読み取りと編集が困難であるためMigApp.xml、別の .xml ファイルをお勧めします。 さらに、USMT を再インストールすると、ファイルは既定の MigApp.xml バージョンのファイルで上書きされ、カスタマイズされたバージョンは失われます。

重要

一部のアプリケーションでは、アプリケーションのインストール パス、コンピューター名など、ユーザー プロファイルに情報が格納されます。ユーザー プロファイルに格納されているアプリケーション情報は移行しないでください。また、移行から除外する必要があります。

スクリプトでは、次のアクションを実行する必要があります。

  1. アプリケーションの正しいバージョンがインストールされているかどうかを確認します。

    • ヘルパー関数を使用して、 のインストール HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall アンインストール キーを DoesObjectExist 検索します。

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

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

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

    • 移行先コンピューター上のアプリケーションのバージョンがソース コンピューターのバージョンより新しく、アプリケーションが設定をインポートできない場合、スクリプトは次のいずれかを行う必要があります。

      1. addObjects 要素を使用してインポートをトリガーするファイルのセットを<>追加します。
      2. locationModify 要素と ヘルパーExactMove関数を使用して、対象コンピューター上の正しい場所に古い設定を<適用するマッピングを作成します。>RelativeMove
    • 設定を移行する前にアプリケーションをインストールする必要がある場合は、destinationCleanup> 要素を使用して、移行先コンピューターに既にある設定をすべて<削除します。

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

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

テスト コンピューターで、対象のコンピューターにインストールされるオペレーティング システムをインストールします。 たとえば、Windows 10からWindows 11への移行を計画している場合は、Windows 11をインストールしてから、アプリケーションをWindows 11にインストールします。 次に、テスト コンピューターで LoadState を実行し、すべての設定が移行されることを確認します。 必要に応じて修正を行い、必要なすべての設定が正しく移行されるまでプロセスを繰り返します。

データの収集と移行にかかる時間を短縮するために、一度に移行できるユーザーは 1 人だけです。 テスト対象のアプリケーションを除き、他のすべてのコンポーネントを移行から除外できます。 移行で User1 のみを指定するには、次のように入力します。

/ue:*\* /ui:user1

詳細については、ScanState 構文に関する記事の「ファイルと設定を除外する」および「ユーザー オプション」セクションを参照してください。 問題のトラブルシューティングを行うには、進行状況ログ、ScanState ログ、LoadState ログをチェックします。 ログには、移行に関する問題を示す可能性のある警告とエラーが含まれています。