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

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

元の製品バージョン:   Windows 10-すべてのエディション、Windows Server 2012 R2
元の 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 を対象とします。

      注意

      このディレクトリは、ユーザー単位のインストールおよびコンピューターごとのインストールのキャッシュとして機能するため、このディレクトリでソフトウェアの更新をシミュレートするには、ユーザーごとのインストールを使用します。

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

      注意

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

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

  3. 残りのソフトウェア更新プログラムの参照を削除します。 そのためには、次の手順を実行します。

    1. 次のサブキーを開き、 <PatchSQUID> "AllPatches" の複数の sz 値から削除します。 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>

      注意

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

    4. 製品がコンピューターごとにインストールされていた場合は、次の手順を実行します。

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

        1. <PatchSQUID>文字列値が存在する場合は、それを削除します。
        2. <PatchSQUID>文字列値が「パッチ」の複数 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. <PatchSQUID>「パッチ」の複数 sz 値からのがある場合は、それを削除します。
      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. <PatchSQUID>「パッチ」の複数 sz 値からのがある場合は、それを削除します。
      2. 次のレジストリサブキーが存在する場合は、それを削除します。 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\Managed\<SID>\Installer\Patches\<PatchSQUID>

関連情報

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