3

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

在 Windows VISTA 中引入的文件夹模型下,不需要创建/写入权限的应用程序文件安装在“ Program Files ”文件夹下,需要创建/写入权限的文件安装在LocalAppData文件夹下(“ C:\Users\ bLight\AppData\Local ”,当使用FOLDERID_LocalAppData参数调用“ SHGetKnownFolderPath ” WinAPI 函数时)。

我的问题是Desktop Bridge创建的 AppX 文件将安装程序要安装的文件安装到“FOLDERID_LocalAppData”(C:\Users\bLight\AppData\Local\Zoom Player)这里:

C:\Program Files\WindowsApps\ZoomPlayer_12.5.0.0_x86__63ghcm0aqanjp\VFS\Users\ContainerAdministrator\AppData\Local\Zoom Player

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

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

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

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

有什么想法可以解决这个问题吗?

4

1 回答 1

1

有什么想法可以解决这个问题吗?

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

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

请参阅此处的准备桌面应用以转换为 UWP部分

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

Rob在您的MSDN 问题中提供了正确的方向

引用:

AppX安装程序是否无法自动将某些文件放入本地应用程序数据文件夹中?

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

普通的 Win32 安装程序不仅将文件放入“Program Files”文件夹,还将可编辑文件放入“Local AppData”文件夹

这似乎是一个问题场景,我们会通知相关团队进行检查并完善文档。

于 2016-09-12T11:55:45.833 回答