【问题标题】:Driver installation problem in Win7Win7驱动安装问题
【发布时间】:2010-11-18 16:55:11
【问题描述】:

我有一个使用 installshield 创建的 MSI。 当我在 Windows XP 上安装该 MSI 时,会检测到设备。 .sys 文件在 C:\Windows\system32\drivers 目录下创建,C:\Windows\system32\driverstore 也有相关的设备文件夹。 但同样的 MSI 无法在 Window7 上安装驱动程序。也就是说,在 C:\Windows\system32\drivers 目录下既没有检测到设备,也没有创建 .sys 文件,C:\Windows\system32\driverstore 也没有相关的设备文件夹。

我想知道 MSI 出了什么问题。 MSI 在 Windows7 上安装内核驱动程序需要哪些设置

提前感谢您提供任何有用的信息。

【问题讨论】:

  • 您买得起 DriverGenius 软件吗?无论为什么您的 MSI 文件没有安装好,该程序都会搜索并找到适合您系统的驱动程序。我在 Win 7 上使用它,它工作正常。
  • 我使用自己开发的驱动程序创建了一个 MSI。所以,我想知道安装它需要哪些设置。
  • 驱动包签名了吗?你使用 legacyMode 吗?
  • 您的安装程序中可能存在某些情况,阻止根据检测到的操作系统安装驱动程序。安装程序代码是什么样的。安装程序日志文件说明了没有安装功能\组件\文件的原因(如果有的话)?

标签: windows-7 device-driver


【解决方案1】:

如果安装程序是为 32 位平台构建的。它无法在 32 位进程下安装 64 位驱动程序。这可能是您的问题的原因。

要解决此问题,您可以创建自定义操作,根据 Windows 平台,自定义操作将调用 DPInst.exe 用于 32 位或 64 位安装驱动程序,

本文Driver Installation for 32-bit and 64 bit Platforms给出了如何在64位平台上使用32位安装程序安装64位驱动包的示例代码

【讨论】:

    【解决方案2】:

    我认为 InstallShield(现代版本)集成了 DIFx(驱动程序安装框架),它是 WDK 的一部分,以合并模块和 DLL 的形式出现。无论哪种方式,您都可以使用标准工具来集成合并模块,即使 InstallShield 不包括直接支持。

    然而,

    “签名”是不够的。从 Vista 开始,您需要驱动程序以一种特殊方式签名,其中包括根证书(在执行 signtool sign 时传递 /ac)作为签名的一部分(在启动过程的早期,没有可用的证书存储)。此外,在安装过程中,Setup API 实际上会验证属于驱动程序的 CAT 文件是否已由 MS 交叉签名(通过 WHQL)。你有一个 CAT 文件和一个正确的 INF 文件,并且 CAT 文件已经过交叉签名,对吧?

    如果您有 signtool(Windows SDK 或 WDK),请使用

    signtool verify /kp /v <filename>
    

    验证签名(/v 表示详细,如果您只对返回码感兴趣,可以使用/q)。

    如果这些验证失败,那已经是根本原因之一。

    对 CAT 和 SYS 文件执行此检查。

    【讨论】:

      猜你喜欢
      • 2019-01-07
      • 1970-01-01
      • 2018-02-27
      • 1970-01-01
      • 2015-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多