MSIX无法在AppData中创建文件夹



我有一个正在从MSIX安装程序安装的应用程序。它安装成功,但在安装后执行时,我收到一个错误,即在C:\UserName/AppData/Roaming/MyApplication中没有这样的文件。

我尝试过的:

  1. 在应用程序一开始就创建文件夹(来自C#代码(

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

  1. 我从操作系统手动创建了文件夹,以查看错误是否会持续存在

结果:我从MSIX运行了应用程序,一切都很好。

  1. 在最后一步,我试图访问C:\WindowsApp文件夹(MSIX正在安装东西的地方(的权限,我试图通过执行.exe(而不是像以前那样通过MSIX(手动运行应用程序,看看错误是否会持续

结果:它毫无问题地创建了这些文件夹,应用程序运行良好。

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

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

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

C:\Users\AppData\Local\Packages(hash(。。。。

这是所有MSIX打包应用重定向其AppData资源的地方。

然而,如果发现文件存在于";真实的";AppData文件夹中,应用程序将使用该副本,而不是来自虚拟化位置的副本(这是微软的国际行为,目的是使应用程序从经典安装程序顺利过渡到MSIX(。这就是手动创建文件夹后应用程序工作的原因。

此外,请注意,来自虚拟化位置的文件只能由您的应用程序访问,其他人不能从机器上访问。

  1. 我怀疑当直接从安装文件夹(而不是从开始菜单入口点(运行EXE时,操作系统不会在MSIX包的容器中启动应用程序,因此作为打包应用程序运行的任何规则都不适用。因此,您可以忽略这种情况

返回#1,尝试在我提到的路径下搜索文件。您(Devexpress(是如何访问AppData路径的?我认为他们正在使用以下内容(这应该没问题(:

Environment.GetFolderPath(Environment.SpecialFolder.)

最新更新