MSIX 无法在 AppData 中创建文件夹

MSIX cant create folders in AppData

我有一个正在从 MSIX 安装程序安装的应用程序。 安装成功,但安装后执行时提示C:/UserName/AppData/Roaming/MyApplication.

中没有这样的文件

我尝试过的:

  1. 在应用程序的最开始创建文件夹(从 C# 代码)。

结果:它正在某处创建它,但我显然无法在磁盘上看到它。即使当我尝试在该目录中创建文件时,我也可以毫无例外地做到这一点。所以我确定这个文件夹存在。某处。当我 运行 从 MSIX 申请时,它给了我前面提到的异常。

  1. 我从 OS 手动创建文件夹以查看错误是否会持续存在。

结果:我 运行 来自 MSIX 的应用程序,一切正常。

  1. 在最后一步,我尝试访问 C:/WindowsApp 文件夹(这是 MSIX 正在安装东西的地方)的权限,并且我尝试通过执行 .exe(不是通过MSIX 像以前一样),看看错误是否会持续。

结果:创建这些文件夹没有问题,应用程序运行良好。

知道我做错了什么,或者我可以做些什么来避免这个错误吗?

PS。我无法更改路径 C:/UserName/AppData/Roaming/MyApplication 的位置,因为它是由第 3 方 dll (Devexpress) 创建的。

  1. 尝试搜索此路径下的文件:

C:\Users\User\AppData\Local\Packages(hash)....

那就是all MSIX packaged apps redirect their AppData resources.

但是,如果发现文件存在于“真实的”AppData 文件夹中,应用程序将使用该副本,而不是来自虚拟位置的副本(这是 Microsoft 的国际行为,以平滑过渡从经典安装程序到 MSIX 的应用程序)。 这就是应用程序在您手动创建文件夹后运行的原因。

另外请注意,来自虚拟化位置的文件只能供您的应用程序访问,其他人无法从计算机上访问。

  1. 我怀疑当 运行 EXE 直接来自安装文件夹(而不是来自开始菜单入口点)时 OS 不会在 MSIX 包的容器中启动应用程序,所以 none 运行ning 的规则作为 packaged-app 适用。所以你可以忽略这个场景。

回到#1 并尝试在我提到的路径下搜索文件。您(Devexpress)如何访问 AppData 路径?我假设他们使用的是(这应该没问题):

Environment.GetFolderPath(Environment.SpecialFolder.)