WiX安装程序-在UAC提示后,LocalAppDataFolder的子项安装到错误位置
WiX是个新手,我正在尝试修复我最近接管的一些软件中的一个bug。作为产品定义的一部分,我们将某些文件安装到用户的“AppData\Local”目录中。当用户具有安装权限时,当前项目设置工作正常,文件被放置在预期用户的“AppData\Local”目录中 但是,如果弹出UAC提示需要管理员凭据,则文件最终将安装在管理员帐户的“AppData\Local”目录中 在产品文件中,我们有如下内容:WiX安装程序-在UAC提示后,LocalAppDataFolder的子项安装到错误位置,wix,windows-installer,Wix,Windows Installer,WiX是个新手,我正在尝试修复我最近接管的一些软件中的一个bug。作为产品定义的一部分,我们将某些文件安装到用户的“AppData\Local”目录中。当用户具有安装权限时,当前项目设置工作正常,文件被放置在预期用户的“AppData\Local”目录中 但是,如果弹出UAC提示需要管理员凭据,则文件最终将安装在管理员帐户的“AppData\Local”目录中 在产品文件中,我们有如下内容: <Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="LocalAppDataFolder">
<Directory Id="MyData" Name="My Data">
...
</Directory>
</Directory>
</Directory>
...
然后在heat.exe生成的文件中
<Fragment>
<DirectoryRef Id="MyData">
<Directory Id="UserMaps" Name="User Maps" />
</DirectoryRef>
</Fragment>
<Fragment>
<ComponentGroup Id="User_Maps_Components">
<Component Id="Map1.png" Directory="UserMaps" Guid="{C27...autogenerated}">
<File Id="Map1.png" Source="$(var.MapPath)\Map1.png" KeyPath="no" />
<RegistryValue KeyPath="yes" Root="HKCU" Key="Software\MyApp\Usermaps" Type="integer" Value="1" Name="Map1.png" />
</Component>
</ComponentGroup>
</Fragment>
是否有办法确保文件将安装到发起用户的目录,而不是管理员的帐户
我们也将文件安装到“程序文件”中,因此,如果在活动用户的文件夹中找不到这些文件,我可以始终在那里安装这些文件,并将它们作为应用程序初始化逻辑的一部分进行复制,但是我很想看看是否有一种特定于WiX的方式来做事情。我想你实际上是在输入管理员密码并指定一个管理员帐户来运行安装程序?这与提升您登录时使用的管理员帐户相反。后者应使文件安装在预期文件夹中 我赞同您描述的方法:将文件从每台机器安装的副本复制到每个用户配置文件中。只是关于这个问题的一些想法——这个问题似乎没有什么好的答案。Windows 10显然不再支持主动安装方法
加入一些链接:
Windows键
启动,点击R
并键入Cleanmgr.exe
并按Enter
)以允许作为一种“垃圾收集”进行清理功能,但我从来没有抽出时间来看看它。如果需要的话,我会说最好在一篇支持文章中记录如何清除剩余的用户数据。记录方法可能最适合我的情况,因为每个用户都需要自己的文件副本,因为他们可以对其进行独立更改。谢谢你的帮助!没问题,很高兴你能理解。如果您遇到预先存在的用户数据(在HKCU或用户配置文件中)存在不一致的情况,需要解决这些不一致的问题才能使您的应用程序正常运行(例如,已保存的工具栏自定义项的二进制流在启动时突然使您的应用程序崩溃),您可以在此处进行检查:。在绝对必要的情况下,您可以使用应用程序启动序列对每个用户执行任何“数据清理”(并确保清理只运行一次)。