Re: Stand Alone Driverpack utility for all OS (XP, 2k3, 2k8, Vista, Win7)

Updated first post to new v120215

Re: Stand Alone Driverpack utility for all OS (XP, 2k3, 2k8, Vista, Win7)

mr_smartepants wrote:

Yes, this is a known problem.  The script can't delete the C:\D directory while the script is running.  Very annoying.
I'll probably add a runonce registry edit to delete it on the next reboot instead.


Hi there,

So I'm trying to do the above, I'm running the driver packs install utility from the setupcomplete.cmd on first log on after imaging, and it's working perfectly! Thanks!

But I'd just like to delete that D folder. I made a script to do it, and was trying to get it to run on next restart by runonce added to registry after DPinstall, but it was not working. So then I thought, well it doesn't need to run next next logon, just once the DPinstall has finished.

So this is what I did.

To the DPinstall tool script I added this:
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:Done
popd
endlocal

shutdown -r -c "Drivers Installed! Machine will now restart.."

START C:\Drivers\SAD2-111118\RemoveD.cmd

EXIT

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

You don't need the restart there, I just have it so that all drivers finish successfully unattended. I have 3 auto admin logons from my unattend.xml.

So that calls the \RemoveD.cmd to start, then closes the DPinstalltool.cmd.

And this is the \RemoveD.cmd:

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@ECHO OFF

SLEEP.exe 5

rd /s/q C:\D

DEL /F /S /Q /A "C:\Drivers\SAD2-111118"

rd /s/q C:\Drivers\SAD2-111118

DEL /s /q C"\Drivers\Sleep.exe

EXIT
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::




I don't know if the sleep.exe was totally required but I wanted it in there to give enough time for DPinstalltool to finish. You can download it from here:

http://www.computerhope.com/dutil.htm

This will also delete any files in the SAD2 location, although the folders will remain. But then the last line will erase the folder too, and sleep.exe.

All that's left is the RemoveD.cmd. But you could put it and sleep into C:\Windows if you wanted, just change all of the paths.

Last edited by andyroo54 (2012-02-23 16:30:57)

Re: Stand Alone Driverpack utility for all OS (XP, 2k3, 2k8, Vista, Win7)

Thanks.  I already have a cleanup.cmd script in my working file but I haven't had time to work on this lately.
My script uses the same runonce registry key hack that the DriverPacks Finisher uses to clear the directory on next restart so sleep.exe isn't needed.
Hopefully I'll have time in the next few weeks to finish everything on my to-do list and put out a "final" version.

Re: Stand Alone Driverpack utility for all OS (XP, 2k3, 2k8, Vista, Win7)

Far Out! smile

Win 8 to be release as beta (consumer preview) February 29th.

Last edited by TechDud (2012-02-24 02:35:12)

Re: Stand Alone Driverpack utility for all OS (XP, 2k3, 2k8, Vista, Win7)

Feb 29 will also see release of .NET Framework 4.5 beta and Visual Studio betas

http://d1syubgj0w3cyv.cloudfront.net/cdn/farfuture/ajoHKH618C_cS2O6V00_aY3Cse0ggjzP4uxI8Hk5viw/perpetual:forever/userbar/donator-3.png

Re: Stand Alone Driverpack utility for all OS (XP, 2k3, 2k8, Vista, Win7)

Just in case anyone is interested, I'm working on adding code to the SAD batch file to delete the folders not needed for certain OS types.  As an example, if you're running SAD2 on a Vista OS, then this is what would happen:
1) extract drivers to the system drive
2) delete the folders not needed (Server & Win7 folders) so all that remains is the \All & \Vista folders (or folders from older packs).
3) dpinst is executed.

This should speed things up since dpinst wouldn't have to scan irrelevant driver folders.  It would also be optional, just like the new KTD option.

Since I don't have server 2008 installed, I don't know what the registry keys are that identify it.  I'll have to install server 2k8 in a VM just to look at the registry.

*Edit
Got it.

FOR /F "tokens=2*" %%A IN ('REG QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v InstallationType') DO SET installtype=%%B

Responses would be either "client" or "server".  Easy.

Re: Stand Alone Driverpack utility for all OS (XP, 2k3, 2k8, Vista, Win7)

Updated first post for v120317.

Re: Stand Alone Driverpack utility for all OS (XP, 2k3, 2k8, Vista, Win7)

Hi

Forgive my stupidity but I do not understand where the commands  cleanup.cmd   and  dpfinisher.exe and from what they are called ?

Re: Stand Alone Driverpack utility for all OS (XP, 2k3, 2k8, Vista, Win7)

That's because I haven't put cleanup.cmd in yet.  I'm still testing it.
DriverPacks Finisher is only activated on an XP install (for now).

Re: Stand Alone Driverpack utility for all OS (XP, 2k3, 2k8, Vista, Win7)

First of all, congrats for the awesome script you built...i took some ideas and incorporated some parts to my own installations scripts...some notes about it.

mr_smartepants wrote:

Known problems:
*Script will give error at end when deleting the C:\D directory because a file is in use. (error is harmless).

To fix this issue, you just need to change

 ECHO Now cleaning up...
 cd %SYSTEMDRIVE%

to

 ECHO Now cleaning up...
cd %SYSTEMDRIVE%
 cd \

Second thing...the /Separate flag is not supported on a x64 environment...dont really see an issue with using it, but anyway.

Now a question to everyone that uses this...what are your results when using the /high or /realtime flag when expanding the archives?
I barely see an improvement, I tested with 7zip (9.20), is the beta version faster?

Re: Stand Alone Driverpack utility for all OS (XP, 2k3, 2k8, Vista, Win7)

Welcome to DriverPacks! smile

Iceblackice wrote:
mr_smartepants wrote:

Known problems:
*Script will give error at end when deleting the C:\D directory because a file is in use. (error is harmless).

To fix this issue, you just need to change

 ECHO Now cleaning up...
 cd %SYSTEMDRIVE%

to

 ECHO Now cleaning up...
cd %SYSTEMDRIVE%
 cd \

<Forehead slap>
Of course!  Thanks.  How the h*ll did I miss that?  I'll make the change right away.
Take all the code you want, we'll make more! (Jay Leno/Doritos rimshot!)
For the 7zip switches, some of those are hold-overs from the previous version.  We wanted to make this compatible down to XP level, so keeping them doesn't harm anything.

Re: Stand Alone Driverpack utility for all OS (XP, 2k3, 2k8, Vista, Win7)

First post updated with v120326

Re: Stand Alone Driverpack utility for all OS (XP, 2k3, 2k8, Vista, Win7)

first, thanks mr_smartepants for the great script.
I think it will help me a lot in the next months deploying win7 to several different hardware configurations.

I miss only one "feature" (or perhaps i did not found it yet):

It is possible to install the drivers directly (method 1) from a network source ? (without copying it first to the systemdrive) ?
My hope is that it will be a little bi faster and save some bandwith.

And how can i procced if i will add drivers (OEM specific) manually (method 1&2)?

#EDIT#

In option that the script check if the client is a laptop/desktop would be nice too.
So some packages does not need to coped (e.g. Desktop need to Mobile Graphics, WLAN, Touchpad / Laptop need no Graphics A/B) -> More bandwidth too save big_smile

Last edited by jayphizzle (2012-04-02 21:38:32)

Re: Stand Alone Driverpack utility for all OS (XP, 2k3, 2k8, Vista, Win7)

Hmm.  It's possible.  I'd have to do some testing.
Maybe I'll put it on my "to do" list.

I don't know how you'd do your second option.  How would the script know what machine it's running on?  I'm not going to have it scan HWIDs and match a table of known laptops.  That would take longer than to copy the files over! smile

Re: Stand Alone Driverpack utility for all OS (XP, 2k3, 2k8, Vista, Win7)

mr_smartepants wrote:

Hmm.  It's possible.  I'd have to do some testing.
Maybe I'll put it on my "to do" list.

Would be great wink

mr_smartepants wrote:

I don't know how you'd do your second option.  How would the script know what machine it's running on?  I'm not going to have it scan HWIDs and match a table of known laptops.  That would take longer than to copy the files over! smile

Ok i thougt there is an registry entrie or something like this.

We use small script with identifiy the hardware typ.

FOR /F "tokens=2 delims==" %%A IN ('WMIC csproduct GET Name /VALUE ^| FIND /I "Name="') DO SET HWType=%%A
ECHO Computer model: "%HWType%"
GOTO %HWType%
:RETURN
GOTO CONTINUE

With the identified typ e.g. HPCompaq8000EliteSFFPC the related driver installation will be started.

:HPCompaq8000EliteSFFPC
	SET LAPTOP=NO
	call s:\Driver\Win7\%HWType%\32\8000E.bat
GOTO CONTINUE

Sure this can not be used in your script, the hardware list will be too long.

But perhaps i can change your script for my needs.

Where can i configure that the script only extract the DP's X Y & Z and not all placed in the related folders ?
(Then i can create one for laptops and one for desktops)

Thanks in advance & Happy Easter holidays!

Re: Stand Alone Driverpack utility for all OS (XP, 2k3, 2k8, Vista, Win7)

...look for the presence of a battery to detect a portable, perhaps? hmm

Re: Stand Alone Driverpack utility for all OS (XP, 2k3, 2k8, Vista, Win7)

TechDud wrote:

...look for the presence of a battery to detect a portable, perhaps? hmm

I had the same idea, but did not found any command to check that.

Re: Stand Alone Driverpack utility for all OS (XP, 2k3, 2k8, Vista, Win7)

Would that not exist as an ACPI device in the Device Manager; presumably existing as a 'ghost driver' when not present?  Some systems may have two (or more?) installed, sometimes incorrectly.  When present, the battery might be accessed through I2C.  At a minimum, remaining battery capacity should be accessible.

This should help differentiate a note/net book from a UPS-backed desktop system, though.  The presence of mobile chipsets may not be enough to fully differentiate mobile & desktop systems.  I remember seeing at least one HP desktop with a mobile chipset.  I could be wrong, yet there are likely more, especially small-form factor desktops (D'h*ll/Wyse, HP/compaq, etc).

I would share some code with you, if i actually understood the relevant syntax.  The day of doing assembly language seems to have long passed me by.  (life just hasn't been the same without my copy of Visi-LaundryList)
"... accepted user input and confirmation, have shifted a register; now jump to another location, do a couple of boolean-related subroutines, then return & output a result in binary; hopefully not the Universal Time Code, this time!"
1011010101000011110101010........ * big_smile

Last edited by TechDud (2012-04-06 22:33:02)

Re: Stand Alone Driverpack utility for all OS (XP, 2k3, 2k8, Vista, Win7)

One other caveat;  improper I2C access with the battery could 'brick' it!  Reading contents should not have this effect.
I thought it best to make mention of the possibility, though.

Re: Stand Alone Driverpack utility for all OS (XP, 2k3, 2k8, Vista, Win7)

I really need to set some time aside to update the finisher...  having teenagers really chews up my evenings big_smile

DP BartPE Tutorial   DP_BASE Tutorial   HWID's Tool     Read BEFORE you post    UserBars!
http://d1syubgj0w3cyv.cloudfront.net/cdn/farfuture/VVyo3dzRp1allVk-OCdyukcaj701mcdrrsdDOyX2wK8/perpetual:forever/userbar/admin-1.png
The DriverPacks, the DP_Base program, and Support Forum are FREE!.

Re: Stand Alone Driverpack utility for all OS (XP, 2k3, 2k8, Vista, Win7)

Hey everyone,

i found something to identify the hardware typ (notebook/desktop).
Don't know if this can be implemented "easily" into the script.

"ChassisTypes"
http://msdn.microsoft.com/en-us/library … s.85).aspx

In a vbs script it looks like this:

' Get the SMBIOS asset tag from the Win32_SystemEnclosure class

Set objResults = objWMI.InstancesOf("Win32_SystemEnclosure")
bIsLaptop = false
bIsDesktop = false
bIsServer = false
For each objInstance in objResults

        If objInstance.ChassisTypes(0) = 12 or objInstance.ChassisTypes(0) = 21 then
                ' Ignore docking stations
        Else

                If not IsNull(objInstance.SMBIOSAssetTag) then
                        sAssetTag = Trim(objInstance.SMBIOSAssetTag)
                End if
                Select Case objInstance.ChassisTypes(0)
                Case "8", "9", "10", "11", "12", "14", "18", "21"
                        bIsLaptop = true
                Case "3", "4", "5", "6", "7", "15", "16"
                        bIsDesktop = true
                Case "23"
                        bIsServer = true
                Case Else
                        ' Do nothing
                End Select

        End if

Next

For a Desktop it would only select the DriverPacks:

  • Audio

  • Chipset

  • Graphics A&B

  • LAN

  • MassStorage

  • Misc

and for a Laptop all DriverPacks without the Graphics A&B.

Re: Stand Alone Driverpack utility for all OS (XP, 2k3, 2k8, Vista, Win7)

very nice! smile

Virtual environments are detectable, also (ChassisTypes=0 according to comments at end of your link).

edit: dead or dying battery error-trapping (read-only)? http://msdn.microsoft.com/en-us/library … 85%29.aspx
         utilizing objWMI.InstancesOf("Win32_PortableBattery") & variables: Availability, BatteryStatus, ConfigManagerErrorCode

Last edited by TechDud (2012-04-11 20:23:59)

Re: Stand Alone Driverpack utility for all OS (XP, 2k3, 2k8, Vista, Win7)

When I get some time I'll have to play with this and see if it can be implemented.  I'm working on a separate project that seems to be taking all my time.
Thanks!

Re: Stand Alone Driverpack utility for all OS (XP, 2k3, 2k8, Vista, Win7)

I'm running into an issue when I'm trying to run the script from a network share. The script sets a default drive letter Z:, but then once the elevate.cmd script runs I get a script error 'Can not find script file "Z:\SAD2-120326\bin\elevate.vbs".'

I did some more experimenting and found it's a UAC timing issue in my virtual Vista. It works if I use your timing script "For /L %%A in (1,1,1)..." for just one second and put that at the end of the elevate.cmd script. Right after "start wscript...". The normal script worked the first time I ran it a few hours ago, but ever since then it's not. Tried moving it to a different share location and even extracting from the download again.

The only thing that fixed it was to add a slight delay after the "start wscript..." to give Vista a little time to popup the UAC prompt so I can elevate the permission to 'cmd.exe'. I don't know if this is something you'd consider adding? Maybe just a 2 second delay or something.

Re: Stand Alone Driverpack utility for all OS (XP, 2k3, 2k8, Vista, Win7)

Interesting.  Yes, I can see why there'd be a delay from a network share.  I'll probably spend some time tweaking the code this weekend.