wix - CustomAction DriverPackageInstall 失败并出现 0x80030005
问题描述
我正在通过使用 API DriverPackageInstall 的自定义操作使用 WiX 安装程序安装 WDF 驱动程序。但它失败并出现错误“0x80030005”STG_E_ACCESSDENIED。我以管理员身份运行(假设没有特权问题)创建了能够成功安装驱动程序的测试“c”控制台应用程序。
<InstallExecuteSequence>
<Custom Action='UninstallDriver'
After='InstallInitialize'>
REMOVE~="ALL" OR REINSTALL</Custom>
</InstallExecuteSequence>
<CustomAction Id='UninstallDriver'
BinaryKey='install_lib'
DllEntry='InstallDriver'
Execute='deferred'
Impersonate="no"
Return='check'/>
无法弄清楚为什么启用完整日志并检查失败。
MSI (s) (E8:50) [11:56:09:296]: Invoking remote custom action. DLL: C:\Windows\Installer\XXXXXX.tmp, Entrypoint: InstallMyDriver
CustomAction InstallMY.XXXXX_9XX_XXXX_XXXX_XXXXXXXX returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox)
Action ended 11:56:10: InstallFinalize. Return value 3.
MSI (s) (E8:38) [11:56:10:144]: Note: 1: 2265 2: 3: -2147287035
MSI (s) (E8:38) [11:56:10:144]: User policy value 'DisableRollback' is 0
MSI (s) (E8:38) [11:56:10:144]: Machine policy value 'DisableRollback' is 0
检查的 INF 文件存在于预期的输入位置。
任何帮助表示赞赏。
解决方案
驱动元素:为什么不使用 WiX 的内置diffx:Driver 元素/构造?我想知道您是否有系统上下文/模拟问题?通过使用内置的驱动程序元素,您可以获得更多“自动魔术”,因为您可以避免“手动”执行操作时出现的某些常见问题。
过去的爆炸:这是先前的答案,简要描述了这个元素。不幸的是,我自己无法正确测试它: How do I use WiX to deploy an INF-based USB driver Plus all the start menu shortcuts and desktop icons
测试:我肯定会尝试这个元素,只需注释掉您现有的自定义操作并尝试一下。
<Component>
<File ... />
<difx:Driver ... />
</Component>
推荐阅读
- java - 将 Oracle NVl 查询转换为条件查询
- excel - 在数据末尾插入 3 个新行,使用宏/命令按钮保持格式
- c# - Selenium 定位元素后抛出超时
- continuous-integration - ElectricFlow 可以用于移动应用程序 CI 吗?
- javascript - Vuejs:在 nuxt 页面中使用存储的数据
- php - 关联数组,迭代键和值 PHP LARAVEL
- bar-chart - 更改条形图 dc.js 的标签
- python - 如何分离测试和夹具
- nuget - 是否可以为没有互联网的计算机创建 nuget 包的缓存?
- groovy - Groovy:如何加载属性文件并处理“找不到文件”的情况?