安装usb设备没有经理提示

时间:2010-05-05 21:34:21

标签: installer usb device-driver

我们有一个USB设备和驱动程序(.inf,libusb.dll,libusb.sys),可以使用Windows的设备安装向导(通过指向.inf文件)安装它。但是,我们需要在不使用向导的情况下安装驱动程序(被动地,因此用户不需要做任何事情)。有谁知道如何实现这一目标?

2 个答案:

答案 0 :(得分:2)

您添加了“installer”标记,因此我假设您正在讨论某种安装包,例如Windows Installer,InstallShield InstallScript等。

如果是这种情况,您应该使用Microsoft的DIFx framework

  

DIFx让您更容易创建   高品质的驱动程序包,   自定义驱动程序的安装   包,允许安装   驱动程序包与   应用软件,并使用   标准Windows API和安装   工具。 DIFx也使它更容易   最终用户诊断设备和   司机问题。最终用户可以   有信心,如果有必要,司机   可以卸载或回滚。

我使用了基于Windows Installer的安装和InstallScript安装的DIFx。非常人性化,易于调试和有效。

答案 1 :(得分:1)

我的同事提出了一个非常有效的答案。看来,除非硬件/驱动程序组合是WHQL签名,否则添加新硬件向导将始终出现在Win XP中。但是,使用以下方法可以让向导中的“搜索”按钮自动找到您的驱动程序。在Windows 7中,没有提示,设备安装就好了。但是,您需要注意64位计算机,因为它们的签名执行更加严格。

以下是the whole document的相关摘录:

使用DIFxAPi合并模块。 (阅读一个好的introduction to drivers in Windows, the use of INF files, and DIFxAPP。)DIFxAPI合并模块包含在WDK的'WDDK // redist \ DIFx \ DIFxApp \ MergeModule \'目录中。合并模块可以包含在MSI包中,可以设置为安装多个设备驱动程序。以下是使用DIFxAPP合并模块创建MSI的步骤:

  1. 在setup文件夹中,在驱动程序包的Application Folder中创建一个单独的目录,并将驱动程序文件添加到该文件夹​​中。
  2. 将DIFxApp.msm添加到安装项目中。
  3. 构建设置
  4. 使用Orca编辑MSI数据库表并将INF组件添加到DIFxAPP合并模块表。

    1. Orca安装包含在Windows SDK的“C:\ Program Files \ Microsoft SDKs \ Windows \ v7.0 \ Bin”目录中。 (Windows SDK可以是downloaded from Microsoft
    2. 运行Orca并选择需要修改的MSI包。
      • 阅读第5部分以了解自动化。
    3. 在“文件”表中,找到要安装的驱动程序包的INF文件,然后复制“组件”值。
    4. 在MsiDriverPackages表中创建一个新行。将Component值添加到Component字段中。可以使用以下flags(尽管Windows 7会忽略一些):

      • 0 - 未设置(默认)
      • 1 - 强制安装驱动程序,即使当前安装的驱动程序是 比正在安装的驱动程序更好的匹配
      • 2 - 禁止消息框告诉用户在驱动程序后插入设备 已安装。
      • 4 - 禁止在驱动程序的添加/删除程序中添加条目 卸载主应用程序时将卸载驱动程序。
      • 8 - 安装未签名的驱动程序包
      • 16 - 卸载期间删除驱动程序二进制文件。
    5. 保存MSI。为了使该过程自动化,可以将MSI数据库的编辑记录到变换中,然后可以在后构建过程中应用变换。
      1. 在Orca中打开MSI。
      2. 选择转换 - >新转换
      3. 完成上述指示中的步骤3和4。
      4. 选择Tranform->生成变换并保存变换。
      5. 将以下行添加到安装项目的后期构建中 MsiDb.exe -t transform.mst -d $(TargetDir)\ DriverInstall.msi 注意:MsiDB.exe随Microsoft SDK一起提供,位于 C:\ Program Files \ Microsoft SDKs \ Windows \ v7.0 \ Bin
  5. 如果从MSI安装时出错(例如我收到错误代码2356,最终导致Flag值无效),请使用Orca的Validate函数查看是否有错误。编辑:修复这些错误仍然没有摆脱错误。我记得读过inf文件应该在他们自己的子目录中,但这也不能解决我的问题。