我正在使用" 桌面网桥"将Win32应用程序(Zoom Player)转换为UWP AppX模型。转换工具。
在Windows VISTA中引入的文件夹模型下,不需要创建/写入权限的应用程序文件安装在" 程序文件"需要创建/写入权限的文件夹和文件安装在 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"使用相同的参数来检索Local AppData文件夹。
我有什么想法可以解决这个问题吗?
答案 0 :(得分:1)
我有什么想法可以解决这个问题吗?
转换后,AppData会重定向到本地应用数据存储,这是每个UWP应用的私有存储。
请注意以下情况:您的应用会写入应用的安装目录。例如,您的应用程序写入您放在与exe相同的目录中的日志文件。 不支持,因此您需要找到其他位置,例如本地应用数据存储。
请参阅here
中的准备桌面应用以转换为UWP 部分----------------更新1 ----------------
中提供了正确的方向引用:
AppX安装程序是否无法自动将某些文件放入本地应用程序数据文件夹?
是。建议的模式是在安装包中包含模板文件,然后在首次使用时将它们复制到本地应用程序数据文件夹。 安装应用程序包时,它只是复制到系统中。它不运行任何初始化代码。它不知道哪些用户将运行该应用程序,并且无法访问其用户数据。如果第二个用户安装了该应用程序,则该用户将获得对已安装应用程序的引用,并且不会复制或安装任何新内容。
普通的Win32安装程序不仅会将文件放入“Program Files”文件夹,还会将可编辑的文件放入“Local AppData”文件夹中
这似乎是一个问题场景,我们会注意到相关团队检查并优化文档。