在驱动程序安装期间重新扫描设备树以更改硬件

时间:2010-01-27 07:38:09

标签: installer driver installshield device-driver

我正在使用 InstallShield 来安装我的应用程序,驱动程序和服务。 只有在设备管理器中找到了硬件ID时,才需要安装plug-N-play驱动程序。使用DPInst.exe完成驱动程序安装。 我的问题是,用户有时可以手动卸载驱动程序(安装后甚至卸载“其他设备”下的“未知驱动程序”)然后我就可以了虽然设备已插入,但在设备树中找不到硬件ID。 如果我在安装期间使用CM_Reenumerate_DevNode_Ex(相当于“扫描新硬件”的代码)重新扫描设备树,我可以找到硬件ID,但这会显示“Found新硬件向导“

是否有重新扫描设备树但是禁止“找到新硬件向导”或者避免重新扫描但仍然确保系统中存在我的设备硬件ID?

2 个答案:

答案 0 :(得分:0)

听起来你的方式错了。如果您有基于MSI的安装,为什么不使用DIFxApp而不是DPInst? 至于“发现新硬件”向导,你需要两件事:

  1. 确保您的inf文件正确(以便您的驱动程序与硬件ID相关联)
  2. 从MS获取WHQL签名。 XP需要此步骤,因为不受信任的驱动程序不会自动分配给设备。使用Vista和7,您可以自己对驱动程序进行数字签名,但在安装过程中会收到警告,询问用户是否希望信任该发布者(您)。

答案 1 :(得分:0)

我正在写一个新的答案,因为我们已经对我的旧答案提出了太多评论,其内容是基于对情况的一个小误解。

正如我现在所理解的,实际问题是重新扫描设备时弹出的“添加新硬件”向导, 安装驱动程序之前。不幸的是,只要找不到合适的驱动程序来处理系统中的新设备,就会弹出此向导,因此为了克服它,唯一的选择是确保系统中存在这样的驱动程序。这导致我可以看到两种可能的解决方案:

  1. 首先安装软件,并确保您的驱动程序适合该设备(inf格式正确,并且您有WHQL签名)。据我所知,这不是一个选项,因为你不想在没有连接设备的机器上安装驱动程序(我很想知道为什么)。
  2. 确保系统中的其他驱动程序适合处理它。在这种情况下,您需要选择一个内置驱动程序(如果它作为您的设备的功能驱动程序,它不会造成严重破坏),并为您的设备提供匹配的兼容ID - 这将导致内置驱动程序适合。这样,您无需在重新扫描设备后等待用户,但根据您的设备,可能无法找到合适的内置驱动程序。