- 论坛徽章:
- 0
|
分内容引用或翻译自(
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,在[GuiUnattended]段中加入两行
Copy code
[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窗口)
Copy code
[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\ 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是否存在,若存在,则将其解压到硬盘上,然后到解压后的文件夹中去
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/69856/showart_705686.html |
|