我试图跟踪Microsoft文档,但我不明白为什么我的appinstaller失败了:
<?xml version="1.0" encoding="utf-8"?>
<AppInstaller xmlns="http://schemas.microsoft.com/appx/appinstaller/2018" Uri="https://xxxxxx.blob.core.windows.net/installer/Package.appinstaller" Version="1.0.0.0">
<MainPackage Name="MyApp" Version="12.21.289.0" Publisher="CN=xxxxxx" ProcessorArchitecture="x64" Uri="https://xxxxxx.blob.core.windows.net/installer/MyApp.msix"/>
<UpdateSettings> <OnLaunch HoursBetweenUpdateChecks="1" /> <AutomaticBackgroundTask/> </UpdateSettings>
</AppInstaller>
如果我运行MSIX文件,它将按应有的方式安装。我一直在尝试这样做:https://learn.microsoft.com/en-us/windows/msix/desktop/azure-dev-ops,我得到了这个错误:
如果删除UpdateSettings属性,只会导致另一个错误:“Appinstaller消息:Appinstaller操作失败,错误代码为0x80D05011。详细信息:未知错误(0x80d05011)”
请帮帮忙。
发布于 2021-05-04 18:58:36
这是windows交付优化服务中的一个bug,我们目前所能做的只是一个解决办法。
开发人员:这个问题是由版本号的变化引起的,比如从1.0.9.9到1.0.10.0,如果让构建过程自动增加这些数字,就会很快发生。解决方法是将转到下一个版本up (1.1.0.0)。处理此问题的最佳方法可能是始终以基本版本0.100.100或0.1000.1000开始,否则将严重限制可用的总版本号。
用户:任务管理器、->服务、-> DoSvc ->、重启--这比重新启动系统要快一些,也更方便。
注意:服务的坏状态是由这个版本编号错误引起的,但是一旦它发生,重新启动是纠正它的唯一方法。
发布于 2021-08-29 21:07:45
经过三天的无望调试和几次试图找出这个问题的根源之后,我们终于找到了答案。查看下面的解决方法.
Range
传递优化服务错误地缓存它检索的任何资源的大小(可以是追加安装程序文件或MSIX包),并在随后的请求中包含 HTTP报头,其字节范围值可能过期。
例如,如果您的appinstaller长725字节,那么Windows DO Service第一次发出格式良好的HTTP请求并下载整个XML。请求示例:
GET https://foobar.com/baz.appinstaller HTTP/1.1
Connection: Keep-Alive
Accept: */*
Range: bytes=0-724
User-Agent: Microsoft-Delivery-Optimization/10.0
MS-CV: ......
Content-Length: 0
Host: foobar.com
但是,如果您已经在您的web服务器上更新了appinstaller文件,并且它的大小是增加的(例如,高达4096字节),那么DoSvc 仍然只请求最初的725字节,并且显然会得到它无法解析的损坏的XML。即使ETag
被正确地处理并且已更改为appinstaller资源!
如果您的appinstaller文件大小减少了,则很可能会得到416范围不可满足。
下面是来自Amazon的真实响应(我们在这里托管我们的appinstaller和MSIX包):
HTTP/1.1 206 Partial Content
x-amz-id-2: ...
x-amz-request-id: ...
Date: Tue, 06 Apr 2021 21:45:12 GMT
Last-Modified: Tue, 06 Apr 2021 21:40:24 GMT
ETag: "af2d8bb5c638eca059cdb4dc6c694123"
Accept-Ranges: bytes
Content-Range: bytes 0-724/4096
Content-Type: application/appinstaller
Content-Length: 725
Server: AmazonS3
<?xml version="1.0" encoding="utf-8"?>
<AppInstaller
Uri="https://tvd-packages.tradingview.com/beta/latest/win32/TradingView.appinstaller"
Version="1.0.0.1071"
xmlns="http://schemas.microsoft.com/appx/appinstaller/2017/2">
<MainPackage
Name="TradingView.Desktop"
Version="1.0.0.1071"
Publisher="CN="TradingView, Inc.", O="TradingView, Inc.", STREET=470 Olde Worthington Road Suite 200, L=Westerville, S=Ohio, PostalCode=43082, C=US"
ProcessorArchitecture="x64"
Uri="https://tvd-packages.tradingview.com/beta/1.0.0-beta.1.5/win32/x64/TradingView.msix" />
<UpdateSettings>
<OnLaunch HoursBetweenUpdateChecks="0" />
</UpdateSettings>
<!--
- WHAT TH
你注意到Content-Range: bytes 0-724/4096
和评论被切断了吗??这是由传递优化服务造成的格式错误的HTTP范围请求的结果。
解决方案:您已经猜到了吗?是的,只是不要改变安装程序的大小!例如,我们为它填充了多达4096字节的XML注释,如果我们需要向XML添加更多合理的内容,我们只需从XML注释中删除一些字符,使其再次变为4096字节。我们甚至在gitlab部署管道中进行了简单的大小测试,以确保appinstaller的大小不会意外更改。
您可以检查我们自2021年4月以来使用的当前生产应用程序:https://tvd-packages.tradingview.com/stable/latest/win32/TradingView.appinstaller
P.S.如果对同一个URL执行请求,就会出现问题。如果DoSvc更改,则HTTP逻辑将其作为不同的资源处理。这就是为什么appinstaller文件更有可能成为这个问题的受害者。
发布于 2020-10-20 00:34:08
如果这对任何人都有帮助的话,我找到了以下线索:https://techcommunity.microsoft.com/t5/msix-deployment/windows-10-2004-msix-not-updating-please-check-whether-the/m-p/1466701
基本上答案是重新启动你的机器。我做了,而且它似乎已经修好了
正如@ the -pademelon还提到的,重新启动传递优化服务也是有效的。
https://stackoverflow.com/questions/64381453
复制相似问题