10.42 不通过Microsoft Store的GUI界面安装Store App https://scz.617.cn/windows/202201282230.txt Q: 如何不通过Microsoft Store的GUI界面安装Store App,比如WinDbg Preview A: scz 1) 获取指定App的Store URL Google for "WinDbg Preview Microsoft Store",找到Store URL https://www.microsoft.com/en-us/p/windbg/9pgjgd53tn86 也可以浏览器中直接访问 https://aka.ms/WinDbgPreview 会跳转到Store URL curl --ciphers DEFAULT --compressed -ksL -I https://aka.ms/WinDbgPreview 从301转向中获取Store URL 如果已有Microsoft Store,搜出指定App后,在右下角有个"共享",点击后出现的界 面上有个"复制链接",形如 https://www.microsoft.com/store/productId/9PGJGD53TN86 这种也是Store URL,如果用浏览器访问它,最终转向到 https://www.microsoft.com/en-us/p/windbg-preview/9pgjgd53tn86 要点是知道目标App的ProductId。 2) 根据Store URL获取可下载URL 有个网站 https://store.rg-adguard.net/ 在这里输入指定App的Store URL,可以获取相应的可下载URL。比如输入下列URL之一 https://www.microsoft.com/en-us/p/windbg/9pgjgd53tn86 https://www.microsoft.com/en-us/p/windbg-preview/9pgjgd53tn86 https://www.microsoft.com/store/productId/9PGJGD53TN86 获取的可下载URL形如 http://tlu.dl.delivery.mp.microsoft.com/filestreamingservice/files/91c570bb-a9bf-413e-8b1f-d723721b101a?P1=1643344394&P2=404&P3=2&P4=... 其中P4好像与认证相关。从Microsoft Store下载WinDbg Preview,需要登录,匿名 无法下载。P4可能是"store.rg-adguard.net"用自己的帐号登录生成的。无论如何, 现在有一个可以粘贴到浏览器中的可下载URL,这是微软官方站点的URL,没有安全问 题。 理论上劫持Microsoft Store的HTTPS请求应该可以获取这种下载URL,只不过有现成 "store.rg-adguard.net",没必要自己折腾。 下回来的文件名形如 Microsoft.WinDbg_1.2111.9001.0_neutral__8wekyb3d8bbwe.Appx 3) 手工安装.Appx 缺省情况下,双击.Appx即可。该操作实际依赖"App Installer",其中文版叫"应用 安装程序",其本身也是个Store App,通过Microsoft Store安装之。 https://www.microsoft.com/store/productId/9NBLGGH4NNS1 https://www.microsoft.com/en-us/p/app-installer/9nblggh4nns1 即使没有"App Installer",也可以用PowerShell安装 Add-AppxPackage -Path "\some.Appx" Add-AppxPackage -Path Microsoft.WinDbg_1.2111.9001.0_neutral__8wekyb3d8bbwe.Appx 这个不需要.BlockMap文件在场,只需要.Appx文件。卸载命令示例 Remove-AppxPackage Microsoft.WinDbg_1.2111.9001.0_neutral__8wekyb3d8bbwe 参看 https://docs.microsoft.com/en-us/powershell/module/appx/add-appxpackage https://docs.microsoft.com/en-us/powershell/module/appx/remove-appxpackage 4) winget安装 假设已知Store App的ProductId,可用winget安装 winget install 9PGJGD53TN86 winget是Windows Package Manager Client的别名,看着像Microsoft Store的命令 行版,我没有实测这条命令。 $ where winget C:\Users\scz\AppData\Local\Microsoft\WindowsApps\winget.exe 5) 7-Zip解压.Appx 用7-Zip打开.Appx,这就是个压缩包。释放到任意位置,比如 C:\Green\windbgx\1.2111.9001.0\ 在管理员级cmd中执行 "C:\Green\windbgx\1.2111.9001.0\DbgX.Shell.exe" D: scz 有人可能见过这个脚本 https://github.com/MattiasC85/Scripts/blob/master/OSD/Download-AppxFromStore.ps1 该脚本实际依赖"store.rg-adguard.net",这样用 $ powershell -ExecutionPolicy ByPass -File Download-AppxFromStore.ps1 https://www.microsoft.com/en-us/p/windbg/9pgjgd53tn86 Creating Directorty C:\Users\scz\AppData\Local\Temp\9pgjgd53tn86 Downloading Microsoft.WinDbg_1.2103.1004.0_neutral__8wekyb3d8bbwe.BlockMap... Downloading Microsoft.WinDbg_1.2103.1004.0_neutral__8wekyb3d8bbwe.appx... Downloading Microsoft.WinDbg_1.2111.9001.0_neutral__8wekyb3d8bbwe.BlockMap... Downloading Microsoft.WinDbg_1.2111.9001.0_neutral__8wekyb3d8bbwe.appx... --------------------------------------- Download is complete... Opening Folder 该脚本会下载多个版本,我们只需要最新的1.2111.9001.0。此外,该脚本还会下载 .BlockMap文件,这个文件中只有一个BlockMap.xml。参看 App package block map https://docs.microsoft.com/en-us/uwp/schemas/blockmapschema/app-package-block-map The package block map file is an XML document that contains a list of the app's files along with indexes and cryptographic hashes for each block of data that is stored in the package. 简单点说,.BlockMap文件用于完整性校验。像前面那样7-Zip解压,用不上该文件。 并不推荐该脚本,记录于此仅为备忘。