5

我们有一个 CustomAction 来设置一些注册表键 HKEY LOCAL_MACHINE。这不适用于带有 UAC 的 Vista,直到我们将操作“推迟”。安装程序在其他情况下工作。有谁知道为什么?

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

4

2 回答 2

11

+1 长矛。换一种说法并提供更多信息

MSI 流程有 2 个步骤

  • 立即- 您收集首选项的位置(安装目录等) - 不应在此处对机器进行任何更改

然后稍后

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

一些进一步的想法

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

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

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

  • 模仿- 启动安装的人。

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

于 2008-11-22T22:02:37.297 回答
4

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

于 2008-10-30T19:53:39.320 回答