Apr 13 2005, 07:26 AM Post
#1 | |
| Junior ![]() Group: Members Posts: 65 Joined: 22-July 04 Member No.: 25116 | Normally there is one way to integrate drivers in Windows 2k/xp/2k3. Specify oempnpdriverspath in winnt.sif / unattend.txt / ristndrd.sif / sysprep.inf or patch the resulting DevicePath Registry Value directly using SetDevicePath.exe by Pyron. The problem is there is a length limit of 4096 characters. I developed two little scripts which will solve the problem of driver integration in a different way (exception: disk drivers). Script 1 'drvls.cmd' will scan a subdirectory structure where it sits at the very top for INF-files and call Script 2 'drvcp.cmd' which will create a temporary INF-file in the subdirectory and for the INF-file passed by 'drvls.cmd'. It will then use the INF command 'CopyINF' to integrate the INF-file in Windows. CopyINF - creates oem<sequencenumber>.inf in %WINDIR%\inf --> this is an exact copy of the INF-file to be integrated - creates oem<sequencenumber>.pnf in %WINDIR%\inf --> this is a compiled INF-file that contains device-ID(s) and (most important) the full path to the original driver location (that was passed to 'drvcp.cmd' by 'drvls.cmd'). - integrates the signature .cat file (if it exists) in the catalog-DB Finally it will delete the temporary INF-file. As a result Windows can successfully install any device driver in the subdirectory structure with the normal PnP mechanism. The subirectory names can be readable and contain Spaces etc. since there is no limit resulting from a Registry Value Length etc. So there are 5 files needed: - drvls.cmd - drvcp.cmd - header.txt (header for temporary INF-file) - footer.txt (footer for temporary INF-file, needed for W2K only) - cocpyinf.dll (CoInstaller DLL, needed for W2K only) Now I try to post these files to this forum as a ZIP Any suggestions? EDIT: 19.4.2005 20:20 -> Script solution REMOVED. Please use SetupCopyOEMInf.exe from Pyron based on his SetDevicePath.exe and my scripts. Downloadable in this thread. Tested successfully on 2k, xp and 2003. |
| | |
![]() |
Jul 16 2005, 05:01 AM Post
#81 | |
| Newbie Group: Members Posts: 46 Joined: 19-June 05 Member No.: 61066 |
Hi, First of all: This forum is great! Lots of "guru's" here! Thanx very much for this SetupCopyOEMInf method!!! @Pyron/Shalti Could you put the scripts back online and possibly the sourcecode for the .exe? I want to study how this is put together, instead of just running it. Maybe I should've made a new thread for the following questions...? I don't know for sure... Questions: ---------------- It's a pity that this method doesn't work for massstorage drivers; as I understand these are a special kind. But could anyone explain me where the massstorage drivers are actually put on disk and what registry settings are made...? So what I'm trying to grasp is how windows finds these ide/sata/raid/scsi drivers... I know a lot of people here ain't fond of/don't use sysprep, which I understand, but it has a nice functionality called the buildmassstorage section, which is prepopulated with the -bmsd switch... and when the reseal is working, it takes a long time (somehow because of the large massstorage section) Can you guys explain to me in detail what is done at that time? Or give me some link(s). I've searched so long for these answers, but I can't find it anywhere... :-( Thanx a lot! P.S. one more question: would it be possible to somehow check, before pnp enumeration, what hardware is actually in the machine? For example by running a tool that lists all hwid's and then finds the drivers for those hwid's recursively within a BTS-drvpack-folders residing on a cd/hdd/network and "SetupCopyOEMInf-ing" only those drivers? Anyone? Thanx again! |
| | |
Jul 18 2005, 08:44 AM Post
#82 | |
| Junior ![]() Group: Members Posts: 65 Joined: 22-July 04 Member No.: 25116 | QUOTE (Scrapple @ Jul 16 2005, 05:01 AM) @Schalti Could you put the scripts back online I want to study how this is put together, instead of just running it. I will not put the scripts back online, the executable is way faster and also runs on Windows 2000 without any problem. Posted on June 1, 2005: If you want to create your own utility it's a matter of scanning a directory structure for INF-Files and use the API call SetupCopyOEMInf (which is inside setupapi.dll) on every INF-File. QUOTE (Scrapple @ Jul 16 2005, 05:01 AM) I know a lot of people here ain't fond of/don't use sysprep, which I understand, but it has a nice functionality called the buildmassstorage section, which is prepopulated with the -bmsd switch... and when the reseal is working, it takes a long time (somehow because of the large massstorage section) Can you guys explain to me in detail what is done at that time? Or give me some link(s). All available drivers in the [SysprepMassStorage] Section of sysprep.inf are put in the registry such as they will be loaded on next reboot. You can also put non-storage drivers in this section QUOTE (Scrapple @ Jul 16 2005, 05:01 AM) P.S. one more question: would it be possible to somehow check, before pnp enumeration, what hardware is actually in the machine? For example by running a tool that lists all hwid's and then finds the drivers for those hwid's recursively within a BTS-drvpack-folders residing on a cd/hdd/network and "SetupCopyOEMInf-ing" only those drivers? You could do this using devcon.exe, a tool from M$ that will list all devices in a PC. DevCon.exe I don't know however if it is possible to do it before pnp enumeration. |
| | |
Jul 20 2005, 09:19 PM Post
#83 | |
| Friend of MSFN ![]() ![]() ![]() ![]() ![]() Group: Members Posts: 976 Joined: 19-August 04 Member No.: 28204 |
Ok, I don't fully understand this tool, but help me out here. I use Bashrat's Drivers-From-CD method (outlined here) to install my drivers now. My basic structure is like this: QUOTE i386 $OEM$ ...|--Drivers ......|-- Laptop .........|-- Audio .........|-- Graphics .........|-- Modem ......|-- PC .........|-- Audio .........|-- WLAN And I use the 4 files listed in the above-linked post. Will the tool in this post help me not need all of that? If so, what steps are needed to use this tool? Or am I totally misunderstanding the purpose of this new tool? This post has been edited by a06lp: Jul 20 2005, 09:20 PM |
| | |
Jul 21 2005, 04:03 AM Post
#84 | |
| Friend of MSFN ![]() ![]() ![]() ![]() ![]() Group: Members Posts: 879 Joined: 28-June 04 From: Eerbeek Member No.: 23554 OS: XP Pro x86 | QUOTE (Scrapple @ Jul 16 2005, 12:01 PM) P.S. one more question: would it be possible to somehow check, before pnp enumeration, what hardware is actually in the machine? For example by running a tool that lists all hwid's and then finds the drivers for those hwid's recursively within a BTS-drvpack-folders residing on a cd/hdd/network and "SetupCopyOEMInf-ing" only those drivers? Anyone? Thanx again! Why don't you want to have all your drivers get recongnized by Windows? It's wonderful and only the setup information is passed to the Windows. No files are copied over in some way. ' The way I use the AutoIt script all drivers stay on CD. Theoraticly I could add a lot more drivers for hardware that doesn't even exist on my system. Then when I change my Hardware Configuration Windows will detect new hardware and ask for my driver cd. You also could use a network path, it's the same principe I still think this should be the methode for most of Basrat's driver packs |
| | |
Jul 21 2005, 10:36 AM Post
#85 | |
| Newbie Group: Members Posts: 46 Joined: 19-June 05 Member No.: 61066 | QUOTE (hp38guser @ Jul 21 2005, 12:03 PM) Why don't you want to have all your drivers get recongnized by Windows? It's wonderful and only the setup information is passed to the Windows. No files are copied over in some way. ' The way I use the AutoIt script all drivers stay on CD. Theoraticly I could add a lot more drivers for hardware that doesn't even exist on my system. Then when I change my Hardware Configuration Windows will detect new hardware and ask for my driver cd. You also could use a network path, it's the same principe I still think this should be the methode for most of Basrat's driver packs Well, because I'm not using unattended (scripting) method, but the sysprep (imaging) method. The company I work for has very heterogeneous hardware, but the unattended installation method is just too slow... So what I'm trying to think of is a way NOT to re-image every single time I run into a (new) machine for which a massstorage driver is not yet incorporated in the image. As you know, massstorage drivers need to be present for the machine to even boot. So my goal is to update the drivers(packs) on a network-share regularly and to have a regularly updated BartPE CD (with the latest masstorage/nic drivers) boot the machine and download/restore the universal image from a mounted image/drivers/scripts network-share to the harddisk after partitioning it. Then mount that local partition and detect all hwids of every piece of hardware that's actually in the machine. After that search for only the needed drivers and custom scripts on the netshare and incorporate them into that still unbooted hdd partition. Incorporating the massstorage drivers into the deployed partition before Windows' boots from it, seems to be the most difficult task, but I think it's possible to script copying driver-file's to and editing the registry of the hdd-partition from within a running BartPE (pxe or CD). Now, that's why my original question was: What exactly do I put/change in the registry and where do I put the driver files of the massstorage driver in the deployed hdd NTFS filesystem BEFORE windows is able to boot from it? ..... Running "sysprep -reseal", AFTER "sysprep -bmsd", does exactly what I need (I think), but I need to know WHAT sysprep actually does to the registry and what filecopying sysprep performs on its NTFS boot-partition for windows to be able to boot from it after deployment (on a different machine which possibly needs the newest scsi/raid/sata driver), because I CAN'T run sysprep again BETWEEN capturing and deploying; BartPE is evidently loaded at that time (and not the deployed os on hdd I'm trying to target for doing this on) ..... I know it all sounds pretty complicated, but I hope you get my idea. Let me know what you think how this can be done... preferably: "a better/easier way"... Remember: regular re-imaging and/or unattended installs are NO OPTIONS for us This post has been edited by Scrapple: Jul 21 2005, 11:10 AM |
| | |
Jul 21 2005, 11:07 AM Post
#86 | |
| Group: Members Posts: 1 Joined: 20-July 05 Member No.: 65288 | Thanks everyone these tools are really helpful! |
| | |
Jul 28 2005, 09:57 AM Post
#87 | |
| Advanced Member ![]() ![]() ![]() Group: Members Posts: 466 Joined: 9-August 04 From: Edmonton, Alberta Member No.: 26786 OS: XP Pro x86 |
Could someone who is using Method 2, pyron's method + keeping the drivers post their presetup.cmd I am quite confused in how to make BOTH drivers install during and install and after install to work..... Can I just simply replace the line with pyron's setdevicepath with this new setupcopyoeminf and it will work during GUI install and keep the drivers during regular windows install? This post has been edited by JuMz: Aug 2 2005, 02:54 PM |
| | |
Aug 1 2005, 06:55 PM Post
#88 | |
| Advanced Member ![]() ![]() ![]() Group: Members Posts: 466 Joined: 9-August 04 From: Edmonton, Alberta Member No.: 26786 OS: XP Pro x86 |
anyone?
|
| | |
Aug 19 2005, 11:29 AM Post
#89 | |
| MIS Support Manager Group: Members Posts: 22 Joined: 15-July 05 From: El Reno, OK Member No.: 64513 |
Is anyone ever going to write a full guide on how to use this SetupCopyOEMInf method? Maybe post it on the guide site?
|
| | |
Aug 28 2005, 04:01 AM Post
#90 | |
| Senior Member ![]() ![]() ![]() ![]() Group: Members Posts: 679 Joined: 6-August 04 Member No.: 26369 OS: none |
Sorry, if it was answered before but I can't find a clear description of using this tool also. I wonder if pyron's modified setup.exe needed for this method? I'm asking because using his set of files seems to influence running svcpack.inf: when I place a .cmd or .exe file in SVCPACK folder and add it in svcpack.inf it doesn't run, but it runs when I use "a clean" installation without modified setup.exe Best regards, Oleg 2 |
| | |
Aug 28 2005, 06:10 PM Post
#91 | |
| Friend of MSFN ![]() ![]() ![]() ![]() ![]() Group: Members Posts: 976 Joined: 19-August 04 Member No.: 28204 | QUOTE (osborned_rcc @ Aug 19 2005, 01:29 PM) Is anyone ever going to write a full guide on how to use this SetupCopyOEMInf method? Maybe post it on the guide site? http://www.msfn.org/board/index.php?showtopic=51406 Enjoy. |
| | |
Aug 30 2005, 04:32 AM Post
#92 | |
| Newbie Group: Members Posts: 14 Joined: 30-August 05 Member No.: 70942 |
And this can be used to install missing NIC drivers for the setup program in RIS? Let me be a bit more spesific... When I run an image, I seem to be missing some NIC drivers and therefor I can get all the primary stuff done (IP, username input etc.) but it won't start the actuall installation of the OS. This problem is solvable in other ways but it would seem that the method is simply to microsoft (read: Weird) for me to understand..... This program and scripts could help me achive what I need much simpler but I do need to know if it gets loaded in before the setup begins so that the drivers can be used when "Detecting hardware" is shown... |
| | |
Sep 1 2005, 07:30 AM Post
#93 | |
| Powered by Windows Embedded ![]() ![]() ![]() ![]() ![]() Group: Members Posts: 752 Joined: 3-January 04 From: Underworld Member No.: 11874 OS: XP Pro x86 |
@Xavierxray No. @all Try Drivers From CD (AutoIt Method), A newer, better way. =) and you can get help from the author: hp38guser. This post has been edited by Bilou_Gateux: Sep 1 2005, 07:31 AM |
| | |
Sep 21 2005, 02:30 PM Post
#94 | |
| Group: Members Posts: 1 Joined: 14-August 05 Member No.: 68768 |
I made an xp install cd using nlite, ryanvm cab and driver packs. Everything works fine except when setup is installing devices the SetupcopyOEMInf.exe asks about 200 times for windows logo testing continue/don't install. What did I do wrong? How can I fix it? The first cd I made works fine but with a different version of xp than this one, though that shouldn't make any difference.
|
| | |
Oct 2 2005, 12:14 PM Post
#95 | |
| aka Wim Leers Group: Patrons Posts: 2214 Joined: 29-October 03 From: Hasselt, Belgium Member No.: 8748 OS: none | |
| | |
![]() ![]() |
| Lo-Fi Version | Time is now: 24th November 2009 - 04:02 PM |