Jump to content

Repacking driver.cab


Recommended Posts

****, missed my chance. I don't seem to make it over here much. Glad you found it RyanVM, I suffered very, very much till I changed that.

The default value is infinity (or at least way too high), thus everything is compressed into one "folder". Problem is, setup access a few "random" files, at different times. Thus the "hang" when getting a file from the end of the folder. Another good trick, once you get the other stuff off your plate, would be to move the few files that ARE used during setup to the front of the file, possibly uncompressed, and then you could pack the rest tighter. Another Microsoft recommendation is to group similar files together. When creating the list of files to add to DRIVERS.CAB, I use the DIR command, with a qualifier (/O-E) to list files by extension, in reverse order. Thus the sys files come before the exe and dll files.

Link to comment
Share on other sites

From what I see, there are some files that are always extracted (us* for example), and others that are extracted if needed, e.g. if the hardware needing the drivers is found. I think there are more .sys files used then .dll or .exe files, which is why I put them in that order.

I played with it a bit, way back when, and it seemed the order tweaks did not make nearly the impact the folder size did. I still believe the best would be to study DOSNET.INF and TXTSETUP.SIF, and see which files are actually (always) extracted from DRIVERS.CAB, and put them uncompressed in the begining. On the other hand, I was assured that Microsoft did not do anything fancy like this, and I, like you, lost motivation to tweak every byte and second out of it.

So ... in answer to your question, I don't really know which order they are extracted in, but I am sure it is not sequentially.

Link to comment
Share on other sites


I took a look at jdeboeck's batch, should I add or remove the lines in there?

rem Compressing driver.cab

echo .Set Cabinet=on>> driver.ddf

echo .Set Compress=on>> driver.ddf

echo .Set CompressionType=LZX>> driver.ddf

echo .Set CompressionMemory=21>> driver.ddf

echo .Set CabinetNameTemplate=driver.cab>> driver.ddf

echo .Set MaxDiskSize=CDROM>> driver.ddf

echo .Set DiskDirectory1=i386>> driver.ddf

According to RyanVM, he doesnt want CompressionType=LZX and CompressionMemory=21, I guess I'll take those out and add FolderSizeThreshold=5000000. Correct me if I'm wrong.

Link to comment
Share on other sites

No, you can leave those settings in. Just add the FolderSizeThreshold key and you're good to go.

I actually combined his decompress/compress batches into one and updated them for sp2. Send me an IM and I'll send it to you (I don't want to post it on here out of respect for his work).

Link to comment
Share on other sites

7zip has nothing to do with, sorry. The closest thing in 7zip would be the dictionary size, which influences decompression speed. (but only indirectly, lower compression ratio -> better decompression speed)



Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Create New...