Help - Search - Members - Calendar
Full Version: Drivers from CD: Simple Method
MSFN Forums > Unattended Windows Discussion & Support > Device Drivers
Pages: 1, 2, 3, 4, 5

   
Google Internet Forums Unattended CD/DVD Guide
a06lp
Drivers From CD (Simple Method)


Updated: 11/08/05 (The old AutoIt Method is available here.)

This is not my method. Major thanks to idle.newbie and hp38guser, as most of this is their work.
Thanks also go out to Pyron for making SetupCopyOEMInf.exe and WatchDriverSigningPolicy.exe, which are used in this method.
The info from this outline is from this post, and, more specifically: here, here, and here.

This is a method of automatically installing drivers (which are located on your CD), for devices that are plugged into the computer that WindowsXP is being installed on. This new way uses a Batch file. Why another way, you ask? The reason is simple:
This method does not need the use of a FAKE setup.exe, nor does it need extra lines in TXTSETUP.SIF (like other methods do). It's very simple and straightforward.

It's as easy as 1, 2, 3:

1. Download the attached zip file, and unzip its contents to $OEM$\.
(There are 6 files in the zip: 7za.exe, Drivers.cmd, nircmd.exe, Process.exe, SetupCopyOEMInf.exe, WatchDriverSigningPolicy.exe)

(These files will run from the CD, and are never copied to the Hard Drive.)

2. Open up winnt.sif (located in i386), and add two lines under [GuiUnattended], as shown below:

If you WANT the cmd window (batch file) to show, use THIS code:
Winnt.sif
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)))"


If you DO NOT want the cmd window (batch file) to show AT ALL, use THIS code:
Winnt.sif
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)))"


(If you want more info on this coding, see this post, and this post.)

3. Place any drivers you want to have auto-detected into $OEM$\Drivers (you must create the directory).


Notes:
-= This method does not require any files to be copied over the the HDD - it runs totally from the CD.
-= Plug'n Play devices are detected during Windows Setup after the DetachedProgram stage (t-39), which is when this script is run, so Windows Setup will detect and install all applicable drivers.
-= If you are using a Normal XP CD (SingleBoot), don't worry about spaces in the folder names. (For example: "Wireless Card Drivers" will work just as well (even though there are spaces in the name) as "Wireless_Card_Drivers").
-= If you are using a MultiBoot Disc, you can also use spaces anywhere - EXCEPT in SourcePath. Example (red=won't work; green=will work):
QUOTE ( Example: Red=Won't Work; Green=Will Work )
CD:\XP Pro\$OEM$\Drivers\nVidia ForceWare 77.72\ <-- WON'T work. (Replace space in "XP Pro" with underscore or dash.)
CD:\XP-Pro_A\$OEM$\Drivers\nVidia ForceWare 77.72\ <-- WILL work.

-= Also, please note this method will not work for MassStorage Device drivers.
-= It should be noted that WatchDriverSigningPolicy works most of the time, but occassionally the dialog for the installation of unsigned drivers pops up nevertheless. Pyron said he has no idea why, but Setup seems to ignore the registry values sometimes.


If you are still confused, here is a sample XPCD layout (colors correspond to the steps above):
QUOTE ( Sample CD Layout )
├───$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



More Info

What's In It?
The attached zip contains the following files (ALL should be placed in your $OEM$ directory):

7za.exe
7za.exe is the command line version of 7-zip v4.23 (link).
This file is used only if you add a "Drivers.7z" file. (It will extract the "Drivers.7z" to the Hard Drive).
If you are not using compressed drivers, it is safe to delete this file.

Drivers.cmd
CODE
CLS
@ECHO OFF
TITLE Drivers-from-CD Installation
color 1F
:: Set Current Drive as CD
CD /D "%~dp0"
:: Set Drivers Location Folder
SET DRV=Drivers
:: Ticker script
ECHO.exec hide %CD%\Process.exe -r setup.exe >%SystemDrive%\Ticker.ncl
ECHO.wait 10000 >>%SystemDrive%\Ticker.ncl
ECHO.exec hide %CD%\Process.exe -p SetupCopyOEMInf.exe high >>%SystemDrive%\Ticker.ncl
ECHO.exec hide %CD%\Process.exe -s setup.exe >>%SystemDrive%\Ticker.ncl
ECHO.wait 50000 >>%SystemDrive%\Ticker.ncl
ECHO.script %SystemDrive%\Ticker.ncl >>%SystemDrive%\Ticker.ncl
:: Pre-Install (Suspend Setup, and Set Setup to Low Priority)
.\Process.exe -s setup.exe
.\Process.exe -p setup.exe low
:: Allow for Unsigned Drivers
START .\WatchDriverSigningPolicy.exe
:: If Compressed Drivers Exist, Unzip Them & Change Drivers Location Folder to Hard Drive
IF EXIST Drivers.7z (
SET DRV=%SystemDrive%\Drivers
.\7za.exe x -y -aoa -o"%SystemDrive%\Drivers" ".\Drivers.7z"
)
:: Run NirCmd Ticker Script (code above)
START .\NirCmd.exe script %SystemDrive%\Ticker.ncl
:: Install Drivers
.\SetupCopyOEMInf.exe "%DRV%"
:: Post-Install (Close NirCmd, Setup Priority back to Normal, Resume Setup)
.\Process.exe -k NirCmd.exe
.\Process.exe -p setup.exe normal
.\Process.exe -r setup.exe
:: Delete Ticker File
DEL %SystemDrive%\Ticker.ncl
EXIT

NirCmd v1.80
Created by NirSoft (link)
Used to run Ticker script.

Process.exe v2.03
Created by Beyond Logic (link)
Used to pause setup, set process priorities, and kill processes while drivers install.

SetupCopyOEMInf.exe
Created by Pyron (link)
It scans a dir recursively and calls SetupCopyOEMInf for every .inf it finds (which copies a specified .inf file into the %windir%\Inf directory).

WatchDriverSigningPolicy.exe
Created by Pyron (link)
Basically, this makes it so that when Windows finds non-signed drivers (non-WHQL), it doesn't care.
The source for WatchDriverSigningPolicy is here. Although the attachment doesn't seem to be working, the basic outline of the code is in the post.


How Does It Work? (A Much Simplified Guide)
When Windows Setup reads the GuiUnattended section of winnt.sif, it will load up our Drivers.cmd code.
The Drivers.cmd file will first pause Windows Setup (using Process.exe).
Next, it will activate WatchDriverSigningPolicy.exe so that we can install unsigned drivers.
The batch script will then determine if compressed drivers exist. If so, it will extract them.
Then it will run SetupCopyOEMInf.exe to scan every subdirectory in $OEM$\Drivers (or %systemdrive%\Drivers if compressed drivers exist) and add copy all the .inf files so that Windows will recognize and install drivers for every PnP device (that you included drivers for).
Finally, we resume Windows Setup (again, using Process.exe).


What About Compressed Drivers?
If you use compressed (.7z) drivers, make sure to ADD your compressed "Drivers.7z" to the $OEM$ folder. The batch will automatically detect the compressed drivers (make sure it is named "Drivers.7z"), unzip it to the Hard Drive (using the included "7za.exe"), and then scan the Hard Drive (instead of the CD) for .inf files.



Updates:
11/08/05: Major updates:
  • Solved the problem of setup continuing before all the .inf files are scanned and integrated.
  • New Method - (Batch file instead of AutoIt) - Windows Setup will now pause (based on this post and also this post and this post).
  • Added Process.exe v2.03, and NirCmd v1.80 to the zip - These are the programs we use to pause Windows Setup.
  • This method now works with compressed drivers - just add your "Drivers.7z" to the $OEM$ folder. The batch takes care of the rest. smile.gif
10/11/05: New upload again. This time, the Drivers.au3 file is altered again, and the code to be entered into winnt.sif has been changed. This entire method runs from CD (no files copied over!) This is all from this post. Again- I personally tested this method (as has hp38guser) and it works!
08/01/05: Re-uploaded the zip file. The only updated file in the zip is the Drivers.au3 - it's a smaller file, with less coding (i.e., no extra crap, as per hp38guser's request (here). It has been tested, and is working.

Attachment Updated: 11/08/05
MD5 Hash: E6FCD3B433BA04D0F0CC96CB7613DA0A

Download from Mirror 1

Download from Mirror 2 (please try above link first...)
Acheron
Please note this does not work for any MassStorage Device. Only plug'n play hardware is detected and installed during Windows Setup.

You can add drivers for any hardware on cd. Whenever you change hardware, Windows will recognize your new hardware and will ask for your cd.

This is my favourite driver installation method.
Bâshrat the Sneaky
Maybe it'd be useful if you'd say in the first post that this is a method where drivers are kept, and because they are installed from CD/DVD, you'll always need to insert your CD/DVD to install new drivers.

Or did I miss that part?
Acheron
You are correct. However pnp-devices are detected during Windows Setup after detachedprogram stage so during Windows Setup all drivers are detected and get installed.

If drivers are included for hardware not available during Windows Setup, only the inf's are copied to the Windows INF directory.
a06lp
QUOTE (hp38guser @ Jul 23 2005, 07:25 PM)
pnp-devices are detected during Windows Setup after detachedprogram stage so during Windows Setup all drivers are detected and get installed.

If drivers are included for hardware not available during Windows Setup, only the inf's are copied to the Windows INF directory.
*


And therefore, this seems to be a great way to install any hardware. If it's in your system now, the drivers are installed during setup.

If you later add a component, and the drivers were originally on the cd, it will ask for the cd.

(I think this is correct - let me know, hp38guser)
Bilou_Gateux
QUOTE (a06lp @ Jul 23 2005, 09:35 PM)
If you later add a component, and the drivers were originally on the cd, it will ask for the cd.


I have a request because i don't know how to change the drivers.au3 AutoIt code.

I always install Windows from a Network share or from an i386 source folder located on the hard drive (WINNT32.EXE /s:<source_path>) booting first the box with WinPE/BartPE.

My Drivers folder is located on %SystemDrive%\Drivers.

Could you post a modified AutoIt script that search \win51ip.SP2 on local HDD instead of CD. I just need a new subroutine to set $instDrv to another letter than CD letter.
Optional (i can edit the original au3 to replace with my IDTag):
Can you set the IDTag win51ip.SP2 in a variable for use with others Windows versions.
Acheron
QUOTE
DriveGetDrive
--------------------------------------------------------------------------------
Returns an array containing the enumerated drives.

DriveGetDrive ( "type" )

Parameters

type Type of drive to find:
"ALL", "CDROM", "REMOVABLE", "FIXED", "NETWORK", "RAMDISK", or "UNKNOWN"

Return Value

Success: Returns an array of strings (drive letter followed by colon) of drives found. The zeroth array element contains the number of drives.
Failure: Returns numeric 1 and sets @error to 1


Suit yourself. Replace
CODE
$CD = DriveGetDrive("CDROM")
by
CODE
$CD = DriveGetDrive("FIXED")
to look for win51ip.SP2 on local hdd welcome.gif
erik_demon
@Bashrat

Couldn't this (however modified) replace the current KtD method in DP Base:

For method 2 this would mean:

CODE
@presetup.cmd stage extract the DP's

@DetachedProgram stage run the autoit script


This would have the following advantages:

- no limitations to the OemPnPDriversPath problem
- no double work, this way we don't have to use SetDevicePath and SetupCopyOEMInf which safes (a little) time

I believe that this would be quite an improvement yes.gif

(hp38guser mentioned this before though newwink.gif )
Bilou_Gateux
@hp38guser
QUOTE (hp38guser @ Jul 25 2005, 04:32 PM)

thumbup.gif Thanks!
change done successfull.

Another question. My unattended install is based on "Windows Server 2003, Web Edition Setup"

The autoIT script don't delete the 3 files in @SystemDir.
I have tried to change strings WinWaitActive("Windows Server 2003, Web Edition Setup", "") and WinSetTrans("Windows Server 2003, Web Edition Setup", "",170) with no success.
how can i check the string to use?

@all
When installing only digitally signed drivers (with a cat file), the WatchDriverSigningPolicy.exe is not necessary. I have edited the drivers.au3 autoit script and add a semicolon in front of both lines with WatchDriverSigningPolicy.exe process and successfully unattended install (on a real box, not on a VirtualMachine) Digitally Signed  Drivers.

QUOTE

Driver signing uses the existing digital-signature cryptographic technology. A hash of the driver binary and relevant information is stored in a catalog file (CAT file), and the CAT file is signed with the Microsoft signature. The driver binary itself is not touched; only a CAT file is created for each driver package. The relationship between the driver package and its CAT file is referenced in the driver's INF file and maintained by the system after the driver is installed.
jaclaz
It looks like a really interesting approach.
Thanks to both :
hp38guser
a06lp
thumbup.gif

jaclaz
Acheron
OK, please don't download these files anymore. The script above contains some unuseful strings. I have asked the TS to remove it, but did not respond to my request.

Here's the correct driver.au3 script:
CODE
$CD = DriveGetDrive("CDROM")
For $I=1 to Number($CD[0])
    $pa = $CD[$I] & "\win51ip.SP2"
     If FileExists($pa) Then
     $instDrv=$CD[$I]
     Endif
Next
ProcessSetPriority ( "setup.exe", 0)
Run($instDrv & "\$oem$\WatchDriverSigningPolicy.exe")
ProcessWait("WatchDriverSigningPolicy.exe")
RunWait($instDrv &  "\$oem$\SetupCopyOEMInf.exe " & $instDrv & "\$oem$\Drivers")
ProcessClose("WatchDriverSigningPolicy.exe")
ProcessSetPriority ( "setup.exe", 2)
FileDelete(@SystemDir & "\driver.au3")


The following files go into $oem$\$$\System32:

CODE
autoit3.exe
driver.au3


These files go into $oem$:

CODE
SetupCopyOEMInf.exe
WatchDriverSigningPolicy.exe


Users who only use WHQL drivers can use the following code:
CODE
$CD = DriveGetDrive("CDROM")
For $I=1 to Number($CD[0])
    $pa = $CD[$I] & "\win51ip.SP2"
     If FileExists($pa) Then
     $instDrv=$CD[$I]
     Endif
Next
ProcessSetPriority ( "setup.exe", 0)
RunWait($instDrv &  "\$oem$\SetupCopyOEMInf.exe " & $instDrv & "\$oem$\Drivers")
ProcessSetPriority ( "setup.exe", 2)
FileDelete(@SystemDir & "\driver.au3")
a06lp
@hp38guser:
I recieved your PM, and have been waiting until my next clean install to test the script, and verify that it works. once it does, i will update the first post with all changes that need to be made.
I have also asked you to please explain the script you made more fully, so that we can understand the logic behind the script, and why it works. When you have a chance, please post that (or PM it to me), and I'll update the first post with it.


@all:
for now, however, the download in the first post DOES work (even though it may contain some unneccesary things).
Bilou_Gateux
@hp38guser:
Thanks for cleaning the code and post again.
Just finished my UA install (on real box) and just discover it. Too late to check this time with 2K3. i will report on my next install...

@a06lp:
Maybe can you add some credits on 1st post to shalti for the original idea of setupcopyoeminf.exe coded by Pyron.
and then ask BtS stickying this post instead ofJust a suggestion...
a06lp
QUOTE (a06lp @ Jul 22 2005, 03:59 PM)
The info from this outline is from this post...
*


That is from the first post - it's a direct link to schalti. But the real credit goes to the creator of the program.

As for stickying this post - that's not my decision... blink.gif whistling.gif
a06lp
Updated first post. As of this post, everything is updated and working. =)
a06lp
[nevermind...]
evilvoice
couldnt we include support for 7zip archives?
erik_demon
I believe we can if we do it this way
evilvoice
actually, id much rather have it all contained in the autoit script...mainly because of the "RunWait" command...the problem with presetup.cmd is that windows setup DOES NOT pause when executing it, so you could potentially end up with only half the drivers extracted when windows hunts for drivers (at least I heard that was the biggest problem)
Acheron
QUOTE (evilvoice @ Aug 11 2005, 04:53 AM)
actually, id much rather have it all contained in the autoit script...mainly because of the "RunWait" command...the problem with presetup.cmd is that windows setup DOES NOT pause when executing it, so you could potentially end up with only half the drivers extracted when windows hunts for drivers (at least I heard that was the biggest problem)
*


You can't let wait the Windows Setup with AutoIt. However you can force the Windows Setup to idle-mode for the time being.
Reason for me to use AutoIt is the ProcessClose function. When using nLite sometimes Taskkill would fail if you have removed lot's of components
evilvoice
what do you mean by idle-mode? does that mean that if I inclue extracting the 7zip archive using Run.Wait it will idle at DetachedProgram?

Also, why the need to input the cd when using this method for any devices that were not connected during install...is it because of a registry setting? Im just asking if it is something we can change because I copy the driver directory from the cd to hard drive just for the purpose of not needing the cd again.
Nologic
Different write up for the script.

CODE
; Files To Use
$FILE_0 = "setup.exe"
$FILE_1 = "WatchDriverSigningPolicy.exe"
$FILE_2 = "SetupCopyOEMInf.exe "

$CD = DriveGetDrive( "CDROM" )

; Check Drives
For $I = 1 to $CD[0]
    If FileExists( $CD[$I] & "\win51ip.SP2" ) Then $iDrive = $CD[$I] & "\$oem$\"
Next

; Setup = Idle
ProcessSetPriority    ( $FILE_0 , 0 )

; Process Drivers
Run  ( $iDrive & $FILE_1 )
ProcessWait    ( $FILE_1 )
RunWait  ( $iDrive & $FILE_2 & $iDrive & "Drivers" )
ProcessClose    ( $FILE_1 )

; Setup = Normal
ProcessSetPriority    ( $FILE_0 , 2 )

; Delete File
FileDelete    ( @SystemDir & "\driver.au3" )


Not sure if the ProcessWait is really needed tho...then again haven't tested this method yet ether.
Acheron
If you want all drivers get installed from HDD you have only to modify the SetupCopyOEMInf.exe command line.

For example you want the Drivers to be located in \Windows\Drivers you can use this code:

driver.au3
CODE
$CD = DriveGetDrive("CDROM")
For $I=1 to Number($CD[0])
$pa = $CD[$I] & "\win51ip.SP2"
 If FileExists($pa) Then
    $instDrv=$CD[$I]
 Endif
Next
ProcessSetPriority ( "setup.exe", 0)
Run($instDrv & "\$oem$\WatchDriverSigningPolicy.exe")
ProcessWait("WatchDriverSigningPolicy.exe")
RunWait($instDrv &  "\$oem$\SetupCopyOEMInf.exe " & @WindowsDir & "\Drivers")
ProcessClose("WatchDriverSigningPolicy.exe")
ProcessSetPriority ( "setup.exe", 2)
FileDelete(@SystemDir & "\driver.au3")


Where in $oem$\$$\System32:
CODE
autoit3.exe
driver.au3


Following files in $oem$
CODE
SetupCopyOEMInf.exe
WatchDriverSigningPolicy.exe


And in $oem$\$$\drivers your driver files smile.gif
evilvoice
so why the need for a06lp's last note in the first post? I assumed it was something else, like a registry problem, or something, but if using setupcopyoeminf.exe on the windows\source\drivers dir will make it so windows does not prompt for the cd when installing NEW devices, then Ill use that method, just thought it was more in depth.
evilvoice
still havent tried it out yet, but i do think this should be stickied or merged...or something to keep it at the top...a bunch of people say this method works better than the previous version...so maybe the old should be replaced with the new?
a06lp
Just thought I'd point something out...

The OTHER Drivers-from-CD method didn't work with RyanVM's Update Packs.

However, this method, as outlined in the first post, is tested, and WORKS, with v1.3.1 of his pack. Enjoy!

thumbup.gif whistling.gif
Oleg_II
Does this method work for Windows 2000 Pro? I tried to follow instructions on the first page, change only one thing in Drivers.au3: win51ip.SP2 to cdrom_ip.5. But it didn't work for me.

In old method there is a possibility to compress drivers, place them on CD and then uncompress from CD to the system drive installing from there. Is it possible in new method? Sorry I'm not familiar with AutoIt.

Regards,
Oleg 2
Afterdawn
Great work, all of you thumbup.gif

Will now test if this works from USB drives as well, by means of the DriveGetDrive("ALL") instruction.

Also, Bashrat, why don't you make this one a sticky and "un-sticky" the "Unlimited number of drivers + keeping the drivers." thread since that one is outdated.
Afterdawn
Yes yes it works like a charm! Now I've got all my applications / hotfixes, tweaks ánd all my drivers on my 2GB USB flashdrive! biggrin.gif Only when a new Service Pack is released I will need to update my CD!

Thanks to all of you!

Here is my modified auto-it script file btw:
CODE
$array = DriveGetDrive("ALL")
For $item=1 to Number($array[0])
 $srcPath = $array[$item] & "\drivers"
 If FileExists($srcPath) Then
    ProcessSetPriority("setup.exe", 0)
    Run($srcPath & "\WatchDriverSigningPolicy.exe")
    ProcessWait("WatchDriverSigningPolicy.exe")
    RunWait($srcPath & "\SetupCopyOEMInf.exe " & $srcPath)
    ProcessClose("WatchDriverSigningPolicy.exe")
    ProcessSetPriority("setup.exe", 2)
 Endif
Next
FileDelete(@WindowsDir & "\t39.au3")

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)

One more thing: When you're installing Windows XP and you are at the partitioning part of the Setup (the only part which isn't unattended in my case), you should be able to see your flashdrive already. This way you can check whether it shall be accessible at the t-39 minute stage. The used filesystem (FAT or NTFS) isn't of any importance.
a06lp
glad to hear it works. smile.gif

one of the great things about the autoit aspect of this method is that its so customizable.

enjoy! thumbup.gif
Bilou_Gateux
QUOTE (Afterdawn @ Sep 5 2005, 03:43 PM)
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.
osborned_rcc
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?
evilvoice
Ive actually thought about this (may be why I havent tested it out yet) but I was looking into 7zipping all the files and extracting them and running the commands, but the problem would be if setup starts before it finishes.
mGforCe
Thnx for providimg this nice guide and to all for their inputs.. I am going to make UXPCD withthis methods. I am compressing drivers using this method (http://www.msfn.org/board/index.php?showtopic=35869) , I hope it will not create any problem..
prathapml
QUOTE (Afterdawn @ Sep 6 2005, 12:43 AM)
Also, Bashrat, why don't you make this one a sticky and "un-sticky" the "Unlimited number of drivers + keeping the drivers." thread since that one is outdated.
*
Please PM him to bring it to his attention.
Bilou_Gateux
*** removed ***
BobRein
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
a06lp
QUOTE (BobRein @ Sep 30 2005, 06:56 PM)
It is the Dell download R87461.exe where I got the driver.


Did you extract the files form the download? this method looks for the INF file...
Bâshrat the Sneaky
Stickied! newwink.gif smile.gif
Acheron
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
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 Autoit3.exe presetup.au3)))"


$OEM$\:
CODE
autoit3.exe
presetup.au3
SetupCopyOEMInf.exe
WatchDriverSigningPolicy.exe


$OEM$\presetup.au3
CODE
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:
QUOTE
├───$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 welcome.gif
Bilou_Gateux
QUOTE (hp38guser @ Oct 4 2005, 11:21 AM)
Rewritten the program. It's now even easier!


Thanks for info idle.newbie  welcome.gif


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. confused.gif
a06lp
QUOTE (hp38guser @ Oct 4 2005, 01:21 PM) *
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:
QUOTE (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 (%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
Acheron
$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 smile.gif
Bilou_Gateux
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:
QUOTE
[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)
QUOTE
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
QUOTE
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
toe_cutter
QUOTE (hp38guser @ Oct 5 2005, 10:58 PM) *
$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 smile.gif

Soo, should i add a dospath=<cd-drive>:\ in [Data]?
Acheron
QUOTE (toe_cutter @ Oct 7 2005, 01:26 PM) *
QUOTE (hp38guser @ Oct 5 2005, 10:58 PM) *

$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 smile.gif

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


No you shouldn't. It's generated automaticly during Windows Setup. It is very bad if your unattended cd doesn't work properly when you change your hardware configuration. For example installing a Multiple format card-reader changes CD-rom driveletters on Windows Setup
Acheron
There was a problem when I tested the new method. Here's a new line to test:

I386\WinNT.sif
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 Autoit3.exe presetup.au3)))"


welcome.gif
a06lp
QUOTE (hp38guser @ Oct 9 2005, 06:04 PM) *
There was a problem when I tested the new method. Here's a new line to test:

I386\WinNT.sif
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 Autoit3.exe presetup.au3)))"


welcome.gif



have you tested THIS one? is it confirmed to work?
Acheron
I tested using the RUN-section in Start Menu. I found out the AutoIt file did execute but could not find it's Workingdir and hang. I now use the start command to specify the workingdir and so it works. Could you change the Startpost a06lp?
a06lp
QUOTE (hp38guser @ Oct 9 2005, 07:33 PM) *
I tested using the RUN-section in Start Menu.
...
it works. Could you change the Startpost a06lp?


I will do a real-world full test sometimes in the next couple of days. If that works, I'll update the first post.
Google Internet Forums Unattended CD/DVD Guide
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.