MSI ソフトウェア更新プログラムの登録の破損の問題を修正する方法

この記事では、ソフトウェア更新プログラムをインストールした後に、特定の製品の修復またはアンインストールが失敗する可能性がある問題の解決策を示します。

元の KB 番号: 971187

現象

ソフトウェア更新プログラムをインストールした後、特定の製品の修復またはアンインストールが失敗する可能性があります。 MSI ログが有効になっている場合は、ログに次の行があります。

ローカル パッチ '' が見つかりませんでした。 そのソースでそれを探しています。
...
MainEngineThread が 1612 を返しています

レジストリを見ると、次のレジストリ サブキーにソフトウェア更新キャッシュの登録が見つからない場合があります。 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\<SID>\Patches\<SQUID>

解決方法

重要

このセクション、方法、またはタスクには、レジストリの編集方法が記載されています。 レジストリを誤って変更すると、深刻な問題が発生することがあります。 したがって、次の手順を注意深く実行してください。 保護のために、レジストリを変更する前に、バックアップします。 その後、問題が起こった場合は、レジストリを復元できます。

この問題を修正するには、次の手順に従います。

  1. 製品が影響を受けるかどうかを確認します。

    これを行うには、次の手順に従います。

    1. 次のレジストリ サブキーを開いて、製品のソフトウェア更新プログラムの登録を見つけます。 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\UserData\<SID>\Products\<ProductSQUID>\Patches
      このサブキーの下には、製品に適用されたすべてのソフトウェア更新プログラムのサブキーがあります。

    2. 次の形式のサブキーごとに、次の手順を実行します。 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\UserData\<SID>\Products\<ProductSQUID>\Patches\<PatchSQUID>

      次のサブキーが存在することを確認します。

      HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\UserData\<SID>\Patches\<PatchSQUID>

      サブキーが見つからない場合、製品は影響を受けています。 手順 2 に進みます。

      サブキーが存在する場合は、LocalPackage 文字列値が正しく設定されていること、および LocalPackage 文字列値によって参照されるパッケージも存在することを確認します。

      1. LocalPackage 文字列値または参照されるパッケージが見つからない場合、製品は影響を受けます。 手順 2 に進みます。
      2. 参照先パッケージが存在し、追加のアクションが必要ない場合。
  2. ソフトウェア更新キャッシュ レジストリの詳細を再作成します。 これを行うには、次の手順を実行します。

    1. インストールしようとしたソフトウェア更新プログラムを %windir%\installer\*.msp で検索します。 ソフトウェア更新プログラムが概要情報ストリームに正しいパッチグローバル一意識別子 (GUID) を持ち、正しい製品 GUID をターゲットにしていることを確認します。

      Note

      このディレクトリは、ユーザーごとのインストールとマシンごとのインストールのキャッシュとして機能するため、ユーザーごとのインストールを使用して、このディレクトリ内のソフトウェア更新プログラムをシミュレートできます。

    2. 次のサブキーを作成します。 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\UserData\<SID>\Patches\<PatchSQUID>

      Note

      ソフトウェア更新プログラムのキャッシュ レジストリを再作成することはセキュリティ 上のリスクです。 ただし、これは破損を修復する唯一の方法です。 ソフトウェア更新プログラムが正しいソフトウェア更新プログラムであることを確認することで、セキュリティ リスクを軽減できます。 これを行うには、ソフトウェア更新プログラムのチェックサムを確認します。

    3. 手順 2. で作成したレジストリ サブキーに LocalPackage 文字列値を作成します。 LocalPackage 文字列値がソフトウェア更新プログラムのパスに設定されていることを確認します。

  3. 残りのソフトウェア更新プログラムの参照を削除します。 これを行うには、次の手順に従います。

    1. 次のサブキーを開き、"AllPatches" multi-sz 値から <PatchSQUID> を削除します。 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\UserData\<SID>\Products\<ProductSQUID>\Patches

    2. 次のレジストリ サブキーを削除します。 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\UserData\<SID>\Products\<ProductSQUID>\Patches\<PatchSQUID>

    3. 次のレジストリ サブキーを削除します。 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\UserData\<SID>\Patches\<PatchSQUID>

      Note

      このサブキーがない場合は、この手順をスキップします。

    4. 製品がマシンごとにインストールされている場合は、次の手順に従います。

      1. 次のサブキーを開きます。 HKEY_LOCAL_MACHINE\Software\Classes\Installer\Products\<ProductSQUID>\Patches

        1. <PatchSQUID>文字列値が存在する場合は、削除します。
        2. <PatchSQUID>文字列値が "Patchs" Multi-sz 値に存在する場合は、<PatchSQUID>文字列値を削除します。
      2. 次のレジストリ サブキーが存在する場合は、削除します。 HKEY_LOCAL_MACHINE\Software\Classes\Installer\Patches\<PatchSQUID>

    5. 製品がユーザーごとにアンマネージドでインストールされた場合:

      1. 次のレジストリ サブキーを開きます。 HKEY_CURRENT_USER\Software\Microsoft\Installer\Products\<ProductSQUID>\Patches

        1. <PatchSQUID>文字列値が存在する場合は、削除します。
        2. "Patchs" Multi-sz 値の <PatchSQUID> が存在する場合は、削除します。
      2. 次のレジストリ サブキーが存在する場合は、削除します。 HKEY_CURRENT_USER\Software\Microsoft\Installer\Patches\<PatchSQUID>

    6. 製品がユーザーごとにインストールされた場合は、次の操作を行います。

      1. 次のレジストリ サブキーを開きます。 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\Managed\<SID>\Installer\Products\<ProductSQUID>\Patches

        1. <PatchSQUID>文字列値が存在する場合は、削除します。
        2. "Patchs" Multi-sz 値の <PatchSQUID> が存在する場合は、削除します。
      2. 次のレジストリ サブキーが存在する場合は、削除します。 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\Managed\<SID>\Installer\Patches\<PatchSQUID>

関連情報

この記事は、Windows Update または Microsoft Update によって発生した問題に固有ではありません。