Включите исполняемые файлы в финальный пакет UWP - PullRequest
0 голосов
/ 11 января 2019

Я пишу приложение UWP Store, которое вызывает другие исполняемые файлы, такие как OpenSSL и FFmpeg.exe. Я успешно включил их в приложение WPF. Однако с помощью UWP как встроить их в окончательный пакет для загрузки в Магазин Windows?

Я думаю об этих решениях:

  1. Добавьте нужный файл (например, FFmpeg.exe) в проект. Затем выберите свойство «Build Action» для «Content» и скопируйте в «Output Directory». Но эта опция кажется невозможной для всей папки с подпапками и файлами в них (например, портативная папка OpenSSL).

  2. Напишите метод для копирования файла (FFmpeg.exe) в локальную папку приложения UWP при запуске программы. ...

Есть ли лучший способ сделать это? Спасибо.

1 Ответ

0 голосов
/ 11 января 2019

Вы должны использовать команды build powershell.

1 шаг, настройка

Перейдите в свою папку решений и создайте новую папку с именем «MyExeFolder». внутри этой папки поместите нужный .exe, например, FFmpeg.exe

2 Шаг, Автоматизация

Щелкните правой кнопкой мыши на вашей записи Uwp Project и перейдите к Свойства , а затем перейдите к События сборки

в командах событий Post Build введите это:

xcopy / y / s "$ (SolutionDir) MyExeFolder \ FFmpeg.exe" "$ (SolutionDir) \ UWP \ bin \ x86 \ $ (ConfigurationName) \ AppX \"

Если вы также собираете для x64, то вы также добавляете ту же команду с x64 вместо этого и для x86, если вы собираете проект win32 вместе и группируете его по тому же решению, вы должны определить соответствующую папку bin.

3 Выполнение шага

Чтобы запустить приложения win32 из uwp, вам потребуется использовать функцию, называемую runFullTrust , сложно перечислить все модификации XML, которые вам нужно будет сделать, в манифесте приложения, чтобы включить такую ​​функцию. но как только вы это выясните, вам нужно будет добавить это к узлу Extension:

<desktop:Extension Category="windows.fullTrustProcess" 
Executable="FFmpeg.exe" />

здесь больше информации о том, как настроить манифест

Как только вы все это сделаете, вы можете просто запустить свою часть win32 из любого места в вашем приложении uwp:

try  {             
                await Windows.ApplicationModel.FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync();
            }
            catch (Exception Ex)
            {
              //failed to Launch
            }

Что касается дальнейшего чтения, я предлагаю вам посетить блог stefan wicks , так как у него огромное количество примеров и материалов о том, как преодолеть ограничения uwp с помощью собственной расширяемости .Net.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...