在Windows 10上安装安卓子系统的一些思路
本帖最后由 PencilNavigator 于 2022-2-19 01:04 编辑众所周知,Windows Subsystem Android 安卓子系统(以下简称WSA)是只能安装在Windows11的。在Windows10上安装会出现无法解析的错误。但我在虚拟机中运行测试版windows11的时候,一不小心卡出了Windows10的任务栏(没错是真的卡出来了,截图我没有,但是图标是windows10的我保证)甚至任务栏底下的横杠都是和Windows10一样的,鬼畜的是点Windows徽标,开始栏还是从中间弹出来的。
(我甚至还在Windows10卡出了Windows7时代的窗口圆角边框。离谱)
所以,有没有一种可能,就是微软从Windows7开始的所有系统都是用的同一套底层?利用某些手段可以在Windows10中安装WSA?带着问题我开始了折腾。
如果直接用代码安装,powershell会报错
PS C:\WINDOWS\system32> add-appxpackage "G:\Useful
Apps\WSA\MicrosoftCorporationII.WindowsSubsystemForAndroid_1.7.32815.0_neutral___8wekyb3d8bbwe.Msixbundle"
add-appxpackage : 部署失败,原因是 HRESULT: 0x80080204, Appx 包的清单无效。
错误 0xC00CE014: 应用部件清单(manifest)验证错误: 应用部件清单必须符合架构: 第 51 行,第 14 列。注意: 已指定的 MaxVersio
nTested 架构无法识别带有命名空间“http://schemas.microsoft.com/appx/manifest/com/windows10/3”的 XML 字段。请确保指定正
确的 MaxVersionTested。原因: 根据父元素 '{http://schemas.microsoft.com/appx/manifest/com/windows10/2}ComServer' 的内容
模型,元素 '{http://schemas.microsoft.com/appx/manifest/com/windows10/3}ServiceServer' 为意外元素。
要求: {http://schemas.microsoft.com/appx/manifest/com/windows10}ExeServer, {http://schemas.microsoft.com/appx/manifest/
com/windows10}Surrogat
错误 0xC00CE014: 应用部件清单(manifest)验证错误: 应用部件清单必须符合架构: 第 51 行,第 14 列。注意: 已指定的 MaxVersio
nTested 架构无法识别带有命名空间“http://schemas.microsoft.com/appx/manifest/com/windows10/3”的 XML 字段。请确保指定正
确的 MaxVersionTested。原因: 根据父元素 '{http://schemas.microsoft.com/appx/manifest/com/windows10/2}ComServer' 的内容
模型,元素 '{http://schemas.microsoft.com/appx/manifest/com/windows10/3}ServiceServer' 为意外元素。
要求: {http://schemas.microsoft.com/appx/manifest/com/windows10}ExeServer, {http://schemas.microsoft.com/appx/manifest/
com/windows10}SurrogateServer, {http://schemas.microsoft.com/appx/manifest/com/windows10}TreatAsClass, {http://schemas.
microsoft.com/appx/manifest/com/windows10}ProgId。
注意: 有关其他信息,请在事件日志中查找 8dd6bab5-1930-0001-df67-d88d3019d801,或使用命令行 Get-AppPackageLo
g -ActivityID 8dd6bab5-1930-0001-df67-d88d3019d801
所在位置 行:1 字符: 1
+ add-appxpackage "G:\Useful Apps\WSA\MicrosoftCorporationII.WindowsSub ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (G:\Useful Apps\...bbwe.Msixbundle:String) , Exception
+ FullyQualifiedErrorId : DeploymentError,Microsoft.Windows.Appx.PackageManager.Commands.AddAppxPackageCommand
那就先从安装包下手。
首先,分析一下WSA的安装包,后缀为.msixbundle,这说明这是多个安装包打包起来的一个“大安装包”。通过把后缀名改为.rar的方式可以用压缩软件看到bundle内的其他独立安装包。
打开后眼花缭乱,63个安装包(什么鬼),通过文件名判断大部分都是语言文件,真正有用的是两个(取决于你用的系统架构),他们是:WsaPackage_1.7.32815.0_x64_Release-Nightly.msix 和 WsaPackage_1.7.32815.0_ARM64_Release-Nightly.msix。我的cpu架构是X64,所以我需要的包是WsaPackage_1.7.32815.0_x64_Release-Nightly.msi
(其实用包的大小能看出来,很明显头两个更大)
在找到需要的包后,再一次把后缀改为rar,提取里面的文件。
分析一下这个包里的文件,
可以看到,WSA的包里大体与正常的UWP应用安装包大体无异。推测可能是由某个文件限制了指定版本的安装
通过万能的度娘,我们发现UWP应用安装包通常是用appmanifest来设定安装条件的
用Vs2019打开了这个文件,我在dependecies中找到了安装的条件。
<dependencies>
<targetdevicefamily name="Windows.Desktop" minversion="10.0.22000.120" maxversiontested="10.0.22000.120">
<packagedependency name="Microsoft.VCLibs.140.00.UWPDesktop" minversion="14.0.30035.0" publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US">
<packagedependency name="Microsoft.UI.Xaml.2.6" minversion="2.62108.18004.0" publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US">
<packagedependency name="Microsoft.VCLibs.140.00" minversion="14.0.30035.0" publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US">
</packagedependency></packagedependency></packagedependency></targetdevicefamily></dependencies>
可以看到,安装的条件有四个,一个是指定的版本号,另三个是依赖包包名。从本质来说,其实就是靠dependecies节点下的这个Windows.Desktop的这个最小版本10.0.22000.120来限制安装的,直接改成Win10的版本号即可。
以Windows 10 1909版的版本号为例(也就是我在用的版本),将最小版本设为10.0.18362.592。
(我猜测代码结构是 Windows大版本.Windows大版本修订Revision.内部os版本1.内部os版本2)
现在尝试用代码安装,但是安装时继续报错。这就很尴尬了,应该是manifest还有限制,只能继续折腾
(2022/2/19更新)
善用某度,找到了解决方案。事实证明我的思路是对的,manifest还有条件要改。
首先,在Capabilities这要删掉两行代码:
<Capabilities>
<Capability Name="internetClient" />
<rescap:Capability Name="runFullTrust" />
<rescap:Capability Name="unvirtualizedResources" />
<rescap:Capability Name="packagedServices" />
<rescap:Capability Name="localSystemServices" />
<rescap:Capability Name="packageManagement" />
<rescap:Capability Name="packageQuery" />
删除:<rescap:Capability Name="customInstallActions" />
删除:<uap4:CustomCapability Name="Microsoft.classicAppInstaller_8wekyb3d8bbwe" />
</Capabilities>
然后在Extentions上删掉这几行代码:
<Extensions>
删除<desktop6:Extension Category="windows.customInstall">
删除<desktop6:CustomInstall Folder="CustomInstall" desktop8:RunAsUser="true">
删除<desktop6:RepairActions>
删除<desktop6:RepairAction File="WsaSetup.exe" Name="Repair" Arguments="repair" />
删除</desktop6:RepairActions>
删除<desktop6:UninstallActions>
删除<desktop6:UninstallAction File="WsaSetup.exe" Name="Uninstall" Arguments="uninstall" />
删除</desktop6:UninstallActions>
删除</desktop6:CustomInstall>
删除</desktop6:Extension>
...
</Extensions>
然后尝试执行上面的安装代码,进行安装。按照某度的说法,顺利的话就能看到子系统了。但是!我可能没有那么幸运。
安装再一次报错。
add-appxpackage : 部署失败,原因是 HRESULT: 0x80080204, Appx 包的清单无效。
错误 0xC00CE014: 应用部件清单(manifest)验证错误: 应用部件清单必须符合架构: 第 51 行,第 14 列。注意: 已指定的 MaxVersio
nTested 架构无法识别带有命名空间“http://schemas.microsoft.com/appx/manifest/com/windows10/3”的 XML 字段。请确保指定正
确的 MaxVersionTested。原因: 根据父元素 '{http://schemas.microsoft.com/appx/manifest/com/windows10/2}ComServer' 的内容
模型,元素 '{http://schemas.microsoft.com/appx/manifest/com/windows10/3}ServiceServer' 为意外元素。
要求: {http://schemas.microsoft.com/appx/manifest/com/windows10}ExeServer, {http://schemas.microsoft.com/appx/manifest/
com/windows10}Surrogat
错误 0xC00CE014: 应用部件清单(manifest)验证错误: 应用部件清单必须符合架构: 第 51 行,第 14 列。注意: 已指定的 MaxVersio
nTested 架构无法识别带有命名空间“http://schemas.microsoft.com/appx/manifest/com/windows10/3”的 XML 字段。请确保指定正
确的 MaxVersionTested。原因: 根据父元素 '{http://schemas.microsoft.com/appx/manifest/com/windows10/2}ComServer' 的内容
模型,元素 '{http://schemas.microsoft.com/appx/manifest/com/windows10/3}ServiceServer' 为意外元素。
要求: {http://schemas.microsoft.com/appx/manifest/com/windows10}ExeServer, {http://schemas.microsoft.com/appx/manifest/
com/windows10}SurrogateServer, {http://schemas.microsoft.com/appx/manifest/com/windows10}TreatAsClass, {http://schemas.
microsoft.com/appx/manifest/com/windows10}ProgId。
注意: 有关其他信息,请在事件日志中查找 ae51a81b-2350-0002-e2bc-52ae5023d801,或使用命令行 Get-AppPackageLog -ActivityID ae51a81b-2350-0002-e2bc-52ae5023d801
所在位置 行:1 字符: 1
+ add-appxpackage-register "G:\Useful Apps\WSA\WSAX64\AppxManifest.xm ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (G:\Useful Apps\...ppxManifest.xml:String) , Exception
+ FullyQualifiedErrorId : DeploymentError,Microsoft.Windows.Appx.PackageManager.Commands.AddAppxPackageCommand查看事件日志:
603 已使用主参数 AppxManifest.xml 以及选项 DevelopmentModeOption 和 0 开始对程序包执
行部署 Register 操作。要获取有关诊断应用部署问题的帮助,请参阅 http://go.microso
ft.com/fwlink/?LinkId=235160。
135 错误 0xC00CE014: 应用部件清单(manifest)验证错误: 应用部件清单必须符合架构: 第 51
行,第 14 列。注意: 已指定的 MaxVersionTested 架构无法识别带有命名空间“http://
schemas.microsoft.com/appx/manifest/com/windows10/3”的 XML 字段。请确保指定正确
的 MaxVersionTested。原因: 根据父元素 '{http://schemas.microsoft.com/appx/manife
st/com/windows10/2}ComServer' 的内容模型,元素 '{http://schemas.microsoft.com/ap
px/manifest/com/windows10/3}ServiceServer' 为意外元素。
要求: {http://schemas.microsoft.com/appx/manifest/com/windows10}ExeServer, {http
://schemas.microsoft.com/appx/manifest/com/windows10}SurrogateServer, {http://sc
hemas.microsoft.com/appx/manifest/com/windows10}TreatAsClass, {http://schemas.mi
crosoft.com/appx/manifest/com/windows10}ProgId。
402 错误 0x80080204: 从位置 AppxManifest.xml 中读取部件清单(manifest)失败,错误为: A
ppx 包的清单无效。
。
404 程序包的 AppX 部署操作失败,错误为 0x80080204。此失败的具体错误文本是: 错误 0x
C00CE014: 应用部件清单(manifest)验证错误: 应用部件清单必须符合架构: 第 51 行,第
14 列。注意: 已指定的 MaxVersionTested 架构无法识别带有命名空间“http://schemas
.microsoft.com/appx/manifest/com/windows10/3”的 XML 字段。请确保指定正确的 MaxV
ersionTested。原因: 根据父元素 '{http://schemas.microsoft.com/appx/manifest/com/
windows10/2}ComServer' 的内容模型,元素 '{http://schemas.microsoft.com/appx/mani
fest/com/windows10/3}ServiceServer' 为意外元素。
要求: {http://schemas.microsoft.com/appx/manifest/com/windows10}ExeServer, {http
://schemas.microsoft.com/appx/manifest/com/windows10}SurrogateServer, {http://sc
hemas.microsoft.com/appx/manifest/com/windows10}TreatAsClass, {http://schemas.mi
crosoft.com/appx/manifest/com/windows10}ProgId。
报错日志说了跟没说一样,现在看网上安装成功的人说20H2安装成功概率会高,但是我不想更新20H2啊啊啊啊
只能继续研究解决办法了。
顺便问一下坛友们有思路吗?
楼主还是重新编辑一下帖子吧 龍在天涯 发表于 2022-2-6 17:57
楼主还是重新编辑一下帖子吧
我点的保存草稿然后就发出来了。。。 学习了,感觉蛮复杂 PencilNavigator 发表于 2022-2-6 18:13
我点的保存草稿然后就发出来了。。。
可以继续编辑的。
楼主继续研究!!!! 谢谢分享 本帖最后由 PencilNavigator 于 2022-2-19 21:46 编辑
原帖更新了,找到了某度上一些人成功安装的经验,但是我这还是不能安装,只能继续研究了。。。 如果有成功的经验,可以参考一下。大部分情况下,有成功经验的人会把操作方法分享级大家的!
页:
[1]
2