Таинственная ошибка запуска makepri для настольного моста Windows Universal App

Я пытался обернуть приложение WPF внутри универсального приложения Windows, используя Desktop Bridge.

чтобы сделать значок панели задач приложения отключенным, с прозрачным фоном, я следовал инструкциям, которые можно найти в различных блогах и статьях/форумах MSDN, таких как этот.

первые команды, которые я выполняю, это следующие два:

"C:Program Files (x86)Windows Kitsbin.0.15063.0x64makepri.exe" createconfig /o /cf priconfig.xml /dq en-US
"C:Program Files (x86)Windows Kitsbin.0.15063.0x64makepri.exe" new /o /pr . /cf priconfig.xml

эти команды были выполнены в выходной папке приложения WPF, где я также поместил И appxmanifest.xml-файл, а также файлы и папки, на которые он ссылается (например, исполняемый файл и изображения активов в различных масштабах и разрешениях).

С этого момента я получил две разные странные ошибки:

первый, если AppManifest.XML-файл содержит следующий раздел:

<Extensions>
<desktop2:Extension Category="windows.firewallRules">
<desktop2:FirewallRules Executable="appMyWpfApp.exe">
<desktop2:Rule Direction="in" IPProtocol="TCP" Profile="all" />
<desktop2:Rule Direction="in" IPProtocol="UDP" Profile="all" />
</desktop2:FirewallRules>
</desktop2:Extension>
</Extensions>

затем вторая команда makepri приведет к следующему сообщению об ошибке:

onecoreuapbasemrttoolsindexertoolsrctoolparametermanager.cpp (: 908): ошибка PRI175: 0x80080204 -

onecoreuapbasemrttoolsindexertoolsrctoolparametermanager.cpp (: 318): ошибка PRI175: 0x80080204 -

Microsoft (R) MakePRI Tool

Copyright (C) 2013 Microsoft. Все права защищены.

ошибка PRI191: 0x80080204-appx манифест не найден или недействителен. Пожалуйста, убедитесь, что хорошо сформированный файл манифеста присутствует. Или Укажите имя индекса с параметром / in.

тогда, если я удалю этот раздел FirewallRules, все, кажется, работает нормально - по крайней мере, на моей машине.

второй, он не всегда работает так, как ожидалось:

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

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

1 ответов


первая проблема была решена путем удаления IgnorableNamespaces собственность от пакета xml-элемент (на корневом уровне AppxManifest.XML.)

--

Что касается второй проблемы, после обращения в службу поддержки Microsoft об этой проблеме, это, похоже, ошибка в инструменте makepri, работающем на старых системах:

по-видимому, при запуске на Windows Server 2012 R2 (и, возможно, другой версии), makepri команда инструмента должна поставляться с другим "необязательным" параметром, который указывает имя приложения:

"C:\Program Files (x86)\Windows Kits\bin.0.15063.0\x64\makepri" new /o /pr . /cf priconfig.xml /mn AppxManifest.xml /of resources.pri /in "MyAppName"

важная часть -/в "MyAppName" аргумент в конце строки, хотя другие аргументы также могут быть решающими. Кроме того,"MyAppName" должен быть таким же, как определено в и appxmanifest.в XML файл, в этой части:

<Applications>
  <Application Id="MyAppName" ...>
...

еще одним шагом, который мог бы иметь отношение к решению этой проблемы, было убедиться, что файл сопоставления файлов, используемый позже для команды makeappx, имеет правильное определение для ResourceId как поясняется в в этой статье.