更新后 MSIX 旁加载应用启动缓慢

MSIX sideloaded app is slow to start after update

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

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

测试 1 - 普通用户

查看事件日志,首先出现此警告:

App manifest validation warning: Declared namespace http://schemas.microsoft.com/developer/appx/2015/build is inapplicable, it will be ignored during manifest processing.

然后是几条消息

error 0x5: Deleting file \?\C:\Program Files\WindowsApps\Deletedb7d5c25-92aa-4962-9e74-93b9685ce2ca-test_2021.1005.1225.1455_x64__002e9dkagpm7g28acfe13-edc2-4d9d-8a69-d5d9687e0573\MyApp\MyApp.exe failed.

1 分钟后出现此警告:

Warning: There were 129 additional files that failed to be deleted under the folder \?\C:\Program Files\WindowsApps\Deleted.

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

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

测试 2 - 管理员用户

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

更新对话框更新完成,12s后关闭

然后有 5 分钟没有任何反应(!)

我想我点击了“开始”按钮或其他按钮,然后应用程序突然启动了。

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

只有这个警告:

App manifest validation warning: Declared namespace http://schemas.microsoft.com/developer/appx/2015/build is inapplicable, it will be ignored during manifest processing.

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

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

14-10-2021 10:10:12

UpdateUsingAppInstallerOperation operation on a package with main parameter 8b7d5c25-92aa-4962-9e74-93b9685ce2ca-test_2021.1013.1518.1578_x64__002e9dkagpm7g and Options 0 and 0. See http://go.microsoft.com/fwlink/?LinkId=235160 for help diagnosing app deployment issues.

14-10-2021 10:10:13

The bundle streaming reader was created successfully for bundle 8b7d5c25-92aa-4962-9e74-93b9685ce2ca-test_2021.1013.1518.1578_neutral_~_002e9dkagpm7g.Started deploymentThe bundle streaming reader was created

结论

查看任务管理器和 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

你不能给它管理员权限。每个用户的 MSIX 安装总是 运行。

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

我从来没有找到解决这个问题的办法。我的解决方法是通过不包括 ShowPrompt="true".

来关闭更新对话框

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

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