风一样的男孩 发表于 2008-10-29 08:26:54

[分享]直接从光盘上加载驱动程序的方法

[分享]直接从光盘上加载驱动程序的方法
          部分内容引用或翻译自(http://www.msfn.org/board/index.php?showtopic=51406),并对错误部分进行了修正。
          做无人值守安装光盘的时候,为了适用于不同的安装环境,往往需要在光盘中集成大量的驱动
程序。往常的做法是将驱动程序放在$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,在段中加入两行

Quote:
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窗口)



Quote:
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



Quote:原理:
      当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文件。
页: [1]
查看完整版本: [分享]直接从光盘上加载驱动程序的方法