MSI安装和UAC

时间:2011-01-26 13:38:40

标签: installer wix windows-installer

我们使用WiX构建了产品安装。 它需要在服务器上执行,并且由于其性质,需要创建用户并分配此用户特定权限(例如,作为服务执行) 为此,我们使用自己的自定义操作,这些操作是在基于C#的自定义操作库中定义的。

当我们由具有管理权限但在Windows 2008上不是管理员的用户开始安装时,系统不会要求我们确认是否要执行此应用程序(不显示UAC对话框)。 因此,所有这些操作都会失败,因为MSI似乎在没有管理权限的情况下运行。 我们无法延迟操作,因为其中一些操作需要在UI序列中执行,需要标记为“立即”。

我们如何将安装程序标记为需要管理权限的安装程序? 我们尝试了WiX属性InstallPrivileges ='elevated',但是文档说它是默认设置的,并没有任何区别。

由于

2 个答案:

答案 0 :(得分:5)

您无法直接标记MSI以请求管理员权限。但是,您可以尝试使用EXE引导程序,该引导程序通过其清单请求提升:http://msdn.microsoft.com/en-us/library/bb756929.aspx

更好的方法是拆分自定义操作,而不是执行所有操作的单个操作:

  • 使用从UI
  • 收集数据的立即自定义操作
  • 使用Deferred with no impersonation自定义操作使用该数据

UI自定义操作收集的信息可以存储在安装程序属性中。这些属性可以通过Action Data(CustomActionData属性)传递给延迟的操作。

答案 1 :(得分:1)

我在安装中使用InstallPrivileges ='elevated',它在Windows 2008上显示UAC对话框。您是否在“安装”按钮上看到了盾牌图标?