我正在使用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
我相信,当我退出停止安装时,有关停机的信息。 (取消似乎没有任何效果)。
答案 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的情况下为有限用户启动。