我正在尝试分发 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,我发现通过 UI 安装会导致服务器出现 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
鉴于上述情况:
.appinstaller
我是否缺少在 IIS 下托管 UWP 的任何明显的服务器配置?- 通过 UI 侧载 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
希望通过排除法可以找出哪一个是罪魁祸首。