2021年5月29日 星期六

Windows Store安裝的時候發生錯誤0x80073D0D

最近在安裝Windows Store App的過程真的是百般曲折,尤其是因為我覺得C槽塞滿大遊戲一下就空間不足,所以就設定都把遊戲裝到另外一顆SSD上面。結果不知為何東搞西搞的就不能安裝遊戲了。

今天這篇就來講講跟安裝磁碟相關的錯誤:0x80073D0D

這個錯誤的直接定義是ERROR_INSTALL_VOLUME_OFFLINE,意思就是說Windows Store App定義可以安裝App的磁碟槽不見了。看到這裡大家應該都傻眼了,明明硬碟就在那裏是怎樣可以不見?這個部分就牽涉到Windows 如何保護安裝的Store App,Windows存放Store App的位置是有特別定義的:

  • 在C槽的話預設會放在C:\Program Files\WindowsApps
  • 在其他槽(X代表)的話會預設放在 X:\WindowsApps
這些資料夾都是會有特別的保護的,例如基本上Owner會是NT Service\TrustedInstaller,還有就算是Admin也不能動也不能開也不能看的一堆限制。在這層之上,還有一個MediaID用來確保磁碟槽等級的確認(技術點說就是MountPoint),這個設定會是在從設定頁面裡面定義預設App安裝槽的當下由系統直接幫你做紀錄和配置。


如果,Windows Store在安裝過程中檢查你的磁碟槽跟他預設可以安裝的磁碟槽不一致的時候,這篇文章所提到的錯誤訊息就會被提示出來。所以關鍵的點就是MediaID了。舉個例子,如果你在某時間重新Format了D槽(可能是被女朋友。別做夢了你根本沒有女朋友~~),這個時候你的MediaID就會對不起來,然後就會發生明明D槽就還很空,權限也沒有問題,可是就是不能裝的問題。

這個問題要怎麼解決?方法很直接,就是調整幾個機碼然後讓系統重新建立對應的MediaID。直接帶上機碼位置:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Appx\PackageVolumes


很快解釋一下這個機碼的結構,左邊的1、2、3數字代表設定的項目數量。代表當前設定過幾次PackageVolumes,而有在這裡做過設定的磁碟在確認後才能被認可安裝Windows Apps。

  • DefaultVolumeKey:這個是指定哪一個設定是預設的安裝槽
  • EnableExternalVolumes:可不可以安裝在外部磁碟槽
  • NextVolumeIndx:下次要建立新的認可項目要用的數字
上面的東西原則上都不要動,我也不會去解釋要怎麼用。然後編號1的那個機碼不能動。通常都是你的C槽,不要動。不要動。不要動。接下來你可以把後面編號的機碼通通刪掉。完成以後回到設定頁面設定你可以安裝App的磁碟:



這樣動作做完以後,你的每顆磁碟的MediaID就會重新對應在這個機碼上面。這篇文章所說的問題就可以獲得解決。