10.42 不通过Microsoft Store的GUI界面安装Store App
http://scz.617.cn:8/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 "<path>\some.Appx"
参看
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/9pgjgd53tn86Creating 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解压,用不上该文件。
并不推荐该脚本,记录于此仅为备忘。