背景
我可以通过运行以下命令来运行此 UWP 应用程序:
test://argument=123?other=true
这将运行链接到协议的 UWP 应用程序test://
,并且该应用程序将自动获取该协议argument=123?other=true
、对其进行解析并执行这些参数指定的操作。
期望的结果
但是,我想不使用任何协议,而是直接通过可执行文件运行该应用程序。
我尝试过的方法
到目前为止,我已经想到了以下几点:
"C:\Program Files\WindowsApps\PackageId\Windows10Universal.exe" -ServerName:ActivatableClassId
这不会传递参数,因此它不会自动执行我想要的操作。我尝试了以下方法,但也没有用:
"C:\Program Files\WindowsApps\PackageId\Windows10Universal.exe" -ServerName:ActivatableClassId "argument=123?other=true"
我也尝试使用进程监视器和进程资源管理器进行调查,看看 Windows 在后台做了什么,但似乎无法找到答案。
答案1
文章中讨论了使用参数调用 UWP/Modern 应用程序
如何从命令行打开 Windows Modern UWP 应用程序。
您需要有关该应用程序的三项信息:
包裹名字
这是应用程序所在文件夹的名称(不是完整路径),例如:C:\Program Files\WindowsApps\microsoft.windowscommunicationsapps_16005.12827.20560.0_x64__8wekyb3d8bbwe
发布者 ID
例如,这是路径末尾的奇怪字符串8wekyb3d8bbwe
应用程序 ID
在上面的文件夹中,打开文件AppxManifest.xml
并在 XML 元素中找到可执行文件名称,如下所示:<Application Id="microsoft.windowslive.calendar" Executable="HxCalendarAppImm.exe" EntryPoint="Executable">
要调用应用程序,你需要编写字符串
shell:AppsFolder\<Package Name>_<Publisher ID>!<App ID>
要将参数传递给可执行文件,请使用 Windowsstart
命令。
例如,要从命令行启动 Windows 终端并打开特定的配置文件,请使用:
start "" shell:AppsFolder\Microsoft.WindowsTerminal_8wekyb3d8bbwe!App new-tab -p "GitBash"
请注意,如果没有该命令,上述命令行将无法工作start
。