社区应用 最新帖子 精华区 社区服务 会员列表 统计排行
  • 1854阅读
  • 6回复

直接从光盘上加载驱动程序的方法

楼层直达
级别: 管理员
发帖
86
飞翔币
5177
威望
508
飞扬币
329
信誉值
0
        做无人值守安装光盘的时候,为了适用于不同的安装环境,往往需要在光盘中集成大量的驱动
程序。往常的做法是将驱动程序放在$OEM$\$1\Drivers中,若光盘中集成了大量的驱动程序,(比
如集成完整的BTS驱动包),那么除了在Winnt.sif的OemPnPDriversPath = 中要加上长串的路径外,
安装时将花费大量的时间来复制文件到硬盘上。

如何改变这个局面,可否将驱动程序放到光盘上直接使用呢?idle.newbie 和 hp38guser 提供
了简单的方法,只需要3步即可实现:

1、下载DriverFiles.zip(http://www.msfn.org/staff/Alanoll/DriverFiles.zip),并将其
解压到$OEM$\中(解压后将生成6个文件:7za.exe, Drivers.cmd, nircmd.exe, Process.exe,
SetupCopyOEMInf.exe, WatchDriverSigningPolicy.exe)
2、打开winnt.sif,在[GuiUnattended]段中加入两行


引用

[GuiUnattended]
DetachedProgram=".\system32\cmd.exe"
Arguments="/Q /C FOR /F %I IN (%SystemRoot%\SYSTEM32\$WINNT$.INF) DO (FOR %J IN (%I\$OEM$) DO (IF EXIST %J (start /min /D%J Drivers.cmd)))"

(使用以上脚本将会显示处理文件的cmd窗口)




引用
[GuiUnattended]
DetachedProgram=".\system32\cmd.exe"
Arguments="/Q /C FOR /F %I IN (%SystemRoot%\SYSTEM32\$WINNT$.INF) DO (FOR %J IN (%I\$OEM$) DO (IF EXIST %J (start /min /D%J NirCmd.exe exec hide Drivers.cmd)))"

(使用以上脚本将不会显示处理文件的cmd窗口)


3、将所有的驱动程序放到$OEM$\Drivers 中:
注意:如果是N合一的光盘,请注意目录名中不要带空格,否则无法实现功能
如CD:\XP Pro\$OEM$\Drivers\nVidiaForceWare77.72\ <-- 无法工作
CD:\XP-Pro_A\$OEM$\Drivers\nVidiaForceWare77.72\ <-- 可以工作
正确的光盘文件夹如下所示:

├───$OEM$
│.......├───Drivers
│................├───C-Media CMI8738 6.39
│................├───Medion SAA7134 2.3.1.0
│................├───Monitor
│........................├───AL712
│................├───nVidia ForceWare 77.72
│................├───Samsung ML-1210
│................├───Laptop
│........................├───Touchpad
│........................├───Infared 12.6
│.......├───7za.exe
│.......├───Drivers.cmd
│.......├───nircmd.exe
│.......├───Process.exe
│.......├───SetupCopyOEMInf.exe
│.......├───WatchDriverSigningPolicy.exe
├───I386
│.......├───winnt.sif




引用
原理:
      当Windows安装程序读取winnt.sif的GuiUnattended段后,将运行Drivers.cmd,Drivers.cmd批处理首先会暂停Windows的安装程序,然后执行WatchDriverSigningPolicy.exe使Windows接受未签名的驱动程序安装,批处理文件会检查是否有压缩后的驱动程序包,如果有,将其解压。然后运行SetupCopyOEMInf.exe对$OEM$\Drivers文件夹其下的每个子文件夹进行扫描,并处理所有的.inf文件(复制指定的.inf文件到%windir%\Inf中),这样,Windows在检查硬件设备后将会找到所有的即插即用硬件的驱动程序。然后继续Windows的安装进程。由于该动作在Windows检查硬件设备之前完成,所以Windows可以找到Drivers文件夹中的驱动程序。

    若需要节省空间,将驱动程序打包后存放到光盘中,请打包为.7z格式,并以Drivers.7z为文件名放在$OEM$下。批处理会检测Drivers.7z是否存在,若存在,则将其解压到硬盘上,然后到解压后的文件夹中去处理.inf文件。
 
技术问题请勿PM,直接在求助区发帖大家一起研究。
级别: 光盘新手
发帖
207
飞翔币
335
威望
13
飞扬币
780
信誉值
0
只看该作者 1 发表于: 2008-09-09
学习一下啊!
级别: 光盘初级
发帖
230
飞翔币
387
威望
268
飞扬币
1353
信誉值
0

只看该作者 2 发表于: 2008-09-09
真要加载成功还需要实践
级别: 光盘见习
发帖
72
飞翔币
335
威望
16
飞扬币
405
信誉值
0
只看该作者 3 发表于: 2008-09-11
谢谢分享
收藏了
级别: 光盘见习
发帖
26
飞翔币
335
威望
13
飞扬币
1360
信誉值
0
只看该作者 4 发表于: 2008-09-12
试下下,如果行,则是很有价值的方法,做半Ghost封装也用得上.
级别: 光盘见习
发帖
26
飞翔币
335
威望
13
飞扬币
1360
信誉值
0
只看该作者 5 发表于: 2008-09-12
诚意请教一下楼主:


你肯定要在T39时起动这个程式(驱动选择程序),请问它的exe文件和ini文件需要摆放在何处,是放在与I386,$OEM$的同级目录吗?还请教配置文件的修改.

多谢!
级别: 光盘见习
发帖
26
飞翔币
335
威望
13
飞扬币
1360
信誉值
0
只看该作者 6 发表于: 2008-09-12
如果能学通这道,作为业余爱好者基本上可以自已接受自已了。

在线等复,有劳费神.
多谢!