2

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

无论如何要重新扫描设备树但禁止“找到新硬件向导”或避免重新扫描但仍确保系统中存在我的设备硬件 ID?

4

2 回答 2

0

听起来你的做法是错误的。如果您有基于 MSI 的安装,为什么不使用 DIFxApp 而不是 DPInst?至于“找到新硬件”向导,您需要在这里做两件事:

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

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

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

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