如何修正 MSI 軟體更新註冊損毀問題
本文提供在安裝軟體更新之後,某些產品修復或卸載可能會失敗的問題解決方案。
適用於:Windows 10 - 所有版本、Windows Server 2012 R2
原始 KB 編號: 971187
徵狀
安裝軟體更新之後,某些產品的修復或卸載可能會失敗。 如果您已啟用 MSI 記錄,則會在記錄中找到下列幾行:
找不到本機修補程式 ''。 在來源尋找它。
...
MainEngineThread 傳回 1612
當您檢視登錄時,可能會發現下列登錄子機碼遺失軟體更新快取註冊: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\<SID>\Patches\<SQUID>
解決方案
重要事項
這個章節、方法或工作包含修改登錄的步驟。 然而,不當修改登錄可能會發生嚴重的問題。 因此,請務必謹慎地依照這些步驟執行。 為了有多一層保護,請先備份登錄再進行修改。 如此一來,您就可以在發生問題時還原登錄。
若要解決此問題,請遵循下列步驟:
確認產品受到影響。
如果要執行這項操作,請依照下列步驟執行:
開啟下列登錄子機碼,以尋找產品的軟體更新註冊:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\UserData\<SID>\Products\<ProductSQUID>\Patches
在此子機碼下,套用至產品的每個軟體更新都會有一個子機碼。針對下列格式的每個子機碼,執行下列步驟:
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 字串值所參考的封裝也存在。
- 如果遺漏 LocalPackage 字串值或參考的套件,則會影響產品。 繼續進行步驟 2。
- 如果參考的套件存在,而且不需要採取其他動作。
重新建立軟體更新快取登錄詳細數據。 如果要執行這項操作,請依照下列步驟執行:
在 %windir%\installer\*.msp 中搜尋您嘗試安裝的軟體更新。 確認軟體更新在摘要資訊 Stream 中具有正確的修補程式全域唯一標識碼 (GUID) ,並以正確的產品 GUID 為目標。
注意事項
由於此目錄可作為每一使用者安裝和每部電腦安裝的快取,因此您可以使用每位使用者安裝來模擬此目錄中的軟體更新。
建立下列子機碼:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\UserData\<SID>\Patches\<PatchSQUID>
注意事項
重新建立軟體更新快取登錄會造成安全性風險。 不過,這是修復損毀的唯一方法。 您可以確定軟體更新是正確的軟體更新,以降低安全性風險。 若要這樣做,請確認軟體更新的總和檢查碼。
在您建立步驟 2 的登錄子機碼中建立 LocalPackage 字串值。 請確定 LocalPackage 字串值已設定為軟體更新的路徑。
刪除剩餘的軟體更新參考。 如果要執行這項操作,請依照下列步驟執行:
開啟下列子機碼,然後從 “AllPatches” multi-sz 值移除
<PatchSQUID>
:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\UserData\<SID>\Products\<ProductSQUID>\Patches
刪除下列登入子機碼:
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>
注意事項
如果遺漏此子機碼,請略過此步驟。
如果產品是每部計算機安裝,請遵循下列步驟:
開啟下列子機碼:
HKEY_LOCAL_MACHINE\Software\Classes\Installer\Products\<ProductSQUID>\Patches
<PatchSQUID>
如果字串值存在,請將其刪除。<PatchSQUID>
如果字串值存在於 「Patches」 Multi-sz 值中,請刪除<PatchSQUID>
字串值。
如果有下列登錄子機碼存在,請將其刪除:
HKEY_LOCAL_MACHINE\Software\Classes\Installer\Patches\<PatchSQUID>
如果產品是以非受控方式安裝,則為:
開啟下列登入子機碼:
HKEY_CURRENT_USER\Software\Microsoft\Installer\Products\<ProductSQUID>\Patches
<PatchSQUID>
如果字串值存在,請將其刪除。<PatchSQUID>
如果 「Patches」 Multi-sz 值中的 存在,請將它移除。
如果有下列登錄子機碼存在,請將其刪除:
HKEY_CURRENT_USER\Software\Microsoft\Installer\Patches\<PatchSQUID>
如果產品已安裝為每位使用者管理:
開啟下列登入子機碼:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\Managed\<SID>\Installer\Products\<ProductSQUID>\Patches
<PatchSQUID>
如果字串值存在,請將其刪除。<PatchSQUID>
如果 「Patches」 Multi-sz 值中的 存在,請將它移除。
如果下列登錄子機碼存在,請將其刪除:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\Managed\<SID>\Installer\Patches\<PatchSQUID>
參考資料
本文並非 Windows Update 或 Microsoft Update 所發生問題的特定文章。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應