Jump to content

Drivers from CD: Simple Method


a06lp

Recommended Posts

Note that there are a few things different here:

- All used drive letters will be searched for a directory called \drivers

- It assumes that WatchDriverSigningPolicy.exe and SetupCopyOEMInf.exe are in this directory

- These two files are not deleted, only the auto-it script file (which in my case is called t39.au3 in the Windows directory)

Thanks for your own version of the script. It's more versatile to search for drivers in a directory in ALL used drive letters rather than specifing CDROM or FIXED.

Edited by Bilou_Gateux
Link to comment
Share on other sites


I'm having a problem where SetupCopyOEMInf.exe does not finish running before Setup starts driver detection. It gets about halfway through and then detection kicks in during integration. It still finishes, but I don't know if I'm losing a few drivers or not. Is there something I can do about this?

Link to comment
Share on other sites

  • 2 weeks later...

I tried this method for a BroadCom 57xx network interface card and it failed. Although it did try to install it evidenced by the yellowed out Ethernet Controller unter network device in the device manager -- that it would not do before. It is the Dell download R87461.exe where I got the driver. What else can I do to get this NIC installed ? Is it a new Microsoft driver signing issue or what ? Thanks.

Bob.Rein@FAA.GOV

Link to comment
Share on other sites

Rewritten the program. It's now even easier!

run autoit3.exe and presetup.au3 from cd (no need for copying to system32 folder anymore):

i386\WinNT.sif

[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 Autoit3.exe presetup.au3)))"

$OEM$\:

autoit3.exe
presetup.au3
SetupCopyOEMInf.exe
WatchDriverSigningPolicy.exe

$OEM$\presetup.au3

ProcessSetPriority("setup.exe",0)
Run(@ScriptDir & "\WatchDriverSigningPolicy.exe")
ProcessWait("WatchDriverSigningPolicy.exe")
RunWait(@ScriptDir & "\SetupCopyOEMInf.exe Drivers")
ProcessClose("WatchDriverSigningPolicy.exe")
ProcessSetPriority("setup.exe",2)

CD-Layout:

├───$OEM$

│      └───Drivers

│               ├───C-Media CMI8738 6.39

│               └───Laptop

│               │     ├───Infared 12.6

│               │     └───Touchpad

│               ├───Medion SAA7134 2.3.1.0

│               ├───Monitor

│               │     └───AL712

│               ├───nVidia ForceWare 77.72

│               └───Samsung ML-1210

│        AutoIt3.exe

│        PreSetup.au3

│        SetupCopyOEMInf.exe

│        WatchDriverSigningPolicy.exe           

└───I386

          winnt.sif

Thanks for info idle.newbie :hello:

Edited by hp38guser
Link to comment
Share on other sites

Rewritten the program. It's now even easier!

Thanks for info idle.newbie  :hello:

Thanks for this new version. I appreciate the idea not having to hardcoding path (fixed or cdrom disk) like previous scripts.

and thanks for idle.newbie, the writer of Snippet for OemPnPDriversPath, setDevicePath clone

he has a good knowledge of batch scripts. Unfortunately, it is no longer active on this board. :}

Link to comment
Share on other sites

Rewritten the program. It's now even easier....(no need for copying to system32 folder anymore)

Ok, I am going to test this on my next U-DVD.

A small explanation of the 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 (%J\Autoit3.exe %J\presetup.au3)))"

CMD = Starts a new instance of the Windows XP command interpreter

/Q = Turns echo off

/C = Carries out the command specified by string and then terminates

FOR = Runs a specified command for each file in a set of files.

/F = Filenameset - Each file is opened, read and processed before going on to the next file in filenameset.

%I = First Variable name

IN (%SystemRoot%\SYSTEM32\$WINNT$.INF) = location to search (aka - "set")

DO = Specifies the command to carry out for each file.

FOR = Runs a specified command for each file in a set of files.

%J = Second Variable name

IN (%I$OEM$) = location to search (aka - "set")

DO = Specifies the command to carry out for each file.

(IF EXIST %J = Specifies a true condition if the specified filename exists.

(%J\Autoit3.exe %J\presetup.au3))) = run presetup.au3 using autoit3.exe

Edited by a06lp
Link to comment
Share on other sites

$WinNT.sif$ is used to scan for the dospath=?:\ in the [Data] section. However since no quotes can be used in the Arguments section we have to scan the whole file. Pretty much information you got there :)

Link to comment
Share on other sites

Installing Windows from a flat installation D:\source

Running WINNT32.EXE /s:d:\source\i386 /unattend:D:\source\unattend.txt /syspart:c: /makelocalsource and using only digitally signed drivers from OEMs, i have changed my unattended response file UNATTEND.TXT section:

[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 ((%J\hidcon.exe %J\CopyInfs.exe %J\PnPDrvrs)))"

%SystemDrive% after reboot (end of txtmode stage of the setup) and before start of the GUI stage of install (T39)

C:\

├---$WIN_NT$.~LS

│    ├───CopyInfs.exe Pyron's SetupCopyOEMInf.exe 21 Kb renamed to 8.3 naming convention

│    ├───HidCon.exe Hide Console tool HidCon.exe 2 Kb

│    ├───$OEM$

│            └───PnPDrvrs OEM Drivers folder

├---$WIN_NT$.~BT

│    ├───winnt.sif

│    ├───$OEM$

│    └───SYSTEM32

├---WINDOWS

│    ├───SYSTEM32

│    └───$winnt$.inf

├BOOT.INI

├NTDETECT.COM

└ntldr

$WINNT$.INF

dospath=C:\$WIN_NT$.~LS

%I=C:\$WIN_NT$.~LS

%J=C:\$WIN_NT$.~LS\$OEM$

DOS command run at T39=C:\$WIN_NT$.~LS\$OEM$\HidCon.exe C:\$WIN_NT$.~LS\$OEM$\CopyInfs.exe C:\$WIN_NT$.~LS\$OEM$\PnPDrvrs

Note:

My modified WINNT.SIF command don't work for a CD based installation.

dospath value in $WINNT$.INF returns a local HDD path for my install method and returns an install CD path for a CD based installation.

My method don't use AutoIT script but all drivers are copied from source $OEM$\PnPDrvrs to %SystemDrive%\$WIN_NT$.~LS\$OEM$ during install

Edited by Bilou_Gateux
Link to comment
Share on other sites

$WinNT.sif$ is used to scan for the dospath=?:\ in the [Data] section. However since no quotes can be used in the Arguments section we have to scan the whole file. Pretty much information you got there :)

Soo, should i add a dospath=<cd-drive>:\ in [Data]?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...