Как лучше всего использовать UWP FullTrustProcessLauncher для запуска отдельной игры Unity

Я работаю на клиента, которому нужно приложение UWP Portal и игра-клон Pac-Man, которую можно запустить из приложения Portal. Я настроил функцию FullTrustProcessLauncher в приложении UWP для управления запуском исполняемого файла игры. Мне также пришлось добавить элемент после сборки, чтобы скопировать исполняемый файл и папку сопутствующей информации в папку AppX сборки. FullTrustProcessLauncher запускает исполняемый файл нормально, но я продолжаю получать ошибку «Папка данных не найдена».

Итак, мои вопросы таковы: 1. Почему он постоянно говорит, что папка отсутствует, хотя она должна быть рядом с ней? 2. Есть ли лучший способ сделать это?

Откровенно говоря, это мое первое приложение, которое я создал, и моя первая публикация на StackOverflow.

  • У меня есть параметры сборки проекта Unity, установленные на .NET 2.0, но это не решает проблему.
  • Я добавил папку Pac-Man в свою Visual Studio, но мне пришлось выполнить XCOPY, чтобы она была доступна

Я хочу, чтобы приложение Pac-Man запускалось так же, как при переходе к папке и запуске исполняемого файла.


person Nate Sweeney    schedule 29.04.2019    source источник
comment
Используете ли вы проект упаковки Windows в Visual Studio для упаковки обоих ваших проектов? Если нет, то это будет первым шагом к решению некоторых проблем, на которые вы ссылаетесь в своем посте.   -  person Stefan Wick MSFT    schedule 29.04.2019
comment
Привет, Стефан, спасибо за ответ на мой пост! Из того, что я вижу о проекте упаковки Windows, мое приложение Pac-Man должно быть решением VS для добавления в проект, которого в настоящее время нет. Или я могу добавить в пакет решения, отличные от VS?   -  person Nate Sweeney    schedule 30.04.2019
comment
Если это предварительно созданный EXE-файл, вы можете просто добавить его (и любые необходимые вспомогательные файлы) в качестве содержимого в свой проект UWP. Убедитесь, что вы установили их как Копировать для вывода. В качестве альтернативы вы можете добавить фиктивный проект для ваших файлов PacMan, который просто копирует эти файлы в выходные данные сборки - таким образом вы можете использовать проект упаковки.   -  person Stefan Wick MSFT    schedule 02.05.2019
comment
Я попробую вариант А, прежде чем переходить к фиктивному проекту. В варианте A мне не нужно было бы выполнять XCOPY в выходных данных сборки, верно? Он должен просто перемещать папки для меня таким образом, тогда я могу просто получить доступ к файлу как обычно   -  person Nate Sweeney    schedule 02.05.2019
comment
Верный. Просто убедитесь, что свойство «Копировать в выходной каталог» правильно установлено в VS для всех файлов, которые требуются в пакете.   -  person Stefan Wick MSFT    schedule 02.05.2019
comment
Опубликован вариант A как ответ сейчас. Пожалуйста, отметьте как ответ, если это решило вашу проблему. Если нет, дайте мне знать, в чем еще проблема.   -  person Stefan Wick MSFT    schedule 04.05.2019


Ответы (1)


Включите свой EXE-файл (и все необходимые вспомогательные файлы) в качестве «Содержимого» в свой проект UWP. Убедитесь, что вы установили их как «Копировать для вывода». Затем вы объявляете расширение FullTrustProcess в appxmanifest, чтобы оно указывало на включенный EXE-файл, и используете API FullTrustProcessLauncher для его запуска из UWP.

Дополнительная информация здесь:
https://docs.microsoft.com/en-us/uwp/api/windows.applicationmodel.fulltrustprocesslauncher https://stefanwick.com/2018/04/06/uwp-with-desktop-extension-part-1/

person Stefan Wick MSFT    schedule 03.05.2019
comment
Извините, я ждал, пока клиент ответит мне, сработало это или нет. Это всегда работало на моей машине, лол. Все заработало, большое спасибо! Жаль, что я не спросил несколько месяцев назад :) - person Nate Sweeney; 22.05.2019
comment
что не совсем понятно, так это как использовать отдельный .exe файл, который не является проектом Visual Studio. Ваше объяснение кажется прямым, но я не уверен, нужно ли мне использовать проект пакета или нет (потому что вы ссылаетесь на учебник в блоге по этому вопросу, используя проект пакета). Было бы неплохо уточнить это. - person CularBytes; 24.10.2019