PerUser安装自定义操作 - 禁用UAC

时间:2013-07-12 23:57:30

标签: wix uac dpinst

我正在使用WiX生成一个基于perUser安装浏览器插件的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

我相信,当我退出停止安装时,有关停机的信息。 (取消似乎没有任何效果)。

2 个答案:

答案 0 :(得分:1)

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

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

另请注意:您的ExeCommand

中有一个迷路双引号

答案 1 :(得分:0)

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