WiX的全新功能,我正在尝试修复我最近接手的某些软件中的错误。作为产品定义的一部分,我们将某些文件安装到用户的“ AppData \ Local”目录中。当用户具有安装特权时,将文件放置在预期的用户“ AppData \ Local”目录中,当前的项目设置可以正常工作。
但是,如果弹出UAC提示要求管理员凭据,则文件最终将安装在管理员帐户的“ AppData \ Local”目录中。
在产品文件中,我们有类似的内容:
<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特定的处理方式。
答案 0 :(得分:2)
我假设您实际上是在输入管理员密码并指定一个管理员帐户来运行安装程序?这与提升您用于登录的管理员帐户相反。后者应使文件安装在预期的文件夹中。 The former would install like you describe。
我会采用您描述的方法:将文件从每台计算机上安装的副本复制到每个用户配置文件中。 I wrote up some suggestions for user profile and HKCU deployment a while back。关于该主题的一些想法-一个似乎没有好的答案的主题。 Windows 10中显然不再支持Active Setup方法。
在某些链接中投掷: