Таинственная ошибка запуска 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 как поясняется в в этой статье.