Сбой установки приложения UWP через пользовательский интерфейс, работает в PowerShell
Я пытаюсь распространять приложение UWP, и у меня возникла странная проблема.
- Приложение построено из Visual Studio с использованием функции автоматического обновления, в результате чего
.appinstaller
файл и связанные с ним пакеты MSIX и т. д. - Эти артефакты загружаются в службу приложений Azure для распространения.
- Загрузка и запуск
.appinstaller
файл выдает ошибкуError in parsing the app package.
- не особенно полезно - Приложение подписано сертификатом, установленным в
Trusted Publishers
web.config
Файл на сервере настроен для корректного отображения типов MIME:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.webServer>
<staticContent>
<mimeMap fileExtension=".appx" mimeType="application/appx" />
<mimeMap fileExtension=".msix" mimeType="application/msix" />
<mimeMap fileExtension=".appxbundle" mimeType="application/appxbundle" />
<mimeMap fileExtension=".msixbundle" mimeType="application/msixbundle" />
<mimeMap fileExtension=".appinstaller" mimeType="application/appinstaller" />
</staticContent>
</system.webServer>
</configuration>
Запуск установки из PowerShell (без повышенных прав) с помощью
Add-AppxPackage -Appinstaller https://[test].azurewebsites.net/[appname].appinstaller
правильно устанавливает приложение, которое затем работает нормально.Используя Fiddler, я заметил, что установка через пользовательский интерфейс приводит к ошибке 412 с сервера:
Запрос:
GET https://[test].azurewebsites.net/[appname]_1.0.0.0_Test/[appname]_1.0.0.0_x64.msixbundle HTTP/1.1
Connection: Keep-Alive
Accept-Encoding: gzip, deflate
If-Match: W/"086c9a4cfd51:0"
Range: bytes=10878976-11010047
If-Unmodified-Since: Mon, 20 May 2019 20:42:56 GMT
Host:[test].azurewebsites.net
Отклик:
HTTP/1.1 412 Precondition Failed
Content-Length: 86
Content-Type: text/html
Last-Modified: Mon, 20 May 2019 20:42:56 GMT
Accept-Ranges: bytes
ETag: W/"086c9a4cfd51:0"
Server: Microsoft-IIS/10.0
X-Powered-By: ASP.NET
Date: Mon, 20 May 2019 20:21:12 GMT
The request was not completed due to preconditions that are set in the request header.
- Клиент PowerShell не отправляет
If-Unmodified-Since
или жеIf-Match
заголовки.
GET https://[test].azurewebsites.net/[appname]_1.0.0.0_Test/[appname]_1.0.0.0_x64.msixbundle HTTP/1.1
Connection: Keep-Alive
Range: bytes=11079260-11145819
User-Agent: App Virt Client/1.0
Host: [test].azurewebsites.net
Учитывая вышеизложенное:
- Мне не хватает какой-либо очевидной конфигурации сервера для размещения UWP
.appinstaller
под IIS? - Есть ли известная проблема с загрузкой приложений UWP через
.appinstaller
UI? - Есть ли способ настроить IIS для игнорирования предварительных условий, чтобы проверить, являются ли они причиной проблемы?
РЕДАКТИРОВАТЬ:
Нашел файл журнала (AILog.txt
):
[Tue May 21 15:40:17 2019]{10188} Manifest Info -> Package is Not Headless
[Tue May 21 15:40:17 2019]{10188} Manifest Info -> Package is Not a Modification Package
[Tue May 21 15:40:17 2019]{10188} ERROR: AppsInfo -> Error: [0x80004005]
РЕДАКТИРОВАТЬ 2:
После долгих исследований я получил рабочую сборку с относительно небольшими изменениями:
EnableDotNetNativeCompatibleProfile
(Я установил это наtrue
)RuntimeIdentifiers
(Я добавил их в файл.csproj)- Сборка из VS2017 вместо VS2019
Надеемся, что процесс ликвидации определит, кто из них является виновником.