This is what i would do:

Create a program that does this hands-free - admins would run this tool once everytime a pack updates:-
1. download all driverpack packs, including 3rd party ones. Latest versions of each only. Cache downloads for next time.
2. extract all new packs (cleanly)
3. for each driver folder;
3a. detect hwid's from inf files
3b. compress each folder into a 7z
3c. add hwid's into a database, with each hwid mapped to the name of the 7z single driver archive
4. update/overwrite a public online database with new database. It could be a proprietory database hosted here, or it could use wikiD @ MeediOS.com (url= http://www.meedios.com/wikiD/ ). It would also upload thousands of small 7z files to somewhere on ftp.

Then the client postminisetup would:
1. gather local pnp id's
2. look each of them up on this public database. The db would return a list of 7z url's which are just the drivers needed. It may contain overlaps and conflicts, which the client would sort out.
3. The client would download these tiny 7z files locally, and extract them maybe
4. dpinst or better would install them - even unsigned ones (hands-free/silently), and letting windows decide which is best--the currently installed ones, or a pick of a choice of drivers from dp.net (might be more than 1..). Also follow dp exceptions.

I've done about 40% of the above in c# @ https://meedios.svn.sourceforge.net/svn … verUpdater but I got busy on other things instead.

awesome, i intend to hook into this future post-minisetup every time the system boots (autorun), to ensure the machine is always up to date for drivers (silently, hands-free). I'm also hoping to use an errorlevel return code to determine if a reboot is required.

keep up the good work everyone; this project is amazing. (this is a large missing part of my Project Bluepill - an autoinstalling, autoupdating and autoconfiguring htpc distribution based on xp @ http://www.meedios.com/forum/viewtopic. … 6530#36530 )

Hi this is looking promising. What I'm after is a command line tool that scans your local PnP for dev ids, and looks up the latest driverpacks.net driver for that device, downloads just that device (not even a whole pack), and installs it (even unsigned ones, and don't install if windows thinks the current driver is better).

Futher to this, some manual exceptions are needed for Nvidia drivers. Certain Nvidia GPU's work best with certain Forceware versions.

fyi, to save anyone searching for "Microsoft's own dpinst (Driver Installation Tools 2.01)", it's at http://www.microsoft.com/whdc/driver/in … Fxtls.mspx

grrr driverpacks.net lost my post.

jtdoom: in addition to a driver db of hwids, it would be nice to have each individual driver pre-zipped so client doesn't download loads of tiny files per driver. also ability for user to upload a .zip containing 1 or more drivers, and php could automatically add the inf hwids to db and copy zip into public archive.. that way a load of us could churn through our old driver CD's (that came with hardware) since 1998 and upload them all very easily (~1 mouse click per CD).

Bâshrat the Sneaky: i am willing to help, modestly, toward this effort. Just let me know how I could help.

Ventajou: Thank you so much for registering to post a reply. I had not heard of dpinst, it sounds exactly what we all need. Is there any chance, please, for a copy of your work (the xml, any custom .exe's, dpinst command line switches, bat's, etc). It would be awesomely appriciated, as I assume you've worked out the ultimate flags/args to set eg /q switch, legacyMode = on, <search> element, etc.

http://meedios.com/bluepill/devices.zip

Ok.. as to why.. well integrating (slipstreaming) drivers is okay, but drivers update often, so in theory you'd want to repack all your windows install cd's. not only that, but pre-existing installations are now outdated. If you get a customer query about a machine, you now won't know if it's using previous drivers or the latest.

The idea of Bluepill is the automated windows installation is always the same, never updated. Using the internet it downloads and install latest updates. Because the install cd is old, i want client to fetch latest driver, without it downloading 500mb+.

I've finished the alpha version... there are some issues.. 3 nvidia drivers match my hardware id's.. which one is correct? also should fx5200 cards be using 8x.xx forceware not 9x.xx?

Also, I notice not all the nvidia files are referenced in the .inf. Is this because of co-installers? Should I be downloading the entire directory the .inf resides in? Or can more than 1 driver be in each folder?

I have some questions, apart from guessing, could you confirm what these tools do please:-
DevPath.exe - what/where does it set the info.. a registry entry?
DPsFnshr.exe - what exactly does this do? and does the main /D/ folder HAVE to be in %DriveRoot%?
DP*.ini - does Finisher use this?
save_hwids.exe - does this output same info as i parse with devcon?

But this system, in the end, should use less server juice.. as far less gets downloaded. And no scripts or database required on the server, just pure http. The devices.txt is about 1 meg.

So, is there a way we can work together on this? I mainly need advice about .inf's I guess.

Part of another project Bluepill, I want to replace the manual WindowsUpdate Hardware updates system with driverpacks.net hands-free. But instead of forcing Bluepill user (who might be running on only a 4gb hard disk) to download 500 meg of compressed driverpacks including all the 3rd party ones, I have seen this requested on these forums, I have started a application in C# 2.0 that will download only the drivers present in the local computer.

The way it works/will work is this:
* Download DP*.7z's
* Extract them all to a local folder, for example, C:\DriverPacks\
* You then run the application i'm writing and point it to same folder as above, C:\DriverPacks\
* It then scans all .inf files and creates a devices.txt file that looks like this:

PCI\VEN_10B9&DEV_5473=C\AU\ALiSDIFA.inf
PCI\VEN_10B9&DEV_5473=C\AU\ALISDIF.SYS
*ALI5123=C\AU\IRALI.INF
*ALI5123=C\AU\aliirda.sys
PCI\CC_0C0310=C\AU\usb.inf
PCI\CC_0C0300=C\AU\usb.inf

* Upload the devices.txt and the extracted driver packs to any web server accessible by your target computer, for example, http://server.local/DriverPacks/  ( or http://ondemand.driverpacks.net/ hint hint wink )
* On the target computer, you then run another application (which I've yet to write), accepting 2 command line arguments; url (http://server.local/DriverPacks/) and local directory to save to (%SystemRoot%\DriverPacks)
  -  fetches the remote devices.txt
  -  executes a "devcon hwids *" which looks like:-

USB\VID_05A9&PID_A511\5&160F4E1&0&1
    Name: Dual Mode USB Camera Plus #2
    Hardware ID's:
        USB\Vid_05a9&Pid_a511&Rev_0100
        USB\Vid_05a9&Pid_a511
    Compatible ID's:
        USB\Class_ff&SubClass_00&Prot_00
        USB\Class_ff&SubClass_00
        USB\Class_ff

-  scan the devices.txt file. for each device:-
      -  for each "Hardware ID" listed, in order from top, stopping after first match.
      -  when first match is found, all files linked to the matched Hardware ID will be queued for download
  -  download the queue, and put them into %SystemRoot%\DriverPacks as normal
* You'd then need to 'post-install' the new drivers, perhaps by using the latest version of 'FINI'

The opensource for both applications mentioned above (collator+downloader) resides at SVN svn://meedios.svn.sourceforge.net/svnroot/meedios/plugins/binary64/Bluepill/DriverUpdater - I will post binaries to this thread when it's at beta quality.

RFC!! Questions? Feedback? Advice? Help?

9

(33 replies, posted in Other)

So, DPsFnshr does a "re-enumerate/update/install" of drivers?
Does it update devices with older (microsoft) drivers?

10

(15 replies, posted in Software)

Jig: do you wish to update any already-installed devices (usually the microsoft signed ones) with updated drivers contained in DriverPacks as well as the missing drivers (the devices with yellow explanation mark) ???? If so, we're in the same boat my friend.

11

(33 replies, posted in Other)

Hi jtdoom, I tried DSPdsblr and makePNF instructions.. and it adds all drivers to the windows db very sweetly.

But now I'm trying to "install" all your drivers in batch script (unattended).. by install i mean:
1. update devices with installed microsoft drivers such as ATA drivers where your packs contain an update.
2. install any devices currently in class Unknown that exist in your packs.

The scenario is a freshly installed *non-slipstreamed* Windows, then want to one-click install any drivers in the packs that are wanted, leaving the machine a lot more usable!

I'm trying to do something like this:

devcon remove =Unknown
devcon rescan

Or this:

devcon remove *
start SuppressAddNewHardwareWizard.exe
devcon rescan
taskkill /f /im SuppressAddNewHardwareWizard.exe

works mostly toward point 2 above - except that devices not known to windows nor your packs pop up the add new hardware wizard window.

How do you suggest I go about this? If there is no community solution - I am happy to code this project as a contribution to us all.. but would need some guidance. I'm good with c# 2.0.

Time for install on target PC is not an issue, so my first thought it to do a devcon updateni on every single hardware device, against every single .inf in driver packs, and abort the inner loop when successfully updated.

Sorry this is a double-post (perhaps my first post wasn't in a good location).

Hi jtdoom, I tried DSPdsblr and makePNF instructions.. and it adds all drivers to the windows db very sweetly.

But now I'm trying to "install" all your drivers in batch script (unattended).. by install i mean:
1. update devices with installed microsoft drivers such as ATA drivers where your packs contain an update.
2. install any devices currently in class Unknown that exist in your packs.

The scenario is a freshly installed *non-slipstreamed* Windows, then want to one-click install any drivers in the packs that are wanted, leaving the machine a lot more usable!

I'm trying to do something like this:

devcon remove =Unknown
devcon rescan

Or this:

devcon remove *
start SuppressAddNewHardwareWizard.exe
devcon rescan
taskkill /f /im SuppressAddNewHardwareWizard.exe

works mostly toward point 2 above - except that devices not known to windows nor your packs pop up the add new hardware wizard window.

How do you suggest I go about this? If there is no community solution - I am happy to code this project as a contribution to us all.. but would need some guidance. I'm good with c# 2.0.

Time for install on target PC is not an issue, so my first thought it to do a devcon updateni on every single hardware device, against every single .inf in driver packs, and abort the inner loop when successfully updated.