A instalação do aplicativo UWP falha por meio da IU, funciona no PowerShell

A instalação do aplicativo UWP falha por meio da IU, funciona no PowerShell

Estou tentando distribuir um aplicativo UWP e encontrei um problema um pouco estranho.

  • O aplicativo é criado a partir do Visual Studio usando o recurso de atualização automática, resultando em um .appinstallerarquivo e pacotes MSIX associados, etc.
  • Esses artefatos são carregados em um serviço de aplicativo do Azure para distribuição
  • Baixar e executar o .appinstallerarquivo apresenta o erro Error in parsing the app package.- não é particularmente útil
  • O aplicativo é assinado com um certificado instalado emTrusted Publishers
  • O web.configarquivo no servidor está configurado para mapear os tipos MIME corretamente:
<?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>
  • Executar a instalação do PowerShell (não elevado) Add-AppxPackage -Appinstaller https://[test].azurewebsites.net/[appname].appinstallerinstala corretamente o aplicativo, que funciona bem.

  • Usando o Fiddler, observei que a instalação por meio da IU resulta em um erro 412 do servidor:

Solicitar:

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

Resposta:

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.
  • O cliente PowerShell não parece enviar os cabeçalhos If-Unmodified-Sinceou 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

Dado o acima:

  • Estou faltando alguma configuração óbvia de servidor para hospedar um UWP .appinstallerno IIS?
  • Existe algum problema conhecido no sideload de aplicativos UWP por meio da .appinstallerinterface do usuário?
  • Existe uma maneira de configurar o IIS para ignorar as pré-condições, como um teste para saber se elas estão causando o problema?

EDITAR:

Encontrou um arquivo de log ( 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]

EDITAR 2:

Depois de muita investigação, consegui uma versão funcional com comparativamente poucas alterações:

  • EnableDotNetNativeCompatibleProfile(Eu configurei isso para true)
  • RuntimeIdentifiers(Eu adicionei isso ao arquivo .csproj)
  • Construir a partir do VS2017 em vez do VS2019

Esperamos que um processo de eliminação identifique qual deles é o culpado.

informação relacionada