Sign in to follow this  
Followers 0
RyanVM

Repacking driver.cab

33 posts in this topic

OK, I tried searching for the answer, but IBB is pretty much useless in its search functionality. What are the settings used for makecab when recompressing driver.cab (after combining it with the other driver cabs) that allows for faster decompression? Is it just lowering CompressionMemory?

0

Share this post


Link to post
Share on other sites

I pretty much used the default settings in powerarchiver when I recompressed driver.cab and sp2.cab

0

Share this post


Link to post
Share on other sites

This is driving me nuts, because I think it was GreenMachine who posted on this before, but I can't find his post.

0

Share this post


Link to post
Share on other sites
This is driving me nuts, because I think it was GreenMachine who posted on this before, but I can't find his post.

Why don't you take a look at Jdeboeck's batch files? They are able to remove drivers and other stuff and then recompress everything!

http://jdeboeck.msfnhosting.com

0

Share this post


Link to post
Share on other sites

Here's the link to a specific thread about CABARC.EXE (CabARC) It's part of a discution on longhorn but it's the correct tool to use for making CAB's for XP install discs.

Here's the command line for it:

cabarc -r -p -m LZX:21 N mmssetup.cab *.*

I've used it several times when I was building both unattended XP install discs and testing MCE 2005. It's part of an offical Microsoft SDK that you can download free from their site (sorry cant remember where). It's offical name is "Cabinet Software Development Kit" the commands I've put in are very well documented but I've found I can shave a few meg off any standard MS cab by using this higher compression optimisation.

0

Share this post


Link to post
Share on other sites
This is driving me nuts, because I think it was GreenMachine who posted on this before, but I can't find his post.

Why don't you take a look at Jdeboeck's batch files? They are able to remove drivers and other stuff and then recompress everything!

http://jdeboeck.msfnhosting.com

That's what I use :P. It suffers from the slow decompression time that I'm referring to. IIRC, you can adjust the settings so that the cab ends up at around 100MB (instead of ~80MB), but decompresses way faster. Heck, nLite even has the option to do the one or the other.

I think I'm gonna PM nuhi to get him in this thread :P

0

Share this post


Link to post
Share on other sites
Here's the link to a specific thread about CABARC.EXE (CabARC) It's part of a discution on longhorn but it's the correct tool to use for making CAB's for XP install discs.

Here's the command line for it:

cabarc -r -p -m LZX:21 N mmssetup.cab *.*

I've used it several times when I was building both unattended XP install discs and testing MCE 2005. It's part of an offical Microsoft SDK that you can download free from their site (sorry cant remember where). It's offical name is "Cabinet Software Development Kit" the commands I've put in are very well documented but I've found I can shave a few meg off any standard MS cab by using this higher compression optimisation.

LZX:21 is what's giving you the higher compression. Those options are available with makecab as well, using the command switches /D CompressionType=LZX and /D CompressionMemory=21.

0

Share this post


Link to post
Share on other sites

In your cab ddf file enter

.Set FolderSizeThreshold=5000000

or

.Set FolderSizeThreshold=2500000

Thx to mr. GreenMachine

0

Share this post


Link to post
Share on other sites

THAT'S IT!!!

Thanks :D

(And I KNEW it was GreenMachine who posted it first :P)

0

Share this post


Link to post
Share on other sites

either that, or you're looking for this:

makecab /D CompressionType=LZX /D CompressionMemory=21

This is for individual files, I suppose.

0

Share this post


Link to post
Share on other sites
either that, or you're looking for this:
makecab /D CompressionType=LZX /D CompressionMemory=21

This is for individual files, I suppose.

And it's completely irrelevant. In fact, I already said those settings weren't what I needed.

LZX:21 is what's giving you the higher compression. Those options are available with makecab as well, using the command switches /D CompressionType=LZX and /D CompressionMemory=21.
nuhi gave me exactly what I was looking for.
0

Share this post


Link to post
Share on other sites

OMG, that made a HUGE difference! And driver.cab was still only 78MB (no drivers removed).

Thanks a million! :thumbsup

0

Share this post


Link to post
Share on other sites
OMG, that made a HUGE difference!  And driver.cab was still only 78MB (no drivers removed).

Thanks a million! :thumbsup

Could you maybe higher that value to get an even smaller driver.cab?

0

Share this post


Link to post
Share on other sites

The point of that number isn't to increase compression, but to speedup decompression. Using the default value, it can take a long time to decompress files from there (setup will just "hang" from time to time).

FolderSizeThreshold=5000000 made a HUGE difference.

0

Share this post


Link to post
Share on other sites

I just found this document :http://home.hiwaay.net/~pittman/archive/makecab.doc, which explains makecab/ddf files in detail.

This is what it says about FolderSizeThreshold:

Folders are compression/encryption boundaries.  The state of the compressor and cryptosystem are reset at folder boundaries.  To access a file in a folder, the folder must be decrypted and decompressed starting from the front of the folder and continuing through to the desired file.  Thus, smaller folder thresholds are appropriate for a layout where a small number of files needs to be randomly accessed quickly from a cabinet.  On the other hand, larger folder thresholds permit the compressor to examine more data, and so generally yield better compression results.  For a layout where the files will be accessed sequentially and most of the files will be accessed, a larger folder threshold is best.

--

Pyron

0

Share this post


Link to post
Share on other sites

Good info to have - thanks! That definitely explains why 5000000 helped so much. I suppose if I were really bored, I'd see how 10000000 worked, but not now. I've got some other stuff on my plate to keep my busy ;):P

0

Share this post


Link to post
Share on other sites

****, 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.

0

Share this post


Link to post
Share on other sites

Does Windows setup actually extract them in that order, though?

0

Share this post


Link to post
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.

0

Share this post


Link to post
Share on other sites

Thanks!

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.

0

Share this post


Link to post
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).

0

Share this post


Link to post
Share on other sites

That's roughly what mine is too.

0

Share this post


Link to post
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
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.