UWP Desktop Bridge & Local App Data 虚拟化文件夹位置

UWP Desktop Bridge & Local App Data virtualized folder location

我正在使用“Desktop Bridge”转换工具将 Win32 应用程序 (Zoom Player) 转换为 UWP AppX 模型。

在Windows VISTA引入的文件夹模式下,不需要create/write访问权限的应用程序文件安装在“Program Files”文件夹下需要 create/write 访问权限的文件安装在 LocalAppData 文件夹下(调用“时,C:\Users\bLight\AppData\LocalSHGetKnownFolderPath" 带有 FOLDERID_LocalAppData 参数的 WinAPI 函数。

我的问题是由 Desktop Bridge 创建的 AppX 文件将安装程序针对安装的文件安装到 "FOLDERID_LocalAppData"(C:\Users\bLight\AppData\Local\Zoom Player) 此处:

C:\程序Files\WindowsApps\ZoomPlayer_12.5.0.0_x86__63ghcm0aqanjp\VFS\Users\ContainerAdministrator\AppData\Local\Zoom播放器

并且 运行 安装的应用程序之后的任何后续读取或写入尝试都将重定向到:

c:\users\bLight\appdata\local\packages\zoomplayer_63ghcm0aqanjp\LocalCache\Local\Zoom 玩家

这意味着无法访问安装的文件。

安装程序和 Win32 应用程序都使用 "SHGetKnownFolderPath" 和相同的参数来检索本地 AppData 文件夹。

有什么解决办法吗?

Any ideas how I can resolve this?

转换后,AppData 被重定向到本地应用数据存储,这是每个 UWP 应用的私有存储。

请注意这种情况:您的应用程序写入您的应用程序的安装目录。例如,您的应用程序写入一个日志文件,该文件与您的 exe 放在同一目录中。 这不受支持,因此您需要找到其他位置,例如本地应用程序数据存储。

请参阅here

中的准备桌面应用以转换为 UWP 部分

----------------更新 1----------------

Rob has provided the right direction in your MSDN question

引用:

Is it impossible for the AppX installer to automatically place some files into the local app data folder?

是的。推荐的模式是将模板文件包含在安装包中,然后在首次使用时将它们复制到本地应用程序数据文件夹。 安装应用程序包时,它只是被复制到系统中。它没有 运行 任何初始化代码。它不知道哪些用户会 运行 该应用程序并且无权访问他们的用户数据。如果第二个用户安装该应用程序,则该用户将获得对已安装应用程序的引用,并且不会复制或安装任何新应用程序。

A normal Win32 installer doesn't only place files into the "Program Files" folder, it places editable files into the "Local AppData" folder

这个场景好像有问题,我们会通知相关团队检查并完善文档。