请问如何从命令行运行从 Windows 应用商店 ( https://github.com/microsoft/terminal )安装的应用程序?
start shell:AppsFolder\Microsoft.WindowsTerminal_8wekyb3d8bbwe!App
Run Code Online (Sandbox Code Playgroud)
默认情况下,Windows 终端启用了别名,因此您还可以使用:
"%userprofile%\AppData\Local\Microsoft\WindowsApps\wt.exe"
Run Code Online (Sandbox Code Playgroud)
非 Microsoft 的示例应用程序:
start shell:AppsFolder\XINGAG.XING_xpfg3f7e9an52!App
Run Code Online (Sandbox Code Playgroud)
在哪里
可以找到字符串作为文件夹XINGAG.XING_xpfg3f7e9an52%userprofile%\AppData\Local\Packages
执行此操作的其他方法在此处说明
下面是使用 PowerShell 确定启动 Store/UWP 应用程序的方法的“纯命令行”方法。对我来说,这比当前接受的答案中链接的文章中讨论的方法简单得多。恕我直言,它还具有更具确定性的优点。
正如主要答案中所讨论的,启动 Store/UWP 应用程序有两种可能的方法:
应用程序执行别名。请注意,添加到用户WindowsApps文件夹的应用程序默认位于路径上,不需要完全限定名称。例如,仅wt适用于 Windows 终端。您可以通过管理应用程序执行别名设置查看该列表。
但也可能存在不在路径上的应用程序执行别名。例如,大多数游戏(例如《我的世界》)都会有一个应用程序执行别名,如果您知道其完全限定路径,则可以启动该别名。
对于那些没有应用程序执行别名的应用程序,您可以回退到该shell:AppsFolder方法,使用start或 来explorer.exe启动。
这两种方法的主要挑战是确定每个应用程序使用的实际命令。这就是下面的方法的用武之地。查找启动命令的起点始终是其AppxPackage本身。但有时找到包可能比其他包更困难:
“简单”的情况 - 只需过滤 的Get-AppxPackage返回结果以匹配Name. 以 Windows 终端为例:
Get-AppxPackage |? { $_.Name -like "*Terminal*" } | tee-object -Variable packageMatches
Run Code Online (Sandbox Code Playgroud)
然而,有些应用程序的名称很奇怪。例如,Minecraft Dungeons 包名称是Microsoft.Lovika,我认为这是其开发期间的项目名称。除非您知道要查找的内容,否则您可能需要根据清单 DisplayName 执行(较慢的)搜索:
Get-AppxPackage |? {
(Get-AppxPackageManifest -Package $_.PackageFullName).Package.Properties.DisplayName -like "*Mine*"
} | tee -variable packageMatches
Run Code Online (Sandbox Code Playgroud)
获得$packageMatches结果后,您可以找到启动它的方式:
使用应用程序执行别名的完全限定路径(如果可用)。要确定这一点:
$packageMatches |% {
$executableName = ((Get-AppxPackageManifest -Package $_.PackageFullName).Package.Applications.Application.Executable)
if ($executableName) {
"Start-Process ""$($_.InstallLocation)\$executableName"""
} else {
"No executable found"
}
}
Run Code Online (Sandbox Code Playgroud)
注意:Start-Process此返回的格式仅用于从 PowerShell 启动,并带有带空格的路径的简化引用规则。根据其他启动器的需要进行调整。
explorer.exe shell:appsFolder\<PackageFamilyName>!<Id>当然,如果应用程序没有应用程序执行别名,您可以回退到使用该方法。要获取正确的名称和 ID:
$packageMatches |% {
"explorer.exe shell:appsFolder\$($_.PackageFamilyName)!$((Get-AppxPackageManifest -Package $_.PackageFullName).Package.Applications.Application.Id)"
}
Run Code Online (Sandbox Code Playgroud)
例如,通过 Edge 作为应用程序安装的任何 PWA(渐进式 Web 应用程序)或网站都不会具有可执行文件,但可通过explorer.exe.
| 归档时间: |
|
| 查看次数: |
3760 次 |
| 最近记录: |