Пакет Персональное универсальное приложение Windows windows.fullTrustProcess

Это первый раз, когда я делаю приложение для Windows Universal, и я не смог сделать все в своем приложении UWP (например, невозможно запустить командную строку Process). Так как это личное приложение (я не хочу помещать его в магазин), я использовал windows.fullTrustProcess, чтобы запустить приложение WPF win32, чтобы сделать то, что я не смог сделать в своем основном приложении. Я также был вынужден использовать UWP, потому что мне нужен WebView, способный воспроизводить полноэкранные html5-видео.

Когда я пытаюсь использовать свое приложение в Visual Studio 2017, все работает, но когда я пытаюсь создать пакет, я получаю эту ошибку:

"Ошибка проверки манифеста: строка 28, столбец 64, причина: объявлено имя файла"Backend-Mini-Browser.exe"для элемента"[local-name () = 'Applications'] /[local-name () = 'Application '] /[local-name () =' Extensions '] /[local-name () =' Extension 'и @Category='windows.fullTrustProcess']"не существует в пакете."

Но мой "Backend-Mini-Browser.exe" находится в папке "..\bin\x64\Debug\AppX", и все работает в Visual Studio 2017.

Вот мой appxmanifest:

<?xml version="1.0" encoding="utf-8"?>
<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities" xmlns:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10" IgnorableNamespaces="uap mp desktop rescap">
  <Identity Name="2579cda2-1e8c-48ee-829a-b1d276066cfe" Publisher="CN=Certimeter" Version="1.0.3.0" />
  <mp:PhoneIdentity PhoneProductId="2579cda2-1e8c-48ee-829a-b1d276066cfe" PhonePublisherId="00000000-0000-0000-0000-000000000000" />
  <Properties>
    <DisplayName>Mini-browser</DisplayName>
    <PublisherDisplayName>Certimeter</PublisherDisplayName>
    <Logo>Assets\StoreLogo.png</Logo>
  </Properties>
  <Dependencies>
    <TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.0.0" MaxVersionTested="10.0.0.0" />
  </Dependencies>
  <Resources>
    <Resource Language="x-generate" />
  </Resources>
  <Applications>
    <Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="Mini_browser.App">
    <uap:VisualElements DisplayName="Mini-browser" Square150x150Logo="Assets\Square150x150Logo.png" Square44x44Logo="Assets\Square44x44Logo.png" Description="Mini-browser" BackgroundColor="transparent">
    <uap:DefaultTile Wide310x150Logo="Assets\Wide310x150Logo.png">
    </uap:DefaultTile>
    <uap:SplashScreen Image="Assets\SplashScreen.png" />
  </uap:VisualElements>
  <Extensions>
    <desktop:Extension Category="windows.fullTrustProcess" Executable="Backend-Mini-Browser.exe" />
  </Extensions>
</Application>
 </Applications>
<Capabilities>
  <Capability Name="internetClient" />
  <uap:Capability Name="picturesLibrary" />
  <rescap:Capability Name="runFullTrust" />
</Capabilities>
</Package>

Вот:

<rescap:Capability Name="runFullTrust" />

У меня есть предупреждение: элемент "Capabilities" в пространстве имен " http://schemas.microsoft.com/appx/manifest/foundation/windows10" имеет недопустимый дочерний элемент "Capability" в пространстве имен " http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities". Список возможных: "CapabilityChoice" в пространстве имен " http://schemas.microsoft.com/appx/manifest/foundation/windows10" и "Capability" в пространстве имен " http://schemas.microsoft.com/appx/manifest/uap/windows10"и" Capability "в пространстве имен" http://schemas.microsoft.com/appx/manifest/foundation/windows10"и" Capability "в пространстве имен" http://schemas.microsoft.com/appx/manifest/uap/windows10/4"и" Capability "в пространстве имен" http://schemas.microsoft.com/appx/manifest/uap/windows10/3"и" Capability "в пространстве имен" http://schemas.microsoft.com/appx/manifest/uap/windows10/2"и"CustomCapabilityChoice"в пространстве имен" http://schemas.microsoft.com/appx/manifest/foundation/windows10"и"CustomCapability"в пространстве имен" http://schemas.microsoft.com/appx/manifest/uap/windows10/4"и"DeviceCapability"в пространстве имен" http://schemas.microsoft.com/appx/manifest/foundation/windows10".

(это предупреждение написано мной на английском языке, но я не думаю, что это главная проблема).

1 ответ

Решение

Две вещи, которые вам нужно сделать:

1) поместите EXE с полным доверием в подпапку пакета, а не в корень пакета

2) явно включить файл.EXE в проект UWP

Для #2 выберите "Показать все файлы" в обозревателе решений, затем щелкните правой кнопкой мыши по файлу.EXE и выберите "Включить в проект".

Вот пример, который вы можете сравнить с: https://github.com/Microsoft/DesktopBridgeToUWP-Samples/tree/master/Samples/UWP%20Systray

РЕДАКТИРОВАТЬ Обновление моего ответа, так как поддержка VS стала намного лучше для этого типа сценария, так как я впервые ответил на это. Я подготовил пару постов и примеров в блоге, чтобы уточнить, как это можно сделать с последними обновлениями VS 2017:

https://stefanwick.com/2018/04/06/uwp-with-desktop-extension-part-1/

Другие вопросы по тегам