16

我已经编写了一个 msi 文件,它在 UI 阶段提供了“per-user”或“for all”安装选项,现在发现安装程序在 Vista 上失败:

  • 如果我只是重用适用于 XP 的安装程序,Vista 将触发 UAC 提示,即使是“每用户”安装,也使安装毫无意义
  • 如果我在 PID_WORDCOUNT 的第 3 位关闭 UAC,Vista 将不再调用 UAC,所以即使用户有权安装到机器注册表中(比如说),也不会发生权限提升,所以安装失败。

那么:如何防止安装程序在不需要时调用 UAC?或者,即使设置了第 3 位,我如何以编程方式请求 UAC?

4

3 回答 3

6

不幸的是,Windows Installer 没有提供创建单个包的方法,该包可以为每台机器和每用户安装,但只在每台机器的情况下提示输入 UAC。问题是可以抑制 UAC 提示的位存储在 SummaryInformation 流中,并且在包执行时不可修改。

于 2008-11-22T02:39:34.693 回答
3

试试这个参考:MSI 中的 UAC 注意:如何构建适用于标准用户和每台机器的包?

于 2008-11-01T04:50:42.213 回答
1

我通过在我的 MSI 包中设置 PID_WORDCOUNT 的第 3 位来关闭 UAC。我可以为“ALLUSERS”和“PER-USER”安装它,还可以在 VISTA 机器上的两种模式下为 HKLM 写入。您是否必须在安装期间为特权用户获取 UAC 弹出窗口?

于 2009-08-19T09:36:59.933 回答