DriverCollect 3.1.6 for Deployment Server 6.8

DriverCollect 3.1.6 for Deployment Server 6.8
CondorMan's picture

DriverCollect can be used to collect driver files from production computers as well as organize drivers you download.

It is compatible with both x86 and x64 versions of Windows.

Run DriverCollect.exe without any arguments to see how to use it.

Note: DriverCollect requires the .Net Framework 2.0

DriverCollect 3.1.6 has the following changes:
Added registry scan mode to greatly increase the speed collecting installed drivers from a computer.
Added Update Files and Update DB modes for greater flexibility (If you want to restore a Driver Library to a new Deployment Server, simply copy the files and run drivercollect against that directory with the -UpdateDB switch
Added -signed switch to only gather signed drivers
You can now specify the process priority

DriverCollect 3.0.1 has the following changes:
Support for drivers with subdirectories.
Updated usage information.

Sorts drivers from source into subdirectories in destination.

License: AJSL
By clicking the download link below, you agree to the terms and conditions in the Altiris Juice Software License
Support: User-contributed tools on the Juice are not supported by Altiris Technical Support. If you have questions about a tool, please communicate directly with the author by visiting their profile page and clicking the 'contact' tab.
4
Average: 4 (6 votes)
AttachmentSize
DriverCollect.zip8.54 KB

Thanks!

You have no idea how much work this just saved us when the bugs get worked out! What is the recommended working directory to start the recurse on for a standard windows xp install?

Also, I keep getting some fileIO errors when I start at the windows root. I've attached the trace.

Creating Hard Link from c:\drivers\NTX86.5.0\Drivers\USB\VID_04A5&PID_1A20\U96V1
21.BIN to c:\drivers\NTIA64.6.0\Drivers\USB\VID_04A5&PID_20B0\U96V121.BIN
Parsing INF file: acpi.inf

Unhandled Exception: System.ArgumentException: Illegal characters in path.
   at System.Security.Permissions.FileIOPermission.HasIllegalCharacters(String[]
 str)
   at System.Security.Permissions.FileIOPermission.AddPathList(FileIOPermissionA
ccess access, AccessControlActions control, String[] pathListOrig, Boolean check
ForDuplicates, Boolean needFullPath, Boolean copyPathList)
   at System.Security.Permissions.FileIOPermission..ctor(FileIOPermissionAccess
access, String[] pathList, Boolean checkForDuplicates, Boolean needFullPath)
   at System.IO.Path.GetFullPath(String path)
   at DriverCollect.Program.copyFilesThreadLaunch()
   at DriverCollect.Program.findInfs(DirectoryInfo diDir)
   at DriverCollect.Program.findInfs(DirectoryInfo diDir)
   at DriverCollect.Program.Main(String[] args)

C:\>

What command-line are you using?

CondorMan's picture

Working directory doesn't matter. It only uses the Source and Destination directories that you specify.

What version of Windows XP are you running on?

What is the command-line that you are using to launch the application?

Thank you for your feedback.

RE:

I am running "drivercollect -src:c:\windows -dest:c:\test -mode:full

I am using Win XP S2

From the text of the exception it seems that the program is going through an inf and encouters a path with an invalid character. It then tries to go to that invalid path and throws an exception. Maybe if you put that into a try, catch block it would stop the problem.

Hope that helps.

Shaun

Multiple errors

You should setup "try" "catch" and only catch errors not throw them.

I get multiple errrors depending on where I run the application.

New Scripts???

Anyone care to share their DS Job scripts using the new driver collect? This is how mine look now:

Driver Collect:

REM Capture Drivers

REM If syspmsd.inf > 25 bytes, skip Build Mass Storage Device (we only want to do this once, on first run)
FOR %%R IN (\\%DSSERVER%\eXpress\HII\%OS%\syspmsd.inf) DO IF NOT "%%~zR" == "22" GOTO SkipBMSD

MD %temp%\Sysprep

IF "%OS%" == "WIN2K" GOTO SkipBMSD
IF "%OS%" == "WINXP" EXPAND \\%DSSERVER%\eXpress\Sysprep\DotNet\deploy.cab -F:sysprep.exe %temp%\Sysprep
IF "%OS%" == "WIN2003" EXPAND \\%DSSERVER%\eXpress\Sysprep\DotNet\deploy.cab -F:sysprep.exe %temp%\Sysprep

COPY /Y \\%DSSERVER%\eXpress\HII\%OS%\syspmsd.inf %temp%\Sysprep\sysprep.inf

%temp%\Sysprep\sysprep.exe -bmsd

COPY /Y %temp%\Sysprep\sysprep.inf \\%DSSERVER%\eXpress\HII\%OS%\syspmsd.inf

:SkipBMSD

REM Because DriverCollect.exe uses .NET, it must be run from the local drive
COPY /Y \\%DSSERVER%\eXpress\HII\DriverCollect.exe %temp%\DriverCollect.exe
if errorlevel 1 exit 253

REM Run DriverCollect.exe to collect all drivers to \\server\eXpress\Sysprep\Drivers
%temp%\DriverCollect.exe -Src:"C:" -Dst:"\\%DSSERVER%\eXpress\Temp\DriverCollect\%ID%" -mode:simple > \\%DSSERVER%\eXpress\HII\Logs\DriverCollect-%ID%.log
if errorlevel 1 Goto ErrorRunningDC
if errorlevel 0 Goto DCSuccess
if errorlevel -1073741515 Goto ErrorNoDotNet

:DCSuccess
REM Cleanup
DEL %temp%\DriverCollect.exe
DEL %temp%\Sysprep\*.* /Q
RD %temp%\Sysprep
exit 0

:ErrorRunningDC
echo Error: Unable to run DriverCollect.exe
exit 254

:ErrorNoDotNet
echo Error: .Net Framework 1.1 unavailable
exit 255

Driver Sort:
REM Sort Drivers
.\HII\DriverCollect.exe -Src:".\Temp\DriverCollect\%ID%" -Dst:".\HII\%OS%" -mode:full > .\HII\Logs\DriverSort-%ID%.log
if errorlevel 1 Goto ErrorRunningDS
if errorlevel 0 Goto DSSuccess
if errorlevel -1073741515 Goto ErrorNoDotNet

:DSSuccess
exit 0

:ErrorRunningDS
echo Error: Unable to run DriverCollect.exe
exit 254

:ErrorNoDotNet
echo Error: .Net Framework 1.1 unavailable
exit 255

Seems like it is working however, the Driver Sort moved my files from the .\temp\DriverCollect\%ID% to .\HII\WINXP folder.

The .\temp\DriverCollect\%ID% folder has 0 through 30 subdirectories and the .\HII\WINXP folder now has some strange NTxxx type folders with a drivers subdirectory under each....

Does this sound correct?

Thanks,
Kevin

That's exactly what it should do!

CondorMan's picture

I am glad to hear that it is working okay for you.

The new version moved from the descriptive version of Windows that you are familiar with (Win2K, WinXP, etc.) to pure version number (Win2K becomes NTX86.5.0, WinXP x64 becomes NTAMD64.5.1, and Vista x64 becomes NTAMD64.6.0). I made the change so it will be easy to add support new operating systems in the future.

Yes, it is designed so that it can support Vista drivers, but I haven't tried it on Vista yet, anyone want to try it out?

About that script, you will no longer be able to use the token %OS% since I am using version instead of name. I will see if I can find a token to replace it and post it here.

Spoke too soon I think

Did some additional testing today and it is not looking good. Been running the new DriverCollect.exe with the scripts I posted earlier and the process just never seems to end. The script starts and creates the .\temp\drivercollect\%id% folder and then it seems to continually populate the folder with subdirectories 0,1,2,3,4 all the way into the 300s.

The process never ended. I had to kill the process on the source computer when I started running out of drive space after about an hour. When looking through the folders it is creating, it seems to be creating tons of duplicates and they don't even seem like drivers. For example, folder 176 contains IPNAT.SYS and spuinst.inf. When I checked the .inf file, it looks like the uninstaller for hotfix KB886185. Folder 187 contains another spuninst.inf and telnet.exe?????

Any ideas on how to process or what may be going on here?

Thanks,
Kevin

spuinst.inf

CondorMan's picture

please send the .inf files to hiitools@gmail.com so I can find out why DriverCollect is treating it as a driver .inf.

Same problem here

Hello, I have the same problem. When DriverCollect gets to the last folder, it goes back to the first and starts over, creating new folders in the destination with the same files in them. I've zipped up the destination folder structure it created if that's of any help.

Try the latest version

CondorMan's picture

Try the latest version (updated today) of DriverCollect.exe. I have made many improvements. Also, be sure to check out the HII Job Wizard which will create a Collect Drivers Job for you. You can find it here.

New Driver Collect

CondorMan wrote:
Try the latest version (updated today) of DriverCollect.exe. I have made many improvements. Also, be sure to check out the HII Job Wizard which will create a Collect Drivers Job for you. You can find it here.

I just downloaded your new DriverCollect.exe. In the version information it lists 1.0.0.0. Is this correct?

Also, when running the driver collect job I am getting the "Error: .Net Framework 1.1 Unavailable" on most of the machines I try it on. Most if not all of these machine have .Net 3.0 installed.

Any ideas?

Thanks for your hard work!

DriverCollect 3.1.6 is not posted yet

CondorMan's picture

I have uploaded the new version (3.1.6) of DriverCollect, but apparently it has not been posted yet. When it does, the title of this post should change and the size of the download will be 13.72 KB.

Syndicate content