本帖最后由 834772509 于 2025-11-27 17:34 编辑
简介
DriverIndexer是一个高效、智能的驱动程序管理和安装命令行工具。它专注于解决传统驱动包安装速度慢、资源浪费的问题。
- 按需解压 - 仅解压当前设备所需的驱动程序,大幅缩短安装时间。
- 智能匹配 - 自动识别硬件 ID,精准匹配最佳驱动程序。
- 多格式支持 - 支持驱动程序目录、7z 压缩包等多种驱动包格式。
- 高性能 - 利用多线程和智能索引技术提升安装和管理速度。
- 离线支持 - 支持对离线 Windows 系统进行驱动程序的导入、安装与管理,不依赖 DISM 环境。
- 命令行界面 - 支持静默安装和自动化部署,方便集成到维护脚本中。
- 驱动管理 - 提供系统驱动程序的导入、导出和删除功能。
- 驱动打包 - 可将驱动与程序合并为单一自解压可执行文件(EXE)。
DriverIndexer 的价值?
传统的驱动包安装方式,需要将整个驱动包(可能包含几 GB 数据)全部解压,再调用 `Dpinst` 或类似工具进行安装,这不仅消耗大量时间,还浪费磁盘空间。 DriverIndexer通过建立索引文件,实现了根据设备需求按需解压和自动安装的功能,极大地提升了安装效率。
索引文件是 `DriverIndexer` 的核心。由于硬件 ID 列表存储在 INF 文件内部,我们首先需要创建 `硬件 ID 列表` 与 `驱动包内驱动文件路径` 的对应关系。这一关系即是索引(JSON 格式)。 通过索引,程序能够迅速确定设备所需的驱动程序,从而实现精准的按需解压和安装。
软件架构
使用`Rust`语言编写,调用 WindowsAPI 获取硬件信息、安装设备驱动。
驱动匹配规则 - 匹配当前系统架构
- 匹配当前操作系统版本
- 匹配当前设备的硬件 ID
- 匹配当前设备的兼容 ID
驱动排序规则 - 签名状态(微软签名 > 其他签名 > 未签名)
- 匹配分数(最强优先)
- 驱动日期(最新优先)
- 驱动版本(最新优先)
使用说明本程序为命令行程序,故需要在其后面接参数运行,如直接双击程序将会出现“闪退”现象,您可通过cmd、PowerShell等终端来运行。注意:请使用管理员身份运行终端。
创建驱动索引文件
索引文件通常在首次使用驱动包时创建,后续如驱动包内容发生变动,需要重建索引。 - DriverIndexer.exe index <驱动包/目录路径> <索引文件保存路径>
复制代码- 选项 `--password <密码>`:指定驱动包密码
- 示例 安装驱动程序
使用索引文件或直接指定驱动包路径进行安装。 - DriverIndexer.exe install <驱动包/目录路径> [索引文件路径] [选项]
复制代码- 驱动路径格式:压缩包(限 7zip 所支持的格式)、目录格式。
- 支持通配符(`*`、`?`),用于匹配多个驱动包。
- 不使用索引时将自动创建临时索引
选项 - `--password <密码>`:指定驱动包密码,用于解压驱动包。
- `--class <驱动类别>`:指定驱动类别,仅安装指定类别驱动。
- `--missing-only`:仅安装未安装驱动的设备,默认安装所有匹配设备的驱动。
- `--extract-path <解压目录>`:仅解压驱动,不安装驱动。默认解压到临时目录。
示例 - DriverIndexer.exe install D:\netcard
- DriverIndexer.exe install D:\netcard.7z
- DriverIndexer.exe install D:\netcard\*.7z
- DriverIndexer.exe install D:\netcard.7z netcard.json
- DriverIndexer.exe install D:\netcard\*.7z D:\netcard\*.json
安装离线系统驱动
安装离线系统驱动库中的驱动,未指定系统盘则全盘搜索系统盘。
- DriverIndexer.exe install-offline [系统盘路径]
复制代码 选项
- `--missing-only`:仅安装未安装驱动的设备,默认安装所有匹配设备的驱动。
- `--class <驱动类别>`:仅安装指定类别驱动。
查看驱动索引信息
查看索引子命令,用于查看驱动索引文件中的信息。
- DriverIndexer.exe info <索引文件路径>
复制代码 示例
- DriverIndexer.exe info D:\netcard.json
列举驱动
列出当前系统或离线系统的驱动存储中的驱动。
- DriverIndexer.exe list <系统盘路径>
复制代码 选项
- `--class <驱动类别>`:指定驱动类别,仅显示指定类别驱动。
- `--provider <驱动供应商>`:指定驱动供应商,仅显示指定供应商驱动。
导入驱动
将驱动导入到系统驱动存储区。
- DriverIndexer.exe import <系统盘路径> <驱动路径>
复制代码 选项
- `--password <密码>`:指定驱动包密码,用于解压驱动包。
- `--match-device`: 匹配当前系统设备,默认匹配所有设备。
导出驱动
从系统驱动存储中导出特定驱动。
- DriverIndexer.exe export <系统盘路径> <导出目录>
复制代码 选项
- `--inf <驱动名称>`:指定驱动名称,仅导出指定驱动。
- `--class <驱动类别>`:指定驱动类别,仅导出指定类别驱动。
- `--provider <驱动供应商>`:指定驱动供应商,仅导出指定供应商驱动。
删除驱动
从系统驱动存储中删除驱动。
- DriverIndexer.exe remove <系统盘路径>
复制代码 选项
- `--inf <驱动名称>`:指定驱动名称,仅删除指定驱动。
- `--class <驱动类别>`:指定驱动类别,仅删除指定类别驱动。
- `--provider <驱动供应商>`:指定驱动供应商,仅删除指定供应商驱动。
- `--all`: 删除所有驱动。
创建自解压驱动程序包
将 DriverIndexer 与驱动包合并,生成一个单一的 EXE 文件。这个 EXE 将自动运行,并按需解压和安装内置驱动。
> 温馨提示:驱动包不能设置密码,否则会导致驱动安装失败。
- DriverIndexer.exe pack <驱动包/目录路径> <输出EXE路径>
复制代码 示例
- DriverIndexer.exe pack D:\netcard D:\netcard.exe
- DriverIndexer.exe pack D:\netcard.7z D:\netcard.exe
驱动文件整理
将一个目录内的 INF 文件按照厂商、类别等规则进行分类和重命名。
- DriverIndexer.exe organize <驱动路径> <导出目录>
复制代码
示例
- DriverIndexer.exe organize D:\netcard D:\netcard-organized
更多帮助
为便于使用者快速体验,故此处仅列出基本使用,更多用法可前往 https://github.com/834772509/DriverIndexer 查看,项目开源,欢迎Star。
开源许可 DriverIndexer 使用 GPL V3.0 协议开源,请尽量遵守开源协议。 致谢
- Hydrogen
- Lightning
- Skyfree
- 红毛樱木
- 小鸭子
- 毛利
- 优捷易
下载
DriverIndexer-x86.exe
(1.07 MB, 下载次数: 8)
DriverIndexer-x64.exe
(1.21 MB, 下载次数: 10)
历史版本
DriverIndexer-x86.exe
(1.26 MB, 下载次数: 407)
DriverIndexer-x64.exe
(1.41 MB, 下载次数: 772)
V2.0.0 更新日志
新增
- 驱动程序管理,支持在线/离线导入/导出和查看
- 驱动程序索引结构、驱动程序签名和其他字段
- 用于弹出无驱动设备虚拟 CD-ROM 驱动器的命令和选项
- 设备扫描命令
- 用于安装离线系统驱动程序的命令
- 驱动程序和索引文件匹配验证
- 新增强制安装驱动程序的选项
- 命令行程序提示符
- 支持多种语言:繁体中文
更改- 使用 setup API 解析 INF 文件
- 使用 setup API 获取硬件信息
- 当驱动程序和索引不匹配时,自动生成索引
- DEBUG 选项功能现在设置为调试选项;原有的 DEBUG 输出日志已更改为日志选项
- 7-Zip 更新至 25.1.0.0
修复
- 通过指定硬件 ID 参数(原为 INF 硬件 ID)改进了驱动程序安装
- 改进了驱动程序匹配算法
- 改进了兼容设备信息的重复匹配
- 提高了驱动程序匹配性能
- 改进了索引文件字段
- 改进了内部错误处理逻辑(使用 anyhow)
- 改进了本地化文本
- 改进了驱动程序类别、版本和日期的大小写提取
移除
- Devcon 程序
|