Есть ли лучший способ для запуска приложений UWP из консольного приложения - PullRequest
0 голосов
/ 27 мая 2019

Я пытался запустить приложение UWP из консольного приложения c #. Он попытался с кодом ниже, который использует APPID

Process.Start (@ "C: \ Program Files (x86) \ Windows Kits \ 10 \ Kit сертификации приложений \ microsoft.windows.softwarelogo.appxlauncher.exe", "1a75-6f75 - 5ed3 - 8944 - 6b7df2bee095") ;

Есть ли лучший способ запустить приложение UWP программно.

Ответы [ 2 ]

1 голос
/ 28 мая 2019

Для запуска любого приложения UWP в системе вы можете использовать следующий API:
Метод AppListEntry.LaunchAsync

Чтобы получить AppListEntry для нужного приложения, используйте API-интерфейсы PackageManager: PackageManager.FindPackageForUser (String, String) Метод
Package.GetAppListEntriesAsync Метод

В качестве альтернативы вы можете использовать следующий API Win32 вместо API AppListEntry:
IApplicationActivationManager :: ActivateApplication метод

0 голосов
/ 29 мая 2019

Я пытался запустить приложение UWP через протокол. Ссылка ниже поможет создать протокол

Автоматизация запуска приложений Windows 10 UWP

Теперь вы можете запустить ваше приложение, используя

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

Класс процесса доступен в 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();
        }

    }
...