header image

在AMD CPU的Windows上使用官方安卓模拟器虚拟化加速

这篇文章讲述的是如何在使用官方的安卓模拟器时,在AMD CPU上打开虚拟化加速。

如果使用的是Intel CPU,虽然也可以使用本文的方法,但还是推荐直接安装使用Android SDK里用管理器就可以安装的的Intel HAXM。

安装Android SDK

首先你需要Android SDK,在SDK Manager中安装SDK Tools里的Android EmulatorAndroid Emulator Hypervisor Driver for AMD Processors (Installer)

启用Windows Hypervisor Platform

根据安卓官方文档的说法,你需要在Windows功能中安装Windows Hypervisor Platform。但是我在我的电脑上并没有找到这个选项,这就很尴尬了。

不过随着我找了一圈,还真找到了方法(https://blog.csdn.net/oldfish__/article/details/88641864),十分感谢。

把以下内容保存为.bat文件,然后右键、以管理员身份运行即可。

::%cd%代表的是执行文件的当前目录,强调bat是在哪里启动的     ->盘符展开后是可改变的
::%~dp0代表的是bat文件所在的文件目录,强调bat的文件位置     ->盘符展开后是不可改变的
pushd "%~dp0"
::通过通配符获取文件名到hypervisorplatform.txt
dir /b %SystemRoot%\servicing\Packages\*HypervisorPlatform*.mum >hypervisorplatform.txt
::循环+拼接安装命令
::/quiet表示静默安装,/norestart表示无需重启(这些参数可酌情使用)
for /f %%i in ('findstr /i . hypervisorplatform.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
::删除txt
del hypervisorplatform.txt
::启用
Dism /online /enable-feature /featurename:HypervisorPlatform /LimitAccess /ALL

pause

根据提示重启即可。

AVD Manager

然后我们用安卓SDK自带的AVD Manager添加虚拟机运行即可。

在Ubuntu上使用AMD Radeon RX 5700 XT显卡

由于Ubuntu 19.10锁定的内核版本太低,导致AMD最新的RDNA架构显卡无法在Ubuntu下使用。根据Ubuntu的更新规律,很可能要到下一大版本(20.04)才有可能使用新内核,所以只好自己动手了。

以下方法适用于Ubuntu 19.10及之前的Ubuntu版本(18.04 LTS可以安装AMD官方提供的驱动,所以可以不参考本文)。适用于AMD Navi 10显卡(Radeon RX 5700、Radeon RX 5700 XT及Radeon RX 5700 XT 50周年版),如果将来可以找到其他适用的固件,也可用于Navi 14等显卡。

废话不多说,下面就是具体步骤。

安装新Mesa驱动

理论上,我们需要自己编译。但幸运的是,已经有人编译好放到Launchpad上了,感谢!

用如下命令添加PPA源即可:

sudo add-apt-repository ppa:oibaf/graphics-drivers

根据提示完成添加,然后按照常规方法更新软件包即可。

安装新内核

Ubuntu的内核源码在https://kernel.ubuntu.com上,但我们也不用自己编译,已经有人提供了工具。

和上面一样,添加一个PPA源:

sudo add-apt-repository ppa:cappelikan/ppa

按照提示添加后,再安装我们需要的工具:

sudo apt-get install mainline

安装好后从软件菜单里找到Ubuntu Mainline Kernel Installer运行。加载可能有点慢,加载好之后左边就是现在可以使用的内核,Status可以看到是已安装Installed或者正在运行Running的内核。右边的按钮从上到下依次是:刷新Refresh、安装Install、删除Remove、彻底删除Purge、查看变更日志Changes、设置Settings。

我们在左边选中需要安装的内核版本(对于RDNA显卡需要5.3以上内核),然后点安装Install即可。

等待下载安装结束,就可以关闭软件了。

下载新固件

我们还需要固件才能让显卡正常工作。目前只有Navi 10的,对于新的Navi 14(或以后其他核心)还暂时没有。

固件在https://people.freedesktop.org/~agd5f/radeon_ucode/navi10/,访问之后将所有的bin文件下载回来即可,当然,也可以用一条命令搞定:

wget -nd -np -P navi10 -r 'https://people.freedesktop.org/~agd5f/radeon_ucode/navi10/' --accept-regex='.*\.bin$'

-P navi10表示下载到navi10这个目录下,-nd表示不创建子目录,-np表示不下载父目录,-r表示递归下载(自动识别页面内的链接并下载),--accept-regex='.*\.bin$'表示只递归下载bin文件。

下载好之后,我们将所有bin文件复制到/lib/firmware/amdgpu/目录下即可。

cd navi10
sudo cp navi10* /lib/firmware/amdgpu

最后一步

以上就完成了所有工作,重启即可。

因为非正式版的内核没有经过安全启动签名,所以会有可能无法启动(提示Invalid Signature),需要到UEFI设置中关闭安全启动才行。

重启之后,显卡就能正常工作了,如果有任何问题,欢迎留言探讨。

附:如何卸载

如果以后出新的Ubuntu了,我们要在更新之前卸载上面安装的文件。

对于固件,直接删除即可。

对于内核,只要用Ubuntu Mainline Kernel Installer删除最新的内核,重启之后就会自动用稳定版内核启动了(默认是使用最新的内核启动,只要稳定版内核是已安装的最新版内核即可)。

对于驱动,我们除了删除PPA源之外,还需要还原原版的软件包,这时候我们需要另一个工具ppa-purge

sudo apt-get install ppa-purge

然后卸载即可。

sudo ppa-purge ppa:oibaf/graphics-drivers

按照提示操作即可。

百度网盘下载之bypy

百度网盘现在各种限制,就是逼着用户付款,而且还要付最贵那档才给不限速。吃相这么难看,实在很难让人想给他钱。所以现在各种破解横行。不过我这里要介绍的bypy并不是一种破解方案,所以速度实际上也只能达到300KB/s(但总比10KB/s好),存储目录也不能随意设置,好处就是可以挂在NAS上。

简介

bypy的GitHub仓库:

bypy其实是一个调用百度网盘API的第三方应用,也就是将百度盘作为应用数据存储的地方(比如输入法存储词库这种的),只不过bypy是用这种方法来实现了百度网盘的命令行客户端。

由于是应用数据,所以存储的目录被固定为了我的应用数据/bypy,不过好在可以在百度网盘中将数据复制移动出入这个目录,所以问题不大。

项目作者已经停止了开发,进入了维护期,也许有一天百度网盘关闭或修改API就用不了了。不管怎么样,还是感谢作者。

安装

bypy是一个Python项目,所以只要有Python环境就可以使用。考虑到依赖的问题,我们使用pip来安装。

如果你还没有pythonpip环境,在Ubuntu下可以通过如下命令安装(Windows中可以用WSL的Ubuntu):

sudo apt-get install python python-pip

其他系统也是安装这两个软件包(包名可能有所不同)就可以了。注意,这里的python包要2.X版本的,如果默认的是3.X版,需要安装2.X的软件包(比如python2.7python2.7-pip)。

安装好后就可以直接用pip安装bypy了。

pip install bypy

但是由于pip的源在境外,有可能速度不理想,我们可以用清华大学的镜像:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple bypy

pip会自己解决依赖关系,上面我们的安装没有使用sudo,所以仅是针对当前用户的。

使用

初次使用时需要设置百度网盘API key。我们随便用一条命令即可开始设置:

python -m bypy info

命令太长?我们可以加一个别名:

alias bypy='python -m bypy'

执行上面的命令之后,我们就可以用bypy来代替那一长串命令了。为了不每次进终端都要执行上面的命令,我们可以在当前用户的home目录下新建一个.bash_aliases文件(~/.bash_aliases),然后把上面这条命令添加进去,这样每次进终端都可以直接使用bypy命令了。

执行之后会给你一个网址,访问之后就可以得到API key(需要用百度网盘账号登录),然后复制或输入到命令行中即可。如下所示:

user@WIN10-PC:~$ bypy info
Please visit:
https://openapi.baidu.com/oauth/2.0/authorize?scope=basic+netdisk&redirect_uri=oob&response_type=code&client_id=q8WE4EpCsau1oS0MplgMKNBn
And authorize this app
Paste the Authorization Code here within 10 minutes.
Press [Enter] when you are done

输入Key之后回车确认,等一会儿获取授权之后就提示Successfully authorized并且会列出空间使用情况,这就成功了。

bypy命令结构很简单,就是bypy [操作],操作除了上面的info之外,常用的还有listdownloadupload。更多操作以及选项请直接运行bypy不加任何操作来查看。下面只介绍常用的。

列出文件

bypy list就是列出网盘目录(即我的应用数据/bypy)下的文件,每个文件或目录一行,每行有4~5列数据。第1列是类型,D为目录,F为文件;第2列为文件名或目录名;第3列为占用的空间大小(字节);第4列为修改时间;第5列为文件的Hash值。

例如:

user@HOST:~$ bypy list
/apps/bypy ($t $f $s $m $d):
D foo 0 2019-08-06, 23:08:15
F cn_windows_10_consumer_editions_version_1903_updated_aug_2019_x64_dvd_4c9cbf0b.iso 5306406912 2019-09-12, 19:31:11 7722dbe0ccebebe215fb8f0646450079
F win10-64bit-radeon-software-adrenalin-2019-edition-19.9.1-sep10.exe 435216696 2019-09-12, 21:08:51 cba1369bde139fffea4a3f5fef4c60c5

我们还可以在后面加上子目录名来显示子目录的文件列表,如:

bypy list foo

list可以简写为ls,和Linux常用命令一样。

下载文件

下载文件就直接bypy download <远程文件或目录路径> [本地目标路径]即可(尖括号<>里的内容表示必需,方括号[]表示可选)。随后就会调用自带的下载器下载。如果本地目标路径是目录,那么文件或目录就会下载到其中;如果文件或目录不存在,则会新建;如果文件存在,则会检查是否和远程文件匹配,如果不一样则会覆盖目标文件,如果一样则不做操作。

但是这样下载并不能达到最大速度,因此我们需要第三方下载器。bypy只支持aria2,所以我们安装aria2就行了。

sudo apt-get install aria2

aria2是一个非常好用的命令行下载工具,以后有机会再详细介绍。

然后我们需要用参数--downloader aria2来让bypy调用aria2下载,还可以用--downloader-arguments来设置aria2的参数,在此不细说了,请自行研究。

用aria2下载文件:

bypy --downloader aria2 download cn_windows_10_consumer_editions_version_1903_updated_aug_2019_x64_dvd_4c9cbf0b.iso

下载目录:

bypy download foo

下载目录时要注意两点:1、bypy会递归下载目录,也就是说会把目录中的内容一起下载下来;2、bypy会把目录里的内容放在当前目录。比如上面的目录foo中如果有个文件bar,那么bar会放到当前目录,而不是在当前目录新建一个foo然后把bar放进去。如果要下载到foo里,我们需要指定目标路径。

bypy download foo foo

上传文件

上传文件和下载正好反过来。bypy upload <本地文件或目录路径> [远程目标路径],操作也大同小异,因此就不细说了,唯一要说明的是,上传文件会检查文件校验,如果文件是百度已经收录过的,那么就可以做到秒传。

文件操作

bypy可以对远程文件直接进行复制、移动、删除操作,复制的命令是copy(简写cp,移动命令是move(简写mv)或rename(简写ren,重命名实际就是移动操作,两者等价)。命令你个后面加上目标即可。比如:

bypy copy foo foo2
bypy move foo2 foo3
bypy ren foo3 foo/foo3

删除就是deleteremove(简写为rm)后面跟着要删除目标就行了。

bypy rm foo/foo3

其他

bypy还有很多其他操作,比如添加、取消、列出离线下载,比较文件,同步上传、下载目录等等,感兴趣的请自行研究,这里也不细说了。

还有

bypy一段时间闲置之后会丢失token,很不方便。如果是在NAS上用的话,我们可以定时刷新一下。只要在crontab中添加一条定期执行info操作的命令,周期设定为每星期一执行。

在需要修改crontab的用户下执行该命令:

crontab -e

然后添加如下一行:

3 4 * * 1 python -m bypy info

crontab中要用完整的命令,不能用别名。执行时间为每星期一的凌晨3点4分。保存就行了。

最后

感谢bypy的作者,虽然百度云现在已经退出Linux版了,但主要面向的还是图形介面,命令行下能有bypy这样的工具很不错。

如何激活锁区的Steam游戏 [2019-09-10更新]

2019-09-10更新

由于Steam修改规则,只要钱包区域不是俄罗斯就不能激活俄区key,反之,如果钱包区域是俄罗斯则不用云激活也能激活俄区key。因此本文方法几乎失效(有部分游戏允许中国区激活,可以直接购买激活)。

强烈不建议将现有账号钱包区域更改为俄罗斯,因为这样涉及跨低价区,有被收回游戏甚至封号的危险!可以注册一个俄区下小号用于俄区游戏的激活(需要全程俄区IP操作,具体方法请自行研究)。

[之前讲过跨高价区购买Steam游戏的方法。这次来讲讲安全地跨低价俄罗斯区的购买方法吧。

Yuplay等网站上经常会有价格便宜的俄区游戏出售,但是经常是锁激活(只能在指定的地区IP下激活)和锁运行(只能在指定的地区IP下运行)的。那么如何判断是否锁区,又该如何激活和运行呢?

购买

注册

因为这篇文章重点不是如何在Yuplay购买游戏,所以购买过程就简单讲讲了。

首先点页面右上角的Войти(登录)进入登陆页面,然后在右边的登录框上面有一个Зарегистрироваться(注册),点击后进入注册页面。有两个输入框,填写两遍Email,下面两个选择框,第一个是同意条款,第二个是订阅优惠信息,填好后点下面的Зарегистрироваться(注册)按钮即可。然后密码会通过邮件发给你,去注册邮箱里检查邮件就行了。

改密码

其实随机生成的密码比较安全了,如果不习惯,可以修改密码。首先还是进入Yuplay,点右上角的Войти(登录)进入登陆页面,然后登录框里填入EmailПароль(密码),点Войти(登录)按钮登陆即可。登陆后就来到了个人页面,左边有一排链接,其中Личный кабинет(个人账户)下的Редактировать профиль(编辑档案)点进去就可以改密码了。

点进去后有四个输入框,第一个Email不用解释了,如果要修改Email就修改之后点下面的第一个Изменить(修改)按钮即可。第二个输入框Ваш действующий пароль(当前密码)填入当前的密码,第三个Новый пароль(新密码)和第四个Повторите пароль(重复密码)填入新密码,然后点下面的第二个Изменить(修改)按钮即可修改密码。

查看游戏是否锁区

注意,此方法仅适用于已发售游戏,无法用于预购游戏。

进入Yuplay,找到要购买的游戏。比如全面战争:三国。如果是页面的左边一栏下面,可以见到一个Steam SUB_ID,设个SUB_ID之前的文章讲过了。这次就不详细说了。总之,我们打开SteamDB的Sub详情页https://steamdb.info/sub/SUB_ID/info,其中SUB_ID替换为Yuplay上看到的SUB_ID(全站三国就是https://steamdb.info/sub/340375/info/ ),打开页面后可以看到红色的警告框This package is only purchasable in specified countries,说明这是锁激活的,下面的国家和地区里并没有中国,所以我们只能通过特殊手段激活了。如果是锁运行的,还能见到另一个警告框This package can only be run in specified countries,比如这个猛汉王:https://steamdb.info/sub/289476/info/ (不过这个锁激活和锁运行都是中国区,所以不需要特殊方法)。

购买

购买就简单了,登录之后,在游戏页面点右上方价格旁边的Купить(购买)按钮即可加入购物车。之后会进入购物车页面,我们可以把多个游戏加入购物车一起付款。点击页面右上角的Корзина(购物车)链接也可以进入购物车页面。

购物车页面中有已加入购物车的游戏的Название(名称)、Цена(价格),右边是Удалить(删除)选择框,如果要把游戏从购物车中删除,勾选这个选择框后点下面的Изменить(修改)按钮即可。

再下面是支付方式,熟悉的支付宝、微信、银联不用多解释了。

再下面Вы покупаете(你购买的是)是礼物选项,可以选择Себе(为自己)还是В подарок(作为礼物)。

最下面Всего к оплате就是总价了,右边的绿色按钮Перейти к оплате(转到支付)点击就对跳转到支付网站了。右边的输入框Введите код для получения скидки(输入代码获得折扣)可以输入打折码,输入后点Активировать(激活)使用。

查看激活Key

购买成功后,就可以领Key了,首先还是回到Yuplay,页面右上角的第一个链接Мои покупки(我的购买)点进去,就能看到已购买的游戏列表。列表最右边的Статус(状态)一栏,如果是Успешен(成功)就可以提取Key了。Успешен下面会有一个подробнее(更多)链接,点进去后就能看到Key了,有的Key是直接可以复制的,有的会提供图片,只要注意Steam Key一般是AAAAA-BBBBB-CCCCC这种5-5-5的格式就行。

激活锁区Key

如果Key锁区,我们可以用当地VPN激活。不过其实有更方便的选项——云激活,感谢Makazeu的无私奉献。

进入云激活网站后,选择需要激活的地区,点进去即可(需要点那个圆形的箭头图标)。然后用Steam账号登录(AuthCode即手机令牌,如果没有启用请先下载手机应用启用令牌。或者使用邮箱令牌的话,这里先不填,然后点登录按钮之后会弹出提示让你填写)。

但如果这里我们直接登录进去,会发现上面的IP地理位置会显示CN(或你登录的其他地区),这个时候是无法激活俄区Key的,所以我们要先完全退出账户。

完全退出账户

首先,关闭所有Steam客户端(关闭即可,不必登出)。

然后,在手机Steam应用里退出登录。退出登录后令牌仍然可以使用,不用担心。

这时,尝试使用云激活登录,如果IP地理位置还是CN(或你登录的其他地区),那么在浏览器里打开Steam商店,登录之后,点右上角你的用户名,然后点账户明细,然后往下找到账户安全,点击管理Steam令牌。进入管理Steam令牌页面后,点下面的取消对其他所有设备的授权

这个时候就完全退出了。如果没有就再来一次,然后注销网页登录(点右上角你的用户名,点注销)。

登录俄区

然后再尝试使用云激活登录,这时应该就可以看到IP地理位置是RU了。在Steam Key下面的输入框填入Key,然后点激活KEY即可,页面下方会显示激活状态。

如果好用,就给网站作者打赏吧!

运行锁区游戏

如果游戏不光是是锁激活,还锁运行怎么办呢?

一个办法是等3个月,3个月后就不锁运行了。但这肯定不是我们要的方法。

还有一个方法还是利用云激活,感谢Makazeu的无私奉献。

我们还是用上面的方法登录云激活,确保IP地理位置是RU之后,不要关闭网页,马上打开Steam客户端。然后我们通过在浏览器地址栏,或者Windows运行窗口(Win+R),输入steam://nav/console之后回车,就可以打开Steam控制台。然后我们在下面的命令框里输入user_info之后回车,就可以显示用户信息了,其中IPCountry如果是RU,那么恭喜你,你已经成功跨区了,这个时候就可以安装运行锁运行的游戏了。

之后只要不关闭电脑和Steam客户端,就可以一直保持IPCountryRU一直爽了。如果要回到国区(比如要接收礼物等等),可以先按上面的完全退出账户的方法退出,然后再打开Steam客户端即可。

最后

不说了我要去爽了。

如何将UWP应用添加到Steam

虽然UWP现在半死不活的,但是自从有了Win32转制之后,还是有不少应用登录Microsoft Store的,再加上现在微软大力推游戏,因此将这些游戏添加进Steam就成了一个问题。

目标

说白了,将UWP应用添加到Steam就是利用PowerShell来执行一个命令

Start-Process <ProtocolName>

下面就介绍如何来找到这个<ProtocolName>

如果你的游戏安装在C盘下

其实这个方法可以用于安装在任何盘下的,只不过其他盘下我们有更简单粗暴的方法,但还是先看完这一部分,因为有的内容后面还要用到。

首先我们打开一个文件管理器窗口,在地址栏里输入%AppData%(或者打开运行窗口(Win+R)输入可以),回车,就来到了当前用户的AppData\Roaming目录下,我们先向上一层,来到AppData目录,再进入Local\Packages目录。

然后我们用文件管理器右上角的搜索框直接搜索游戏名称(注意!这一步可能要运行过游戏之后才能搜索到)比如我要找帝国时代决定版,就搜索Age(of Empires)。结果可以看到一个Age of Empires DE右键属性可以看到位置中,其在Packages下的Microsoft.MSDallas_8wekyb3d8bbwe目录里,这就是它的PackageFamilyName了。

其中,Microsoft.MSDallas就是这个Package的Name8wekyb3d8bbwePublisherId,也就是微软了),我们以管理员身份打开PowerShell(在开始按钮上点右键,然后选择Windows PowerShell (管理员)即可),然后输入命令回车执行:

2019年11月19日更新

由于帝国时代决定版包名变更,而且发现了更简单的方法,所以上面的方法作废。

首先,运行游戏。

然后,打开任务管理器(Ctrl+Alt+Delete然后点任务管理器,或者在任务栏上右键单击然后点任务管理器)。如果是简略模式,点击左下角的详细信息进入详细模式。

然后,我们可以在第一个进程选项卡中看到打开的游戏Age of Empires Definitice Edition (3),后面的(3)表示游戏有3个进程,点左边的展开箭头,可以看到三个进程,AoEDE就是主进程。我们在上面点右键,选转到详细信息,就会跳转到详细信息选项卡,并选中AoEDE.exe这个进程。但是我们点击右键、打开文件位置或者属性都是没有用的。这是我们要列表最上方的列名称上点右键、选择列,找到命令行并勾选、确定。然后我们就可以在命令行一列看到完整的路径了("C:\Program Files\WindowsApps\Microsoft.Darwin_100.1.28529.0_x64__8wekyb3d8bbwe\AoEDE.exe"),其中C:\Program Files\WindowsApps\Microsoft.Darwin__100.1.28529.0_x64_8wekyb3d8bbwe\就是我们要找的主目录。

如果不想手动输入那么长的目录,我们可以注意到,Microsoft.Darwin就是应用包的名称,我们可以通过命令来获得安装位置:

Get-AppxPackage <Name>

<Name>对于帝国时代决定版就是Microsoft.Darwin,回车运行就会得到完整的信息,包括InstallLocation。这就是游戏的安装目录了。我们执行下面的命令进入安装目录(Powershell窗口中选中内容后点击右键是复制,输入时点击右键是粘贴):

cd '<InstallLocation>'

注意<InstallLocation>两端要加上引号'",否则可能会有空格会导致命令失败。

然后我们可以用ls命令看到当前目录下的文件,这里我们需要的是appxmanifest.xml文件,我们执行下面的命令:

cat .\appxmanifest.xml

这个命令把appxmanifest.xml的内容显示到PowerShell中。我们可以找到其中的<Applications>标签,我们要的内容就在这里了,如帝国时代决定版的就是:

  <Applications>
    <Application Id="App" Executable="AoEDE.exe" EntryPoint="Windows.FullTrustApplication">
      <uap:VisualElements DisplayName="Age of Empires Definitive Edition" Square150x150Logo="SquareLogo_150x150.png" Square44x44Logo="SmallLogo_44x44.png" Description="Age of Empires: Definitive Edition" ForegroundText="light" BackgroundColor="transparent">
        <uap:SplashScreen Image="Splashscreen_1920x1080.png" />
      </uap:VisualElements>
      <Extensions>
        <uap:Extension Category="windows.protocol">
          <uap:Protocol Name="ms-xbl-68a451d4" />
        </uap:Extension>
        <uap:Extension Category="windows.protocol">
          <uap:Protocol Name="ms-xbl-multiplayer" />
        </uap:Extension>
      </Extensions>
    </Application>
  </Applications>

<Extensions>标签下,我们可以看到<uap:Protocol Name="ms-xbl-68a451d4" />ms-xbl-68a451d4就是我们要找的ProtocolName了。

另类方法

上面我们得到Package的Name之后(或者Get-AppxPackage <Name>得到更详细的PackageFullName),可以到注册表中的HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppModel\PackageRepository\Packages\<PackageFullName>\windows.protocol下看到我们要找的ProtocolName

或者在HKEY_CURRENT_USER\SOFTWARE\Classes\Extensions\ContractId\Windows.Protocol\<PackageFullName>\ActivatableClassId\<SomeString>\CustomProperties,选中之后右边的Name数据就是ProtocolName。其中<PackageFullName>就是PackageFullName<SomeString>是一串字符串,不用在意含义。

如果你的游戏安装在其他盘上

上面的方法依然有效,但我们有更简单粗暴的方法:

非常简单,其他盘上会有一个WindowsApps的目录,游戏就装在这里面了。我们还是以管理员身份打开PowerShell(在开始按钮上点右键,然后选择Windows PowerShell (管理员)即可),然后输入命令回车执行:

cd 'D:\WindowsApps'

上面的命令是进入目录,其中D是对应的盘符,根据实际情况修改。然后我们用下面的命令来查看子目录:

ls

如果你只安装了一个游戏,那么就很好办了,直接进入目录查看其中的appxmanifest.xml就可以了(方法见上面)。

如果你安装了多个游戏,一个一个打开appxmanifest.xml看吧,文件中的<DisplayName>标签中可以看到这个Package的名称。如果实在太多,那还是按照上面的在C盘中方法来吧。

添加到Steam

首先打开Steam,然后点主界面左下角的添加游戏,然后选择添加非Stema游戏,这时会打开一个添加游戏对话框,随便选一个程序即可。

然后找到我们刚才添加的程序,右键属性,上面的名称改成游戏名称,目标修改成"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"起始位置留空。

然后点设置启动选项,填写-WindowStyle "Minimized" -NoExit -Command "Start-Process <ProtocolName>:",其中<ProtocolName>替换成我们之前找到的内容,注意后面有一个英文冒号:WindowStyle参数指定PowerShell窗口的运行方式,这里设置为最小化MinimizedNoExit参数指定运行命令后不退出,退出了Steam就不会显示游戏中状态了,游戏过后我们需要手动关闭窗口。Command参数就是指定要执行的命令了。比如帝国时代决定版就是-WindowStyle "Minimized" -NoExit -Command "Start-Process ms-xbl-multiplayer:"。设置好之后确定

然后关闭属性窗口,就可以运行游戏了。

最后

没图标总觉得不好看,可以自己去找图标,然后修改了就行。