
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
.appinstaller
arquivo 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
.appinstaller
arquivo apresenta o erroError in parsing the app package.
- não é particularmente útil - O aplicativo é assinado com um certificado instalado em
Trusted Publishers
- O
web.config
arquivo 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].appinstaller
instala 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-Since
ouIf-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
.appinstaller
no IIS? - Existe algum problema conhecido no sideload de aplicativos UWP por meio da
.appinstaller
interface 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 paratrue
)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.