MSIX 侧载应用在更新后启动缓慢

Posted

技术标签:

【中文标题】MSIX 侧载应用在更新后启动缓慢【英文标题】:MSIX sideloaded app is slow to start after update 【发布时间】:2021-11-30 20:40:52 【问题描述】:

我正在使用 MSIX 打包来部署 .NET 桌面应用程序。该应用由 Azure Pipelines 构建,安装包部署到文件服务器上的共享文件夹中。

当我运行 .appinstaller 时,对话框会打开并按应有的方式应用更新。但随后对话框关闭,超过 1 分钟没有任何反应。然后应用程序启动。

测试 1 - 普通用户

查看事件日志,首先有这个警告:

应用清单验证警告:已声明命名空间 http://schemas.microsoft.com/developer/appx/2015/build 是 不适用,在清单处理过程中将被忽略。

然后是几条类似的消息

错误 0x5:正在删除文件 \?\C:\Program 文件\WindowsApps\已删除\8b7d5c25-92aa-4962-9e74-93b9685ce2ca-test_2021.1005.1225.1455_x64__002e9dkagpm7g28acfe13-edc2-4d9d-8a69-d5d9687e0573\MyApp\MyApp.exe 失败了。

1 分钟后出现此警告:

警告:还有 129 个文件无法删除 在文件夹 \?\C:\Program Files\WindowsApps\Deleted 下。

似乎该进程尝试并重试删除旧文件超过 1 分钟,然后放弃。

如何允许 MSIX 在不授予管理员权限的情况下删除文件?

测试 2 - 管理员用户

我做了第二次测试,这次是在另一台机器上,并以管理员身份登录。

更新对话框完成更新并在 12 秒后关闭。

然后 5 分钟内什么都没有发生(!)

我相信我单击了“开始”按钮或其他东西,然后应用程序突然启动了。

检查日志未显示有关文件删除失败的任何警告。

只有这个警告:

应用清单验证警告:已声明命名空间 http://schemas.microsoft.com/developer/appx/2015/build 是 不适用,在清单处理过程中将被忽略。

在这 5 分钟内,根本没有任何日志条目。

这些是最后 2 个日志条目,在 5 分钟后生成:

14-10-2021 10:10:12

UpdateUsingAppInstallerOperation 对带有 main 的包的操作 范围 8b7d5c25-92aa-4962-9e74-93b9685ce2ca-test_2021.1013.1518.1578_x64__002e9dkagpm7g 和选项 0 和 0。请参阅 http://go.microsoft.com/fwlink/?LinkId=235160 寻求帮助诊断应用部署问题。

14-10-2021 10:10:13

已为 bundle 成功创建了 bundle 流式阅读器 8b7d5c25-92aa-4962-9e74-93b9685ce2ca-test_2021.1013.1518.1578_neutral_~_002e9dkagpm7g.开始部署捆绑流式阅读器已创建

结论

查看任务管理器和 ProcMon,我可以看到应用程序在更新对话框关闭后立即启动。但是,该进程是一个后台进程,对用户是不可见的。

在谷歌搜索时,我发现了这些描述相同问题的帖子: https://techcommunity.microsoft.com/t5/msix-deployment/app-does-not-launch-immediately-after-installation-but-after-a/m-p/1972161

https://techcommunity.microsoft.com/t5/msix-deployment/winforms-exe-in-msix-package-does-not-startup-after-auto-update/m-p/965978

【问题讨论】:

【参考方案1】:

您不能授予它管理员权限。 MSIX 安装始终按用户运行。

这听起来像是与机器相关的问题。您是否在其他机器上重现了相同的行为(如果您无法访问单独的物理机器,请尝试使用虚拟机)。

【讨论】:

是的,我们网络上的多台机器都有这个问题。 查看事件查看器下的日志。也许这些会给我们一些提示。我以前从未见过这个 @BogdanMitrache 刚刚在我的应用程序中遇到了这个问题 - 客户报告并在我的机器上复制了它。阅读链接后,我认为这是 AppInstaller 中新引入的错误。【参考方案2】:

我从来没有找到解决方案。我的解决方法是通过不包含ShowPrompt="true" 来关闭更新对话框。

即使有更新,应用程序似乎也会正常启动。

但是,有一个新问题 - 用户在发布更新后第一次启动应用程序时,不会发生自动更新。它仅在应用程序第二次启动时应用。这显然是设计使然...

【讨论】:

以上是关于MSIX 侧载应用在更新后启动缓慢的主要内容,如果未能解决你的问题,请参考以下文章

为啥在模拟器中启动应用程序后 xcode 控制台输出缓慢?

为啥在 Worklight 6.1.0.01 升级后 Eclipse 启动缓慢?

升级到 Spring Boot 2.2.2 后应用程序启动缓慢

启动新意图后活动加载缓慢

重启 Spring Boot 应用程序后第一次调用缓慢

启动avd Android模拟器缓慢 HAXM自动安装失败