【发布时间】:2018-07-25 18:55:08
【问题描述】:
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 特定的做事方式。
【问题讨论】:
-
按用户数据的安装通常不适用于 WiX 或 Windows Installer。要支持多个运行安装的用户,您必须创建一个公布的快捷方式,以便为其他用户运行修复并安装丢失的每个用户数据。广告快捷方式有其自身的问题,即使没有真正“损坏”的任何东西,也往往倾向于调用修复,从而给用户带来麻烦。最佳做法是让应用程序处理每个用户的数据。
标签: wix windows-installer