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\Local” SHGetKnownFolderPath" 带有 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
这个场景好像有问题,我们会通知相关团队检查并完善文档。
我正在使用“Desktop Bridge”转换工具将 Win32 应用程序 (Zoom Player) 转换为 UWP AppX 模型。
在Windows VISTA引入的文件夹模式下,不需要create/write访问权限的应用程序文件安装在“Program Files”文件夹下需要 create/write 访问权限的文件安装在 LocalAppData 文件夹下(调用“时,C:\Users\bLight\AppData\Local” SHGetKnownFolderPath" 带有 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
这个场景好像有问题,我们会通知相关团队检查并完善文档。