【问题标题】:UWP Desktop Bridge & Local App Data virtualized folder locationUWP 桌面桥和本地应用数据虚拟化文件夹位置
【发布时间】:2017-03-22 10:44:57
【问题描述】:

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

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

我的问题是 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 文件夹。

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

【问题讨论】:

    标签: uwp windows-10 desktop-bridge


    【解决方案1】:

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

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

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

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

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

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

    引用:

    AppX安装程序无法自动将一些文件放入本地应用数据文件夹吗?

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

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

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

    【讨论】:

    • 这不是问题,AppX 没有写入用于本地应用程序数据存储的文件。 Win32 安装程序尝试通过使用 FOLDERID_LocalAppData 参数调用 WinAPI SHGetKnownFolderPath 来获取本地应用程序数据路径来在那里写入一些文件,但在使用 Desktop Bridge 转换后,AppX 安装程序会将文件放置在无法访问的文件夹中。
    • @bLight 请查看我的更新。谢谢你指出:)
    猜你喜欢
    • 2019-01-21
    • 2018-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-22
    • 2018-07-20
    相关资源
    最近更新 更多