以提升用户身份在 wix 中运行 CustomAction

Posted

技术标签:

【中文标题】以提升用户身份在 wix 中运行 CustomAction【英文标题】:Running CustomAction in wix as elevated user 【发布时间】:2012-07-31 08:46:45 【问题描述】:

在我看来 - WiX 支持两种 CustomAction:

延迟 - 运行此操作的用户(默认情况下)被提升,但不是运行安装的用户(例如 LocalSystem 或类似的用户)。

立即 - 运行此操作的用户(默认情况下)未提升 - 是首先运行安装程序的用户。

我需要一些中间的东西 - 我想要运行安装程序的用户的提升形式 (UAC)。

我需要它的原因是访问只能由以提升形式安装包的用户访问的数据库(无法访问 LocalSystem)。

【问题讨论】:

我找到的一个解决方案是创建一个引导程序 setup.exe。我不介意 setup.exe 是否包含 setup.msi。但分发 2 个文件不是一种选择。 【参考方案1】:

这不存在。自定义操作只有两种可能的运行环境。一种是启动用户(通常通过模拟)。另一个是 Windows Installer 服务的提升上下文。在某些机器上(例如 Windows XP,或禁用 UAC 的机器),或使用提升引导程序,启动用户是管理员用户;您可以结合使用 MSIUSEREALADMINDETECTIONAdminUser 属性来检查这种情况。但在任何情况下都没有第三种上下文。

【讨论】:

不幸的是,我认为你是对的。我最终做的是创建一个引导程序,然后将它与 IExpress 捆绑在一起。

以上是关于以提升用户身份在 wix 中运行 CustomAction的主要内容,如果未能解决你的问题,请参考以下文章

WiX MSI 和 EXE 作为一个 EXE

批处理文件:删除提升的权限(以原始用户身份运行命令)

以不同用户身份运行代码以获得提升的权限

Delphi 以不同的用户身份运行

以另一个用户身份运行 Visual Studio 并提升

WiX 自定义引导程序 - 单实例检查