如何从命令行打开 Windows 商店应用程序?

PHP*_*Pst 7 windows

请问如何从命令行运行从 Windows 应用商店 ( https://github.com/microsoft/terminal )安装的应用程序?

Fur*_*rty 8

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

执行此操作的其他方法在此处说明

  • 请注意,后缀并不总是“!App”,并且文件夹的名称不一定很容易与实际应用程序匹配(例如,对于 Gears Tactics,它是“Microsoft.GanderBaseGame_8wekyb3d8bbwe!GanderShippingInternal”)。答案底部的链接有一种更简单的方法来获取正确的命令行。我采取了快捷方式并使用 *SysExporter* 从属性对话框中获取执行命令(https://www.nirsoft.net/utils /sysexp.html)。 (3认同)

Not*_*1ds 5

下面是使用 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.