【问题标题】:PerUser install with Custom Action - UAC disabled使用自定义操作按用户安装 - 禁用 UAC
【发布时间】:2013-07-12 23:57:29
【问题描述】:

我正在使用 WiX 生成一个 MSI,它基于每个用户安装浏览器插件。我有一个自定义操作来使用 DPInst 安装驱动程序(需要提升权限)。

启用 UAC 后安装正常; Windows 显示提升提示。但是,如果我禁用了 UAC 并尝试在普通用户帐户上安装,dpinst.exe 将被生成,直到计算机死机。 (最后计数大约一千次)。

<InstallExecuteSequence>我有:
<Custom Action="Install_Drivers" After="InstallFiles">NOT Installed</Custom>

我的自定义操作是:
<CustomAction Id='Install_Drivers' Execute='deferred' Directory='DRIVERS' ExeCommand='"[DRIVERS]DPinst.exe" /SW /SA' Return='ignore' Impersonate='no'/>

我有Return='ignore',因为据我所知,dpinst.exe 总是returns a non-0 code

当 UAC 被禁用时,如何确保自定义操作正确失败?在相关说明中,当驱动程序安装失败时,我可以向用户显示自定义消息吗?

更多信息:我目前正在 Windows 7 上进行开发,但目标是 WinXP 及更高版本。

编辑查看安装日志,这些似乎是相关行:

Executing op: CacheSizeFlush(,)
Executing op: ActionStart(Name=Install_Drivers,,)
Executing op: CustomActionSchedule(Action=Install_Drivers,ActionType=3170,Source=C:\long_redacted\Drivers\,Target="C:\long_redacted_path\Drivers\DPinst.exe" /SW /SA,)
Disallowing shutdown.  Shutdown counter: 0
CustomAction Install_Drivers returned actual error code 1073807364 but will be translated to success due to continue marking

我相信,关于关机的一点是,当我注销时停止安装。 (取消似乎没有任何效果)。

【问题讨论】:

    标签: wix uac dpinst


    【解决方案1】:

    尝试在“CustomAction”元素上设置“Impersonate=no”属性,如下所示:

    <CustomAction Id='Install_Drivers' Execute='deferred' Directory='DRIVERS' ExeCommand='[DRIVERS]DPinst.exe" /SW /SA' Return='ignore' Impersonate="no"  />
    

    另请注意:您的 ExeCommand 中有一个杂散的双引号

    【讨论】:

    • 谢谢,缺少的报价是复制错误。不幸的是,添加 Impersonate="no" 并不能解决问题。 (虽然在我注销之前它只获得了 200 个 dpinst.exe 进程!)。我已经编辑了问题以包含您的建议。我错误地认为“否”是默认值。
    【解决方案2】:

    安装驱动程序本质上是每台机器的操作。受限用户无法做到这一点。因此,在禁用 UAC 的情况下,它将无法正常工作。 DPInst 显然没有得到它没有权限并且无法获得权限的提示。听起来像是 DPInst 中的错误。您应该将安装程序更改为每台计算机,并在 Privileged 属性上添加启动条件,以防止安装程序无法为没有 UAC 的受限用户启动。

    【讨论】:

    • 谢谢。我知道安装驱动程序是每台机器的操作。但是,我打算将浏览器插件安装在用户配置文件中。听起来this person 对 dpinst 有同样的经历。如果是这样的话,这似乎是一个非常糟糕的错误。
    • 听起来很糟糕,是的。添加Privileged启动条件,确保受限用户无法进入这种状态。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-18
    • 2016-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-06
    相关资源
    最近更新 更多