Galapo wrote:

This is my own personal reason for creating this little tool. Sometimes I don't want to install from scratch when replacing a motherboard etc. This at least provides the option of not having to. At the requests of others, the usefulness of the tool has been extended beyond this now.

Yeah, I could see myself wanting to use this for myself in this manner.  I've never used WinPE, though I probably really should look into it, but straying away from something that really works well to something foreign always makes me a bit leery.

Yeah, I think I got the idea of why to do it.  Problem is, I've already done all the hard work of making everything work for pretty much everything.  I have put my image on pretty much everything and it always works, regardless of CPU and chipset.  I do NOT use the BMSD option any more either, as it really has very little to do with MassStorage for most of the lines.  Amazingly, the sample Sysprep.inf files from the 2000 version has a lot of valid lines for several basic IDE and SCSI controllers, and then I go ahead and add the Intel, AMD, ALi, VIA, and VMWare drivers to the equation and that pretty much handles 95% of all computers.  Someone had a script (sorry for being lazy, don't feel like digging up where it is just at this moment... the margarita has me drowsy wink) that parsed the HWIDs and was supposed to sort and remove duplicates too but that part failed.  Popped all that into Excel and did the rest of the job on my own.  With only about a 15KB Sysprep.inf, I can handle most everything now.

And once I get all the network share issues worked out (mostly from the AMD CPU driver), then maintaining all my drivers should be a breeze! big_smile

Going to keep trying to make use of OfflineSysprep as it does indeed show some promise for my usage, but as of right at the moment, it doesn't seem to improve upon what I already have (if it ain't broke, don't fix it?).  Though.... did I mention how much I hate that flag that shows up in MySysprep? lol

So is there a way to do this so that I can deploy it and have it run OFSP on it's own without me having to sit at each individual computer, or no?  Yeah, I use a program anyways to deploy it, but I don't have to be at the computer at all, which is almost a necessity for me any more.

The only HALs I care about are PIC ACPI, APIC Uniprocessor, and APIC Multiprocessor, which pretty much covers any standard computer from 98-ish to present.  And the reason I do it in Mini-Setup with MySysprep right now is it's full automated. I don't have to run an extra step to get everything working.  I thought this was what the purpose of OfflineSysprep was to do it automatically, but apparently not?

Don't get me wrong, I don't doubt OfflineSysprep has it's uses, but not sure I will have a use for it if things still have to be ran after Mini Setup is complete.

Hmm, tried to use OfflineSysprep because of the HAL detection, but ran into something that puzzles me...  the HAL detection it does, is that ONLY during OfflineSysprep?  Or does it set what HAL to use just before Sysprep Mini Setup?  The whole purpose of me using MySysprep was that it will do the detection before Mini Setup even starts on that first boot, set the proper HAL type, and then continue on the process.  This appears to set the HAL type prior to Sysprep running which sort of defeats the purpose IMHO.  This would require me to make an image file for each HAL type - something I definitely don't want to do.  Can someone shed some light on this for me?

I'm going to give it a try with the SP3 NTLDR here in a little bit... will let you know how things go with it.

Edit:  Ok, I've tried with SP3's NTLDR but with no luck at all.  I did as Oleg said exactly, including extracting all HAL and Kernel files, renaming them where needed, making the INF file, updating BOOT.INI.  Just came up as the standard PIC ACPI HAL still.

As I posted in the news topic for DPsBase 8.05, I have a Sysprep listing of Mass Storage drivers that I use that covers pretty much all bases.  This isn't exactly what you are talking about, no, but it most definitely helps take a step forward towards a universal image.  I will have this ready to post tomorrow so you can see exactly what I've done with it.

Right now, I do have what I call my universal image.  I rarely worry about getting new hardware because my 2000 and XP images work on basically all configurations I see, old or new hardware independent.  The only thing I've had to do on old hardware is make sure I update the BIOS to add ACPI functionality (had some old Dell Optiplex P2 and P3 computers donated to my school district months back and getting around to deploying them).  On new hardware, it seems to work on all the SATA hard drive controllers I throw at it too.

As for HALs, I just use MySysprep.  Ok, I hate the flag that shows up, but it does indeed work.  I just force the install to be "Advanced Configuration and Power Interface (ACPI) PC" in my WINNT.SIF, and then never update to the Uniprocessor APIC HAL (quite honestly, it doesn't matter performance-wise).  I do have it update for a Multiprocessor APIC HAL though.

Add all this together with the Driverpacks and now trying to get DPInst to work from a network share, and I don't see much of anything I can't do on the x86 side of things.  Tomorrow when I get into my office I'll post my Sysprep.inf file (or at least my Mass Storage section).

Oh, and one edit - if you make your install on an Intel-based computer, you have to disable the IntelPPM service prior to running Sysprep and making the image so it'll work on K8 and higher CPUs (BSODs otherwise).  Don't worry about the service not running if you put it on an Intel-based computer though - during hardware detection it'll reinstall the service and re-enable the automatic setting for the service.

Edit:  Wow, I just now found the OfflineSysPrep tool of yours, Galapo.  I'm definitely going to give this a try and hopefully ditch MySysprep (yes, I hate that flag that much!).  If I erase my Superintendent's hard drive or if our Sun suddenly supernovas, you are fully to blame though.  Yeesh, can't believe I didn't see this sooner.

Yeah, I've ran it with /s and or with /c.   My typical parameters while I was testing was /c /s /sh /sw /path <serverpath>.  I had modified the xml file to change from D to * too as that seemed to look better (fixed the problem where it had double "\" in the path if I directed it to the D folder directly... wasn't sure if that was a problem, but didn't seem to help).  Also removed from the XML every other line outside the search and subdirectory tags as they aren't really desirable for my usage.

Now, I already have a LOT of stuff for Mass Storage if you'd like to see that.  I have included the IDE and SCSI examples from Microsoft's sample sysprep.inf files from 2000's Sysprep to cover all the generic devices, plus added all the non-RAID drivers that are relevant to my work.  That includes AMD, ALi, Intel, Nvidia (forget which ones), VIA (only select few since one of them kills Sysprep by putting it into an infinite loop) and some others I think.  Pretty much covers all the bases for 90% of people I'm sure.

I used a script someone had posted using SED.EXE to make all of this and took all the stuff that seemed to cause me problems out of it.  And because there were problems with it running the duplication removal I popped all this into Excel, sorted it by HWID, removed duplicates, and cleaned it up.  I can post it tomorrow when I get into my office if you'd like it.

Oh, and to answer your question - Yes, it DID work if done locally.  Manually or not didn't matter, it was always the same case on a network source.  I tried it manually or via ROE on network source and it always always did the same thing for me.  My only worry is that it's more than just this driver that'll have problems.  If it was ONLY this one that will have this, I'd put MassStorage, the Intel Chipset, and CPU drivers all locally (I have all the MassStorage and Intel Chipset drivers locally already for Sysprep), exclude the CPU drivers from the network share, and run DPInst twice - once locally, once on network.

Ok... ran into a problem with DPInst running it from a network share directly - it detected the AMD CPU and installed the driver, but still I had to hit finish to quit the installation, and then DPInst proceeded on.  Clearly that isn't going to work for my usage of it unless I can figure something else about it.

Edit:  Went back and added the following 2 lines to my DPInst.xml file:

   <suppressWizard/>
   <quietInstall/>

Though right now I don't have time to test whether this will suppress that window properly across a network share.


Edit 2:  Well I edited the DPInst.xml file but that didn't seem to help me at all.  Still stalled at the AMD CPU driver so long as it was from a network source.  Whether it was a direct UNC path or a mapped drive letter, I would get  these lines in my log:

INFO:   ENTER:  DriverPackagePreinstallW
INFO:   RETURN: DriverPackagePreinstallW  (0xE0000301)
INFO:   ENTER:  DriverPackageInstallW
INFO:   Looking for Model Section [AmdK8.NTX86]...
INFO:   amdk8.inf: checking signature with catalog 'z:\d\cpu\AmdK8.cat' ...
INFO:   Driver package 'amdk8.inf' is WHQL signed.
INFO:   Installing INF file "C:\WINDOWS\system32\DRVSTORE\amdk8_665EA4774828BF48872A8D6A28126EAC01019462\amdk8.inf" of Type 6.
INFO:   Looking for Model Section [AmdK8.NTX86]...
INFO:   Installing devices with Id "ACPI\AuthenticAMD_-_x86_Family_15_Model_4" using INF "C:\WINDOWS\system32\DRVSTORE\amdk8_665EA4774828BF48872A8D6A28126EAC01019462\amdk8.inf".
INFO:   ENTER UpdateDriverForPlugAndPlayDevices...
ERROR:  RETURN UpdateDriverForPlugAndPlayDevices. (Error code 0x800B0100: No signature was present in the subject.)
ERROR:  Installation failed. (Error code 0x800B0100: No signature was present in the subject.)
ERROR:  PnP Install failed. (Error code 0x800B0100: No signature was present in the subject.)
INFO:   Attempting to rollback ...
SUCCESS:Rollback completed
INFO:   RETURN: DriverPackageInstallW  (0x800B0100)
INFO:   ENTER:  DriverPackageUninstallW
INFO:   Uninstalling driver package z:\d\cpu\amdk8.inf...
INFO:   Successfully removed C:\WINDOWS\INF\oem18.inf.
INFO:   No devices found for C:\WINDOWS\system32\DRVSTORE\amdk8_665EA4774828BF48872A8D6A28126EAC01019462\amdk8.inf uninstall.
INFO:   Driver package z:\d\cpu\amdk8.inf removed.
SUCCESS:Uninstall completed.
INFO:   RETURN: DriverPackageUninstallW  (0x0)
INFO:   ENTER:  DriverPackageInstallW

At the point where it says "INFO:   Attempting to rollback ...", the dialog about needing to restart to complete the installation of the driver would show up.  Again, this only happens on network driver installs for some reason.  Anyone have any advice?

lmao....   Ok, you need a drink by the sounds of it.  You know, when I see "hardcoded" I sort of give up at that point. wink

Ok, this might very well work for me then.  I'm going to try something here in a few minutes and see what happens, and if all goes well, I'll have everything on a server and not in the image itself.  Well, other than the Finisher possibly.   ...and now that I say that, I can probably just run it directly from the shared folder.

This should be interesting.

So tried to figure out how to make a Junction point to the network share, but found out that it has to be local, unfortunately.  Then saw there was the possibility of a symlink, but found out it is Vista and Server 20008 only.  So there goes those possibilities.  Oh well, I may just keep them on the image for the time being until possibly the finisher allows for a parameter.

As for the login to the share, I went ahead and created a Drivers share on my server using a NullSessionShare, and allowed access via the Guest account (with read-only access of course), so that shouldn't be of issue.

Yeah, I'm going to try to use WSH (always felt it ran more "clean") to set up a startup script and see how that goes... and if that is a problem, I'll use it on RunOnceEx.  This definitely is pretty interesting, and might bring up a need to modify the finisher to allow parameters to be passed to it as well, don't you think?  If there are no parameters, assume %systemdrive%\d, or specify a path to use.

lol... thanks for the delete.

Ok, I get the pathing it to a network share, that's not in issue (and yeah, I know you're working on a help file and such).  But is there a RunOnceEx (or even just RunOnce) mechanism for a startup script I might not be aware of?  I really don't want it to update the drivers repeatedly, even if I do update the drivers on the server.  Because after that, you also want the DPsFnsher.exe to run and get things set up, and well.... I'd rather it just run once and be done with it.  If I have to do it again manually, I'm absolutely ok with that, I'll just push out a task via Symantec Ghost.

How I'm looking at it right now is I'm going to have a folder on the server for drivers which will have the D folder along with all the INI files.  Trying to figure out whether I want to put the DPsFnsher.exe on there or not as well.  I know I'll get this all figured out, it's not a complex task whatsoever.  Just trying to script it all out in my head first. smile

Yes, I know I can make it a startup script, but I'd much prefer it to be a one-time only thing without having to make a flag key in the registry or something to say it has already ran one time.  RunOnceEx is kinda nice of that sort of thing, but requires a login.  And I have several reasons in my image for wanting it to login on the first boot anyhow, so it works out pretty well usually.

Yeah, I'm going to see about the idea of using a network path for the drivers and see how I like doing it that way.  Would be much easier to keep images up to date than if I were to keep including them into images, AND I don't need to wait on 7-zip decompression NOR do I have to wait for them to be copied to the hard drive in the imaging process if they were already decompressed.  It is indeed interesting.  Though clearly I need to have MassStorage drivers available for the Sysprep process (and Intel chipset drivers since they include MassStorage).  I'm going to be rebuilding an XP SP3 image here very soon, and I'll try to incorporate this into it.

One question before I do get started on this though:  When the computer first logs in (via an Auto Logon to my admin account on first boot) and it starts spamming my screen about devices that it found that were new, and then DPInst starts running, will those screens disappear as drivers are being found?  Or will they stay up there until I reboot?  Sorry, just an aesthetics question more than anything.  I'm very very particular about my images and would like it all to be as seamless as possible.

lol....  Well I'm sure that will help clarify things for someone, but I guess I worded my question ambiguously?  All I really wanted to know was if DP_Install_Tool.cmd was ran normally by the finisher or if I had to edit my WINNT.SIF file to make it run prior to running the finisher.  Sorry for the confusion.  I guess you answered me though with that, I'll go ahead and edit the file now wink

I'm going to try this with a Sysprep install here probably Monday to make sure everything is working the way I intend and if so, yay! wink

Ok, question about this as I'm not seeing it being used with the latest release...

Concerning DPInst, do I have to manually set it to run or should it already be used by DPsFnshr.exe?  I just did a test install of XP SP2 with M2 and QSC and never saw it show up as running and the files weren't ever copied to the systemroot.  What should I be doing or is there something I should look for to make sure it is working properly?

Just an update...  I tried using this on a Dell Inspiron 1100 laptop that has a Synaptics Touchpad, but it got detected as "Microsoft PS/2 Port Mouse (IntelliPoint)".

It's HWID is:

ACPI\PNP0F13\4&2A083901&0

Sadly, it was the sole reason I tried the DP.  Go figure.

I believe the reason you are having this issue has to do with how mouse drivers in Windows work.  If you are unaware, there can only be one mouse driver loaded at a time.

I used to try to directly integrate Synaptics drivers into my Sysprep'ed Ghost image for the school district I work at because of the laptops we have, but I found it tried to load the Synaptics drivers for everything, including desktop machines using Microsoft, Logitech, etc mice.  So I started digging through the INFs and found that the way Synaptics drivers work, they are assuming it is going to be a touchpad on a laptop in which case there is a strong possibility of someone adding another pointer device (i.e. mouse) to the computer via USB.  So how do you make it work if only one driver can be loaded at a time?  Make your driver include a catch-all.  The Synaptics drivers install for everything and has generic support for all USB mice added as well.

So people that are using this DP are getting Synaptics drivers loaded for their non-Synaptics touchpads and mice causing problems.  Although it provides generic support, it apparently only works on additional devices added, not on the primary.

So what was my solution for my school district?  I'm sort of embarassed to admit this, but to get the drivers to work the best without having to manually load the drivers on every machine, I just made a copy of the image file and included the Synaptics drivers to this image and called it my "laptop" image.  So I have about 1.5gb taken up on my server because of touchpad drivers.  Yeah, I'm sure I could just set up Ghost to install the drivers by copying the installer and running it with a switch to make it silent... and I probably should.  *sigh*  But it wasn't the first thing to come to mind.