无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 26777|回复: 73
打印 上一主题 下一主题

[发布] DriverIndexer - 驱动索引加载器 V2.0.0

    [复制链接]
跳转到指定楼层
1#
发表于 2021-5-18 22:21:31 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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等终端来运行。注意:请使用管理员身份运行终端。

创建驱动索引文件

索引文件通常在首次使用驱动包时创建,后续如驱动包内容发生变动,需要重建索引。
  1. DriverIndexer.exe index <驱动包/目录路径> <索引文件保存路径>
复制代码
- 选项
  • `--password <密码>`:指定驱动包密码

- 示例
  • DriverIndexer.exe index D:\netcard D:\index.json
  • DriverIndexer.exe index D:\netcard.7z D:\index.json

安装驱动程序

使用索引文件或直接指定驱动包路径进行安装。
  1. 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
安装离线系统驱动

安装离线系统驱动库中的驱动,未指定系统盘则全盘搜索系统盘。
  1. DriverIndexer.exe install-offline [系统盘路径]
复制代码
选项
  • `--missing-only`:仅安装未安装驱动的设备,默认安装所有匹配设备的驱动。

  • `--class <驱动类别>`:仅安装指定类别驱动。

查看驱动索引信息


查看索引子命令,用于查看驱动索引文件中的信息。

  1. DriverIndexer.exe info <索引文件路径>
复制代码
示例
  • DriverIndexer.exe info D:\netcard.json


列举驱动


列出当前系统或离线系统的驱动存储中的驱动。
  1. DriverIndexer.exe list <系统盘路径>
复制代码
选项
  • `--class <驱动类别>`:指定驱动类别,仅显示指定类别驱动。
  • `--provider <驱动供应商>`:指定驱动供应商,仅显示指定供应商驱动。

导入驱动


将驱动导入到系统驱动存储区。
  1. DriverIndexer.exe import <系统盘路径> <驱动路径>
复制代码
选项
  • `--password <密码>`:指定驱动包密码,用于解压驱动包。
  • `--match-device`: 匹配当前系统设备,默认匹配所有设备。
导出驱动

从系统驱动存储中导出特定驱动。
  1. DriverIndexer.exe export <系统盘路径> <导出目录>
复制代码
选项
  • `--inf <驱动名称>`:指定驱动名称,仅导出指定驱动。
  • `--class <驱动类别>`:指定驱动类别,仅导出指定类别驱动。
  • `--provider <驱动供应商>`:指定驱动供应商,仅导出指定供应商驱动。
删除驱动

从系统驱动存储中删除驱动。
  1. DriverIndexer.exe remove <系统盘路径>
复制代码
选项
  • `--inf <驱动名称>`:指定驱动名称,仅删除指定驱动。
  • `--class <驱动类别>`:指定驱动类别,仅删除指定类别驱动。
  • `--provider <驱动供应商>`:指定驱动供应商,仅删除指定供应商驱动。
  • `--all`: 删除所有驱动。

创建自解压驱动程序包

将 DriverIndexer 与驱动包合并,生成一个单一的 EXE 文件。这个 EXE 将自动运行,并按需解压和安装内置驱动。
> 温馨提示:驱动包不能设置密码,否则会导致驱动安装失败。
  1. DriverIndexer.exe pack <驱动包/目录路径> <输出EXE路径>
复制代码
示例
  • DriverIndexer.exe pack D:\netcard D:\netcard.exe
  • DriverIndexer.exe pack D:\netcard.7z D:\netcard.exe

驱动文件整理

将一个目录内的 INF 文件按照厂商、类别等规则进行分类和重命名。
  1. 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 程序

DriverIndexer.png (33.8 KB, 下载次数: 394)

DriverIndexer.png

评分

参与人数 22无忧币 +115 收起 理由
FV4371 + 5 赞一个!
纯脆entropy + 5 赞一个!
2011wolfsina + 5 有密码的7z驱动包怎样指定密码?
rzp428 + 5 赞一个!
9001 + 5 火!
612731 + 5 赞一个!
wynew8au + 5 很给力!
whyme22 + 5
hhh333 + 5 很给力!
ttt0001 + 5 很给力!
2012雨晨绿软 + 5 想问下支持相对变量路径吗?
ksafei + 5 赞一个!
freesoft00 + 5
2012jiashanni + 5 赞一个!
826773297 + 5 赞一个!
slore + 5 赞一个!
tingting + 5 赞一个!
dfw9 + 5 神马都是浮云
hsmy + 5 赞一个!
nttwqz + 5 论坛真是卧虎藏龙!
我是小青蛙 + 10 赞一个!
Lightning + 5 赞一个!

查看全部评分

2#
发表于 2021-5-18 23:04:49 来自手机 | 只看该作者
支持一下
回复

使用道具 举报

3#
发表于 2021-5-19 01:25:01 来自手机 | 只看该作者
支持一下
回复

使用道具 举报

4#
发表于 2021-5-19 07:53:41 来自手机 | 只看该作者
支持
回复

使用道具 举报

5#
发表于 2021-5-19 08:07:06 | 只看该作者
好工具,这样对于自定义驱动来说非常有用。
回复

使用道具 举报

6#
发表于 2021-5-19 08:08:07 | 只看该作者
与Lightning大佬的一块发出来了,棒棒的
回复

使用道具 举报

7#
发表于 2021-5-19 08:16:34 | 只看该作者
好工具,支持了。
回复

使用道具 举报

8#
发表于 2021-5-19 08:25:38 来自手机 | 只看该作者
谢谢分享好工具
回复

使用道具 举报

9#
发表于 2021-5-19 09:07:16 | 只看该作者
一直在用,很不错

点评

你就没用过,,,还说你一直再用,,差评。。差评,必须给差评。。。  详情 回复 发表于 2021-5-19 16:09
回复

使用道具 举报

10#
发表于 2021-5-19 11:18:44 | 只看该作者
下载试用,感谢分享
回复

使用道具 举报

11#
发表于 2021-5-19 16:09:53 来自手机 | 只看该作者
826773297 发表于 2021-5-19 09:07
一直在用,很不错

你就没用过,,,还说你一直再用,,差评。。差评,必须给差评。。。
回复

使用道具 举报

12#
发表于 2021-5-19 17:32:50 | 只看该作者
一直在用,必须支持
回复

使用道具 举报

13#
发表于 2021-5-19 19:58:51 | 只看该作者
老师辛苦了,有32位的吗?

点评

32位之后会发布,现在还处于测试阶段  详情 回复 发表于 2021-5-19 21:23
回复

使用道具 举报

14#
发表于 2021-5-19 20:16:01 | 只看该作者
这个支持WIM格式吗?我一般都是小的包用CAB或7Z,大的包如显卡驱动用WIM,挂一下倒也快。

点评

文件格式不限制,只要能解压、里面有驱动就行了  详情 回复 发表于 2021-5-19 21:24
回复

使用道具 举报

15#
 楼主| 发表于 2021-5-19 21:23:38 来自手机 | 只看该作者
rzp428 发表于 2021-5-19 19:58
老师辛苦了,有32位的吗?

32位之后会发布,现在还处于测试阶段

点评

谢谢!期待中......  详情 回复 发表于 2021-5-19 22:26
回复

使用道具 举报

16#
 楼主| 发表于 2021-5-19 21:24:31 来自手机 | 只看该作者
hhh333 发表于 2021-5-19 20:16
这个支持WIM格式吗?我一般都是小的包用CAB或7Z,大的包如显卡驱动用WIM,挂一下倒也快。

文件格式不限制,只要能解压、里面有驱动就行了

点评

试了,确实对WIM也可以。这个是用什么工具编写的?  详情 回复 发表于 2021-5-19 21:38
回复

使用道具 举报

17#
发表于 2021-5-19 21:38:46 | 只看该作者
834772509 发表于 2021-5-19 21:24
文件格式不限制,只要能解压、里面有驱动就行了

试了,确实对WIM也可以。这个是用什么工具编写的?

点评

使用Rust编写的(Rust是一门系统级编程语言,效率略高于C++,与C语言不相上下)  详情 回复 发表于 2021-5-19 22:29
回复

使用道具 举报

18#
发表于 2021-5-19 21:52:13 | 只看该作者
本帖最后由 hhh333 于 2021-5-19 21:53 编辑

看了一下,工具是不是要调用7z来处理包里面的文件?只要7z能处理的包都可以安装。这样的话,如果系统里面已经有7z.exe/7z.dll/devcon.exe,是不是可以把这个工具做得很小?

点评

是的,但是由于Rust程序体积很膨胀,即便外置7z、Devcon程序也有1MB+,所以还是内置好一些。  详情 回复 发表于 2021-5-19 22:32
回复

使用道具 举报

19#
发表于 2021-5-19 22:26:01 | 只看该作者
834772509 发表于 2021-5-19 21:23
32位之后会发布,现在还处于测试阶段

谢谢!期待中......
回复

使用道具 举报

20#
 楼主| 发表于 2021-5-19 22:29:33 来自手机 | 只看该作者
hhh333 发表于 2021-5-19 21:38
试了,确实对WIM也可以。这个是用什么工具编写的?

使用Rust编写的(Rust是一门系统级编程语言,效率略高于C++,与C语言不相上下)
回复

使用道具 举报

21#
 楼主| 发表于 2021-5-19 22:32:39 来自手机 | 只看该作者
hhh333 发表于 2021-5-19 21:52
看了一下,工具是不是要调用7z来处理包里面的文件?只要7z能处理的包都可以安装。这样的话,如果系统里面已 ...

是的,但是由于Rust程序体积很膨胀,即便外置7z、Devcon程序也有1MB+,所以还是内置好一些。

点评

哦,可是,然而7z就有1M+,我以为可减少1M+至0.5M左右。  详情 回复 发表于 2021-5-19 23:35
回复

使用道具 举报

22#
发表于 2021-5-19 23:35:18 | 只看该作者
834772509 发表于 2021-5-19 22:32
是的,但是由于Rust程序体积很膨胀,即便外置7z、Devcon程序也有1MB+,所以还是内置好一些。

哦,可是,然而7z就有1M+,我以为可减少1M+至0.5M左右。

点评

现在的1.4MB也是UPX压缩过的,压缩前有4MB左右  详情 回复 发表于 2021-5-20 06:26
回复

使用道具 举报

23#
 楼主| 发表于 2021-5-20 06:26:32 来自手机 | 只看该作者
hhh333 发表于 2021-5-19 23:35
哦,可是,然而7z就有1M+,我以为可减少1M+至0.5M左右。

现在的1.4MB也是UPX压缩过的,压缩前有4MB左右

点评

推荐使用C语言,体积小,效率高。  详情 回复 发表于 2021-5-20 10:37
回复

使用道具 举报

24#
发表于 2021-5-20 10:20:25 来自手机 | 只看该作者
标题可以改成驱动安装器
回复

使用道具 举报

25#
发表于 2021-5-20 10:22:17 | 只看该作者
经过比较,确实要比PECMD DEVI *sub XXXXX要快,主要是PECMD安装成功后还会继续尝试扫描安装其他目录的驱动(dpinst.exe的逻辑也是这样的)。
回复

使用道具 举报

26#
发表于 2021-5-20 10:37:41 | 只看该作者
834772509 发表于 2021-5-20 06:26
现在的1.4MB也是UPX压缩过的,压缩前有4MB左右

推荐使用C语言,体积小,效率高。

点评

Rust和C语言效率是差不多的,而且C语言没有Rust好写  详情 回复 发表于 2021-5-20 12:03
回复

使用道具 举报

27#
发表于 2021-5-20 11:14:28 | 只看该作者
经过测试效率比较高,不错。
  1. @echo off
  2. echo.|time>t.log
  3. DriverIndexer.exe load-driver DRV_VGA.wim
  4. pecmd.exe kill explorer
  5. echo.|time>>t.log
复制代码
两个时间之间相差13''49
又把上述包解压后,把上述第三行改成DriverIndexer.exe load-driver DRV_VGA即直接指定驱动目录,安装驱动约耗时:11''76,解压与不解压只相差1''73,也即不到2秒,而这个包有250多M,解压后700多M,如果全部解压2秒时间绝对做不到
又用PECMD DEVI *sub比较,耗时要多一倍


点评

其实也可以用索引法,在GitHub上有详细的说明,可以使得速度介于压缩包与解包驱动之间,适用于大文件或固定的驱动包  详情 回复 发表于 2021-5-20 12:07
回复

使用道具 举报

28#
发表于 2021-5-20 11:49:57 | 只看该作者
请尽快发布32位版,当然有空做一下调用工具外置版更好,再减点体积就更OK了。
回复

使用道具 举报

29#
 楼主| 发表于 2021-5-20 12:03:12 来自手机 | 只看该作者
wynew8au 发表于 2021-5-20 10:37
推荐使用C语言,体积小,效率高。

Rust和C语言效率是差不多的,而且C语言没有Rust好写
回复

使用道具 举报

30#
 楼主| 发表于 2021-5-20 12:07:59 来自手机 | 只看该作者
hhh333 发表于 2021-5-20 11:14
经过测试效率比较高,不错。
两个时间之间相差13''49
又把上述包解压后,把上述第三行改成DriverIndexer. ...

其实也可以用索引法,在GitHub上有详细的说明,可以使得速度介于压缩包与解包驱动之间,适用于大文件或固定的驱动包

点评

看了说明,确实使用很简洁,32位版呢,想测试一下  详情 回复 发表于 2021-5-20 15:26
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-11-27 20:04

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表