Невозможно открыть AppServiceConnection в решении UWP для упаковки приложений Windows - PullRequest
1 голос
/ 07 марта 2019

У меня есть приложение UWP, которое состоит из 2 основных частей: проекта UWP с пользовательским интерфейсом и проекта WinForms, который используется для обеспечения функциональности панели задач.Я использую проект Windows Application Packaging, чтобы объединить их, как в этом примере: https://docs.microsoft.com/en-us/windows/uwp/porting/desktop-to-uwp-extend#show-a-modern-xaml-ui.

Когда приложение запускается, приложение WinForm запускается первым и находится в системном трее.При выборе одного из пунктов меню приложение UWP запускается и переходит на соответствующую страницу, используя подход протокола из примера (т. Е. Windows.System.Launcher.LaunchUriAsync("myapp://action?key=value");).Это работает нормально.

Проблема, с которой я столкнулся, заключается в том, что я хотел бы иметь возможность общаться из приложения UWP с приложением WinForms (может быть, в некоторых случаях и другим способом).Я пытаюсь добиться этого с помощью расширения службы приложений.Я следовал примеру здесь: https://stefanwick.com/2017/06/24/uwp-app-with-systray-extension/.Однако я не могу заставить это работать.Я не совсем уверен, в каком проекте должны быть объявления fulltrust и службы приложений.

Если я помещаю их в свой проект UWP, как в примере, я всегда получаю ошибку AppServiceUnavailable (имя определенно правильное - японятия не имею, к какой версии относится документация для этого статуса, но я не вижу, как это может быть неверно).Это происходит независимо от того, открыто ли приложение UWP в данный момент или нет.Раньше у меня этот подход работал, но только когда не было задействовано ни одного проекта упаковки приложений Windows, и сначала запустилось приложение UWP, которое мне не нужно.

Если я помещаю объявления в проект упаковки приложений Windows (настройкаисполняемый файл службы приложения и точка входа в класс приложения проекта UWP), я получаю ошибку AppUnavailable, которая, как мне кажется, означает, что она выходит из строя на более раннем этапе.

Кто-нибудь знает, как мне это работает?Если по какой-либо причине это невозможно, может кто-нибудь указать мне правильное направление для достижения этой идеи (приложение UWP, которое не запускает никаких окон при запуске и находится в системном трее с двунаправленным обменом сообщениями между любыми необходимыми компонентами).

РЕДАКТИРОВАТЬ: Целевая версия: 17763, минимальная версия: 16299, версия Windows: 17763

EDIT2: я создал небольшое тестовое решение, которое, надеюсь, показывает, что я пытаюсь сделать лучше: https://github.com/csuzw/AppServiceTest.

1 Ответ

1 голос
/ 11 марта 2019

Хорошо. Я проверил ваше демо. После консультации со Стефаном Виком проблема может быть решена.

Вам потребуется внести следующие изменения в файл Package.appxmanifest проекта WAP. В противном случае VS объявит AppService в приложении Winforms, которое не будет работать.

<Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="$targetentrypoint$">
  <uap:VisualElements DisplayName="AppServiceTest" Description="AppServiceTest" BackgroundColor="transparent" Square150x150Logo="Images\Square150x150Logo.png" Square44x44Logo="Images\Square44x44Logo.png">
    <uap:DefaultTile Wide310x150Logo="Images\Wide310x150Logo.png">
    </uap:DefaultTile>
  </uap:VisualElements>
</Application>
<Application Id="App2" Executable="AppServiceTest.UI.exe" EntryPoint="AppServiceTest.UI.App">
  <uap:VisualElements AppListEntry="none" DisplayName="WapProjTemplate1" Description="WapProjTemplate1" BackgroundColor="transparent" Square150x150Logo="Images\Square150x150Logo.png" Square44x44Logo="Images\Square44x44Logo.png">
    <uap:DefaultTile Wide310x150Logo="Images\Wide310x150Logo.png" />
  </uap:VisualElements>
  <Extensions>
    <uap:Extension Category="windows.appService">
      <uap:AppService Name="MyAppServiceName"  />
    </uap:Extension>
    <desktop:Extension Category="windows.fullTrustProcess" Executable="AppServiceTest.Systray\AppServiceTest.Systray.exe"/>
  </Extensions>
</Application>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...