• Announcements

    • xper

      MSFN Sponsorship and AdBlockers!   07/10/2016

      Dear members, MSFN is made available via subscriptions, donations and advertising revenue. The use of ad-blocking software hurts the site. Please disable ad-blocking software or set an exception for MSFN. Alternatively, become a site sponsor and ads will be disabled automatically and by subscribing you get other sponsor benefits.
a06lp

Drivers from CD: Simple Method

227 posts in this topic

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

0

Share this post


Link to post
Share on other sites

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

0

Share this post


Link to post
Share on other sites

Great work, all of you :thumbup

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.

Edited by Afterdawn
0

Share this post


Link to post
Share on other sites

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! :D 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:

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

Edited by Afterdawn
0

Share this post


Link to post
Share on other sites

glad to hear it works. :)

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

enjoy! :thumbup

0

Share this post


Link to post
Share on other sites
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
0

Share this post


Link to post
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?

0

Share this post


Link to post
Share on other sites

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.

0

Share this post


Link to post
Share on other sites
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.
0

Share this post


Link to post
Share on other sites

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

0

Share this post


Link to post
Share on other sites
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...

0

Share this post


Link to post
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
0

Share this post


Link to post
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. :}

0

Share this post


Link to post
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
0

Share this post


Link to post
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 :)

0

Share this post


Link to post
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
0

Share this post


Link to post
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]?

0

Share this post


Link to post
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]?

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

0

Share this post


Link to post
Share on other sites

There was a problem when I tested the new method. Here's a new line to test:

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)))"

:hello:

Edited by hp38guser
0

Share this post


Link to post
Share on other sites
There was a problem when I tested the new method. Here's a new line to test:

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)))"

:hello:

have you tested THIS one? is it confirmed to work?

0

Share this post


Link to post
Share on other sites

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?

0

Share this post


Link to post
Share on other sites
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.

0

Share this post


Link to post
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.