有没有更好的方法从控制台应用程序启动 UWP 应用程序

Is there any better way to Launch UWP apps from Console application

我尝试从 C# 控制台应用程序启动 UWP 应用程序。它尝试使用以下使用 APPID

的代码

Process.Start(@"C:\Program Files (x86)\Windows Kits\App Certification Kit\microsoft.windows.softwarelogo.appxlauncher.exe", "1a75- 6f75 - 5ed3 - 8944 - 6b7df2bee095");

有没有更好的方式以编程方式启动 UWP 应用程序。

要在系统上启动任何 UWP 应用,您可以使用以下命令 API:
AppListEntry.LaunchAsync Method

要获取所需应用程序的 AppListEntry,请使用 PackageManager APIs: PackageManager.FindPackageForUser(String, String) Method
Package.GetAppListEntriesAsync Method

或者,您可以使用以下 Win32 API 代替 AppListEntry API:
IApplicationActivationManager::ActivateApplication method

我尝试通过协议启动 UWP 应用程序。以下 link 将帮助您创建协议

Automate launching Windows 10 UWP apps

现在您可以使用

启动您的应用程序

Process.Start("URL:myapplication://");

进程 class 在 System.Diagnostics 中可用。并且还需要在App.xaml.cs文件

中添加如下方法
 protected override void OnActivated(IActivatedEventArgs args)
    {
        Initialize(args);
        if (args.Kind == ActivationKind.Protocol)
        {
            ProtocolActivatedEventArgs eventArgs = args as ProtocolActivatedEventArgs;
            Frame rootFrame = Window.Current.Content as Frame;
            if (rootFrame == null)
            {
                // Create a Frame to act as the navigation context and navigate to the first page
                rootFrame = new Frame();

                rootFrame.NavigationFailed += OnNavigationFailed;


                // Place the frame in the current Window
                Window.Current.Content = rootFrame;
            }

            // Always navigate for a protocol launch
            rootFrame.Navigate(typeof(MainPage), eventArgs.Uri.AbsoluteUri);


            // Ensure the current window is active
            Window.Current.Activate();
        }

    }

当你的控制台应用程序是用一些奇特的语言编写的,例如Java,你可以做类似

的事情

https://www.c-sharpcorner.com/article/launch-uwp-app-via-commandline/ 为了获得更好的结果,请忽略这两个属性:

  <!--  Executable="$targetnametoken$.exe"
    EntryPoint="$targetentrypoint$"-->

然后进行as described here.