通过 MSIX 包安装的应用程序“忘记”虚拟 LocalAppData 路径

Posted

技术标签:

【中文标题】通过 MSIX 包安装的应用程序“忘记”虚拟 LocalAppData 路径【英文标题】:App installed via MSIX package 'forgets' virtual LocalAppData path 【发布时间】:2021-11-15 23:41:07 【问题描述】:

一些临时文件正在缓存到Environment.GetFolderPath(Environment.SpecialFolder.) + "\\Company\\App";

在应用启动时分配虚拟 AppData 位置。一切似乎都正常,文件正在虚拟目录 (C:\Users\User\AppData\Local\Packages\(hash)\LocalCache\Local\Company\App\file.file) 中生成,它们应该是这样的。

尝试复制同一目录中的文件一段时间后,它会抛出:System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Users\User\AppData\Local\Company\App\file.file

文件存在于虚拟目录中。

我错过了什么吗?

【问题讨论】:

【参考方案1】:

只有当文件已经存在于机器上时,应用程序才应该在真实的 AppData 文件夹中查找文件。 (实际 AppData 文件夹优先于虚拟文件夹)。

真正的 AppData 应用程序文件夹是否为空/丢失,或者是否有以前测试的任何文件?你能在干净的机器上重现这个吗,例如在虚拟机中?

【讨论】:

文件和目录从未出现在真正的 AppData/Local 文件夹中。是的,这是在干净的机器上复制的。 您的包中是否有多个 EXE,或者您是否正在启动另一个可能尝试从错误位置加载文件的外部 EXE? (因为它不在你应用的虚拟容器中运行) 不,事实并非如此。虽然,该应用可能会尝试在不同的线程中访问文件。

以上是关于通过 MSIX 包安装的应用程序“忘记”虚拟 LocalAppData 路径的主要内容,如果未能解决你的问题,请参考以下文章

如何从单个 MSIX 创建相关集?

使用 MSIX 打包的 WPF 无法通过 Microsoft Store 验证

阅读 msix 包 appxmanifest 版本

MSIX 未打包所有依赖项

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

MSIX 添加类似于 ClickOnce 的先决条件