AppDataFolder 在由标准用户安装时映射到错误的文件夹

AppDataFolder maps to wrong folder when installed by a standard user

作为我的 Installshield 项目的一部分,我需要将一些文件放在用户的漫游应用程序数据文件夹中 (C:\Users\<Username>\AppData\Roaming\MyApp\MyFile)。为此,我创建了一个组件,并将其目标设置为 [AppDataFolder]MyApp

虽然这在我 运行 作为管理员时工作正常,但当我 运行 作为标准用户安装程序时(使用管理员的 account/password 在安装过程中提升权限),MyFile 被复制到管理员的漫游文件夹 (C:\Users\<AdminUsername>\AppData\Roaming\MyApp\MyFile),而不是用户的。

有办法解决这个问题吗?

将文件安装到 user-profile 是一项有问题的工作。考虑此处解释的其他方法:Create folder and file on Current user profile, from Admin Profile.

那个 linked 的答案有点过头了(它试图总结 user-profile 部署可能导致的所有问题),但基本上你可以让你的应用程序复制有问题的文件从安装在主应用程序安装目录(在 %ProgramFiles% 下)某处的 read-only 模板副本中为每个用户启动应用程序的右侧 user-profile 文件夹。

使用应用程序将此类文件复制到 user-profile 将消除许多否则可能导致的部署问题。请阅读上面的 linked 答案了解详情。


至于您的情况在技术上发生了什么,我猜您已经为 per-user 组件设置了磁盘 key-path。如果要避免错误 link 到管理员文件夹,则需要为此类组件设置 HKCU 注册表路径。

更新:检查这个解释是否更好:http://forum.installsite.net/index.php?showtopic=21586#entry60600。通过为托管组件设置 HKCU 路径,您将不会获得以红色字母显示的硬编码名称(错误)。如果问题仍然不清楚,请检查 linked 线程中下面的其他答案。

如果您选择使用 HKCU 关键路径方法,请阅读上方 linked 答案中的 3: MSI Self-Repair 部分。