MSI安装和UAC

Den*_*ick 3 installer windows-installer wix

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

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

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

谢谢

Cos*_*rvu 5

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

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

  • 使用从UI收集数据的立即自定义操作
  • 使用Deferred没有使用该数据的模拟自定义操作

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