軟體更新失敗時,是卡在下載、安裝還是版本檢查
軟體頁顯示有更新,點下去卻一直沒結束。先看看它停在下載、等待系統管理員確認、安裝,還是安裝後的版本檢查。這幾個階段用的是不同入口。反覆點選更新未必能讓正在等你確認的安裝程式繼續。
下載慢和安裝失敗分開看
Mole 更新列會說明目前階段。下載能讀取到總大小時顯示百分比,沒有總大小時會顯示已下載的量。數字還在變化就說明有進展。下載階段可以取消。一旦進入安裝階段(包括跳出系統管理員確認),這次更新就不能再取消,也就不會把安裝程式結束在裝到一半的狀態。
| 停在什麼地方 | 先看哪裡 |
|---|---|
| 下載一直沒有進展,或伺服器傳回錯誤 | 下載位址、目前網路和廠商服務,記錄完整報錯 |
| 正在要求系統管理員權限 | 工作列和 Windows 的系統管理員確認視窗 |
| 安裝中,另一個視窗還開著 | 安裝程式是否在等結束 App、確認或重新啟動 |
| 執行完,仍顯示同一個版本 | App 的關於頁、安裝範圍和是否需要重新開啟 |
廠商伺服器拒絕下載時,安裝程式可能一次都沒執行,不能當成安裝程式損壞,也不需要為此先卸掉原來還能用的軟體。
錯誤代碼放回它自己的安裝程式裡看
不同的失敗要做不同的事。Windows Installer 的幾個結果代碼就是例子。
| MSI 代碼 | 含義 | 下一步 |
|---|---|---|
| 1603 | 安裝失敗的通用結果 | 看同一次安裝的記錄(%TEMP% 裡的 MSI*.log,或用 msiexec /l*v 重跑一次),代碼本身沒有指出具體原因 |
| 1618 | 另一項安裝正在執行 | 先讓那項安裝結束,不要同時再啟動一份 |
| 3010 | 安裝成功,需要重新啟動才能完成 | 儲存工作後按提示重新啟動,再核對版本 |
這些含義來自微軟的 Windows Installer 代碼表,只適用於 MSI 的結果,不能拿同樣的數字去解釋每家廠商的 EXE 安裝程式。3010 尤其不代表下載失敗、需要重裝。
找記錄不需要再裝一次
在 PowerShell 裡執行下面這條查詢,可以看到 WinGet 的版本、環境和記錄目錄。它不會開始更新任何軟體。
winget --info
按輸出的位置找到出錯那段時間的記錄,對上軟體名稱、套件 ID 和時間,再分清錯誤來自下載要求、安裝程式結束,還是後面的版本檢查。記錄裡可能有本機使用者名稱和檔案路徑。寄給支援之前先刪掉不想分享的部分,不要把整包記錄貼到公開的地方。
點選更新的時間、原來的軟體版本、完整的代碼,以及有沒有出現授權或重新啟動提示,這幾項放在一起記。不然昨天另一個軟體的安裝失敗,很容易看成今天這次的原因。WinGet 排查說明講了怎麼查記錄,不用為了拿記錄先強制重裝。
有些更新需要先移除舊版
Java 8 這類安裝程式可能要求先解除安裝舊版。裝給全機的舊版又需要系統管理員權限,一般權限下執行不一定能完成。Mole 會處理它支援的更新情形,需要系統管理員確認時再要求。不能把所有失敗都歸為同一種權限問題。
安裝程式各有自己的結束代碼和行為。微軟的 winget 排查說明介紹了記錄與錯誤檢查。回報時保留錯誤碼和具體階段,比只說更新失敗更容易查清楚。
安裝成功後,還要確認用上了新版
有些 App 會保留使用者層級和全機層級兩份安裝。軟體顯示的版本和套件來源記錄也可能使用不同編號。先開啟這份 App 的關於頁,再核對安裝程式是否完成。要求重新啟動時把步驟做完,不要為了清空更新清單反覆覆蓋安裝。
Mole 對版本仍然沒變的結果會保留複查路徑。能自行更新的軟體按它自己的管道處理,具體入口見軟體更新指南。瀏覽器可以在仍然開啟時更新的,新版通常要等下一次重新啟動瀏覽器才使用。
回報時帶上目前版本和報錯
記錄 Windows、Mole 和出問題軟體的版本,說明下載、系統管理員確認或安裝走到了哪一步,附上錯誤和截圖,透過 Windows 說明裡的支援入口回報。記錄裡不想分享的內容先去掉。
Mole 自己的更新、其他 App 更新和 Windows Update 不是同一套佇列。系統更新出錯時繼續查 Windows 的記錄,不要把軟體頁的一條失敗當成整個系統都需要重設。更新入口本身怎麼分,見Windows 軟體更新的幾個入口。更新檔案佔的空間和回復代價,見刪除 Windows 更新檔案。