默认情况下,每用户MSI未提升 - 如何显示写入文件夹的提升提示?

时间:2012-02-14 15:39:16

标签: wix windows-installer uac

我有一个通过WiX构建的MSI,它是每个用户,如果用户拥有目标文件夹的权限,则不显示UAC提示。但是,如果目标文件夹位于Program Files中,则会出现“Insuficient privileges”错误。

如果目标文件夹不可写,如何显示UAC提示?

2 个答案:

答案 0 :(得分:4)

它并没有真正起作用。每用户安装应该永远不需要提升,并且永远不应该写入Program Files,因为这是每个机器的位置。相反,它应安装到%LocalAppData%\ Programs \ Company \ Product。

阅读以下内容以获取更多背景信息。零件适用,零件可能超出范围(双用户/每机器要求):

Authoring a single package for Per-User or Per-Machine Installation context in Windows 7

答案 1 :(得分:0)

我知道这是一个旧帖子,但我想让其他遇到它的人确实有可能。

正如前面的回答中所提到的,传统的每用户安装不应该要求管理员权限。但是,我遇到了一个非常有效的情况,我需要运行需要管理员权限的自定义操作。要求我的用户使用msiexec从具有提升权限的命令行启动MSI似乎不是一个可接受的解决方案。

这似乎不应该这么困难,但幸运的是我偶然发现this post中的答案:Package / @ InstallScope属性不支持每用户,提升的包!所以只需在包定义中省略它:

<!-- NOTE: If you need to create a per-user installation (meaning it's not -->
<!-- visible in Add/Remove Programs from other logons) that prompts for -->
<!-- elevation, omit both the Package/@InstallPrivileges="elevated" and
<!-- Package/@InstallScope="perUser". -->
<Package InstallerVersion="200" Compressed="yes" />

不要忘记将ALLUSERS定义为未定义。我在博客上进一步描述了这一点:

How to Elevate a Per User Installer Using WiX