Uwp 使用powershell启动Metro风格的应用程序
我正在尝试为windows 10编写一个powershell脚本,它将自动启动Metro风格的应用程序。Uwp 使用powershell启动Metro风格的应用程序,uwp,windows-10,powershell-3.0,appx,start-process,Uwp,Windows 10,Powershell 3.0,Appx,Start Process,我正在尝试为windows 10编写一个powershell脚本,它将自动启动Metro风格的应用程序。 Start-Processcmdlet似乎应该可以工作,但除非提供.exe 例如,以下输入起作用: Start-Process 'C:\Program Files\Internet Explorer\iexplore.exe' 不幸的是,Metro风格的应用程序没有可执行文件。启动它们需要使用什么文件? 例如,如果我想启动Windows应用商店,我会怎么做 谢谢如果appx注册了U
Start-Process
cmdlet似乎应该可以工作,但除非提供.exe
例如,以下输入起作用:
Start-Process 'C:\Program Files\Internet Explorer\iexplore.exe'
不幸的是,Metro风格的应用程序没有可执行文件。启动它们需要使用什么文件?
例如,如果我想启动Windows应用商店,我会怎么做
谢谢如果appx注册了URI协议方案,您可以使用该方案启动它。例如,要在Win8/Win10中启动windows应用商店,请使用以下代码:
Start-Process ms-windows-store:
我感到惊讶的是,用于启动metro风格应用程序的文档太少了 商店应用程序只能由shell启动。试试这个:
explorer.exe shell:AppsFolder\Microsoft.WindowsAlarms_8wekyb3d8bbwe!App
我不知道有什么真正通用的方法可以做到这一点,但你可以通过一些中间检查来找到答案 注意:我讨厌使用PowerShell,所以请原谅从CMD调用PS的奇怪之处 第一步:找出你有哪些应用
powershell Get AppXPackage
将生成所有这些文件的列表。假设您特别希望启动桌面应用程序转换器,以便在利用自动化的同时处理一些百年补丁。因此,我将使用findstr
来过滤返回的内容,查询appx列表中可能匹配的内容
第二步:弄清楚你是否已经拥有了你想要的应用
powershell获取AppXPackage | findstr/i桌面
虽然这给了我很多结果,但我可以清楚地看到返回的匹配集如下所示:
Name : Microsoft.DesktopAppConverter
PackageFullName : Microsoft.DesktopAppConverter_2.1.1.0_x64__8wekyb3d8bbwe
InstallLocation : C:\Program Files\WindowsApps\Microsoft.DesktopAppConverter_2.1.1.0_x64__8wekyb3d8bbwe
PackageFamilyName : Microsoft.DesktopAppConverter_8wekyb3d8bbwe
如果我没有得到像这样的东西,自然下一步是得到该死的东西:)所以下一步,这可能会变得棘手,你的里程可能会有所不同:
步骤3:找到应用程序存在的位置,您可以在其中实际调用它:
我为什么要这样做?因为如果我尝试从AppXPackage查询返回的路径运行它,我将得到“访问被拒绝”。
然后,您应该能够获得该结果路径,并能够从该路径运行该路径。您可以通过在注册表中导航到此处,找到用于启动进程的命令:Computer\HKEY\u CLASSES\u ROOT\Extensions\constract\Windows.Protocol\PackageId 然后展开ActivatableClassId,然后展开应用程序,然后在CustomProperties文件夹中查看Name的值 启动进程必须使用PowerShell运行,因为CMD中无法识别
我用它来启动Windows Mail应用程序。如果下载Windows SDK,其中有一个可执行文件,名为:
microsoft.windows.softwarelogo.appxlauncher.exe
可用于启动UWP应用程序
格式为:
microsoft.windows.softwarelogo.appxlauncher.exe!应用程序
通过查看kayleeFrye_OnDeck的答案,您可以获得应用程序的packageFamilyName。据称Metro风格的“应用商店”应用程序没有传统的可执行文件,因此我开始挖掘一些,它们确实有。从旧的skool管理cmd.exe尝试:
dir "%ProgramW6432%\WindowsApps"
dir "%ProgramW6432%\WindowsApps\Microsoft.WindowsCalculator_10.1903.21.0_x64__8wekyb3d8bbwe" Directory of C:\Program Files\WindowsApps\Microsoft.WindowsCalculator_10.1903.21.0_x64__8wekyb3d8bbwe
04/30/2019 05:58 PM <DIR> .
04/30/2019 05:58 PM <DIR> ..
04/30/2019 05:58 PM 35,314 AppxBlockMap.xml
04/30/2019 05:58 PM 3,860 AppxManifest.xml
04/30/2019 05:58 PM <DIR> AppxMetadata
04/30/2019 05:58 PM 11,296 AppxSignature.p7x
04/30/2019 05:58 PM <DIR> Assets
04/30/2019 05:58 PM 4,188,672 Calculator.exe
04/30/2019 05:58 PM 95,744 CalculatorApp.winmd
04/30/2019 05:58 PM 286,920 resources.pri
04/30/2019 05:58 PM <DIR> WinMetadata
目录“%ProgramW6432%\WindowsApps”
目录“%ProgramW6432%\WindowsApps\Microsoft.WindowsCalculator\u 10.1903.21.0\u x64\u 8wekyb3d8bbwe”C:\Program Files\WindowsApps\Microsoft.WindowsCalculator\u 10.1903.21.0\u x64\u 8wekyb3d8bbwe目录
2019年4月30日下午5:58。
2019年4月30日下午5:58。。
2019年4月30日05:58 PM 35314 AppxBlockMap.xml
2019年4月30日05:58 PM 3860 AppxManifest.xml
2019年4月30日下午5:58 AppxMetadata
2019年4月30日05:58 PM 11296 AppxSignature.p7x
2019年4月30日下午5:58
2019年4月30日05:58 PM 4188672 Calculator.exe
2019年4月30日05:58 PM 95744 CalculatorApp.winmd
2019年4月30日05:58 PM 286920 resources.pri
2019年4月30日下午5:58
帮助我找到Ubuntu的exe,
%ProgramW6432%\WindowsApps\CanonicalGroupLimited.Ubuntu18.04onWindows\u 1804.2019.522.0\u x64\u 79rhkp1fndgsc\ubuntu1804.exe“
任何因为WindowsTerminal而出现在这里的人,我为我的个人资料编写了这个函数,这样我就可以不用从键盘上移动双手来提升:
function term {
$pkgName = (Get-AppxPackage -Name Microsoft.WindowsTerminal).PackageFamilyName
$Proc = @{
FilePath = 'explorer.exe'
ArgumentList = "shell:AppsFolder\$pkgName!App"
Verb = 'RunAs'
}
Start-Process @proc
}
现有答案中有一些有用的信息,但让我试着将这些信息与自动化步骤结合起来。这个答案假设每个AppX包至少有一个特定于应用程序的URI协议。如果给定的应用程序不是这样,则通过
shell:
URI方案调用它,如中所示(将这样的URI直接传递给Start进程就足够了;例如,
启动进程shell:AppsFolder\Microsoft.windowsalms\u 8wekyb3d8bbwe!App
)。请注意,您需要知道应用程序族名称,其中包括抽象发布者ID(8wekyb3d8bbwe
)
获取AppXPackage
有助于发现-请参阅下文
Windows 8+Metro风格的应用程序(过时术语)a.k.aUWP应用程序/AppX包最好通过URL使用特定于应用程序的协议方案启动:
例如,Calculator Windows 10应用程序定义了两个URL协议名称,Calculator
和ms Calculator
,这两个名称都可以与后面的:
和启动进程一起使用:
#注意后面的“:”
启动流程计算器:#或:启动流程ms计算器:
Microsoft Edge支持协议Microsoft Edge
,因此您可以打开给定的URL,例如http://example.org
在Edge中,如下所示:
启动进程microsoft edge:http://example.org
请注意,在本例中,协议名称后的:
后面跟着一个要传递给目标应用程序的参数
注意事项:从PowerShell Core 7.0.0-preview.5开始,yo
function term {
$pkgName = (Get-AppxPackage -Name Microsoft.WindowsTerminal).PackageFamilyName
$Proc = @{
FilePath = 'explorer.exe'
ArgumentList = "shell:AppsFolder\$pkgName!App"
Verb = 'RunAs'
}
Start-Process @proc
}