虽然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的Name(8wekyb3d8bbwe
是PublisherId,也就是微软了),我们以管理员身份打开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窗口的运行方式,这里设置为最小化Minimized
。NoExit
参数指定运行命令后不退出,退出了Steam就不会显示游戏中状态了,游戏过后我们需要手动关闭窗口。Command
参数就是指定要执行的命令了。比如帝国时代决定版就是-WindowStyle "Minimized" -NoExit -Command "Start-Process ms-xbl-multiplayer:"
。设置好之后确定。
然后关闭属性窗口,就可以运行游戏了。
最后
没图标总觉得不好看,可以自己去找图标,然后修改了就行。
打赏微信支付宝
没有评论