为什么需要在Vista上使用UAC来设置设置reg密钥的MSI CustomAction?

lun*_*ain 5 windows-installer wix

我们有一个CustomAction设置一些注册表项HKEY LOCAL_MACHINE.在我们将行动"推迟"之前,这不适用于使用UAC的Vista.安装程序在其他情况下工作.谁知道为什么?

我们正在使用WIX来创建安装程序.

Rya*_*yan 11

+1兰斯.用另一种方式来表达它并提供更多信息

MSI过程中有两个步骤

  • 立即 - 您收集偏好的地方(安装目录等) - 此处不应对机器进行任何更改

然后是

  • 延迟 - 在收集所有首选项并实际执行安装后运行.

进一步的想法

  • 立即可能并不总是运行(例如脚本安装),所以不要依赖它.

延迟操作可以运行2种模式

  • NoImpersonate - 又名NT Authority\System,拥有您计算机的完全权限

  • 冒充 - 任何人开始安装.

启用UAC后,Impersonate会有一个踢球者.即使用户实际上是管理员,您也只有标准用户令牌而没有管理员权限 - 因此,如果可能,请保留NoImpersonate,否则您的自定义操作将无法执行任何操作.


Lan*_*eSc 5

当您的自定义操作在 InstallExecuteSequence 中遇到时,它会立即运行;而不是在执行实际安装脚本时。这导致您的自定义操作使用用户权限执行,而不是使用系统提升的权限。本系列博文将详细解释发生的情况,http://blogs.msdn.com/rflaming/archive/2006/09/23/768146.aspx。影响计算机状态的自定义操作不应作为延迟自定义操作运行。