如何让WiX安装程序请求管理员权限?

23

我们有一个内部开发的程序。我们正在升级到使用Visual Studio 2012,因此必须放弃Visual Studio安装程序项目。如果已经安装了应用程序,InstallShield LE会给我们带来快捷方式问题。这最终让我选择了WiX。

我研究了几天,并阅读了几篇有关如何获得管理员权限的文章,但似乎都不起作用。 Package元素具有InstallPrivileges="1",并且存在以下Property元素:

<Property Id="MSIUSEREALADMINDETECTION" Value="1" />

启动时它不会请求管理员权限,因此在尝试创建程序文件夹位于C:\Program Files(x86)时失败。


6
直到“InstallExecuteSequence”,MSI 才会请求管理员权限。如果想从一开始就获取管理员权限,你需要使用引导程序,可以查看 WIX 提供的 Burn 引擎。 - Natalie Carr
如果您的软件包是按计算机安装的,则MSI引擎会自动请求UAC提升。您的软件包是否是按用户安装,但仍然尝试写入Program Files目录?ALLUSERS属性是否设置为1? - Alexey Ivanov
5
谢谢你们两位的建议。对于 Natalie:我不能使用一个引导程序,输出必须是 MSI(有人已经将升级链接硬编码到当前应用程序中)。我添加了以下内容,但不确定哪个(或哪些组合)给我想要的结果,但现在它可以工作了:InstallPrivileges="elevated" AdminImage="yes" InstallScope="perMachine" - Opus Krokus
1
@OpusKrokus 你可以将其发布为答案并接受它。事实上,我强烈建议你这样做。 - Ivan Vučica
可能是WiX安装程序应始终以管理员身份运行的重复问题。 - Mohammadreza
4个回答

30

关于如何让WiX安装程序请求管理员权限的回答

Opus Krokus评论中提供了解决方案。

答案:

我在 Package 元素中添加了以下内容,并不确定哪个(或哪种组合)给我带来了我需要的,但现在它可以正常工作:InstallPrivileges="elevated" AdminImage="yes" InstallScope="perMachine"


5
我认为正确的应该是“InstallPrivileges”。我已删除“AdminImage”属性,但我的软件包仍在请求管理员权限。“AdminImage”似乎表示另一种东西,请参考:http://stackoverflow.com/a/15434458/145349。 - fjsj
2
InstallScope="perUser" 下是否可能?我无法为每个用户设置提升的权限。 - Chaitanya Gadkari
2
你需要使用 InstallScope="perMachine" 才能使其正常工作。 - Riz

0

我来看一下这个Stack Overflow问题的答案。

以下是答案的核心:

<Property Id="MSIUSEREALADMINDETECTION" Value="1" />

Opus Krokus 提出的解决方案对我没有起作用。

0

你需要两个命令:

<Property Id="MSIUSEREALADMINDETECTION" Value="1" />     

<Condition Message="Installation requires Administrator privileges">
    <![CDATA[Privileged]]>
</Condition>

请注意,您必须使用<![CDATA[]]>Privileged括起来。

-1

以下是我在为 Windows 7(及更高版本)创建的 MSI 安装程序中使用的方法:

  <!-- Set per-machine installation as default.
  See See http://msdn.microsoft.com/en-us/library/dd408007.aspx for an explanation of ALLUSERS=2 and MSIINSTALLPERUSER="".
  -->
  <Property Id="ALLUSERS" Value="2" />
  <!-- Needs to be empty value (and empty value must be commented out to get rid of error message when compiling):
  <Property Id="MSIINSTALLPERUSER" Value="" /> 
  -->

如上述XML注释中所提到的,有关详细信息请参见http://msdn.microsoft.com/en-us/library/dd408007.aspx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接