Установка приложения UWP через пользовательский интерфейс не удалась, работает в PowerShell

Установка приложения 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пользовательский интерфейс?
  • Есть ли способ настроить 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

Будем надеяться, что процесс исключения позволит определить, кто из них является виновником.

Связанный контент