Okay, so a couple of you wanted to check out the little applet I made to further slim an XP installation using the XP Embedded database. First a warning: I didn't make this app with other users in mind. I made it originally as a test to see if it was even possible to use the XPe DB to remove components from an XP install CD. i worked on it enough so it was useable to me. So if you don't like how the UI is, or the fact that you need to install the XPe DB, or whatever...too freaking bad.
Basically you just start it up, File->Open browse to an I386 directory of an XP setup CD. Typically I use nLite and before making an ISO I'll fire up this applet. If you really hate your spare time you could run it on a virgin XP setup CD. It'll start reading the components from the XPe database. It may be slow the first time as SQL Server builds the indexes for my queries. I tried using MSFT's own stored procedures as much as possible, but there were some queries that had to be dynamic. Also, because the fastest (as in less time coding) and easiest way I could look up components was based on filenames, the bigger your setup CD the longer it'll take. It takes about 20-30 seconds on my P4 2.8 with 1GB RAM.
Once it's done reading your setup you can start browsing through the components and selecting which you want to remove. It's pretty self-explanatory I think... Just be careful what you remove. There's no undo...

It'll show you what a component's dependencies and dependents are as well as what files and registry entries it includes.
Another useful timesaver I put in there were 3 options under the "Tools" menu: Add/Remove EWF and Minlogon and an option to "trim" language support. It's only for US English right now... Sorry to our friends from outside the US...it wasn't because I don't care, just don't have enough time in the day for everything.

When you try to add EWF or Minlogon it'll need you to point it to a directory with the files. ewf.sys, ewfmgr.exe, and ewfntldr for EWF. minlogon.exe for Minlogon. EWF will be installed but will not be enabled at the first boot up. You need to enable it yourself. Same for minlogon. All it does is add the registry entry and put the binary in the system32 directory. If you plan on using minlogon you need to rename the files yourself.
Once you've butchered your setup enough I recommend you
save as... in a seperate directory. That way if it's all messed up you can just retry it. Here's the deal: once it saves the files just back up (in another directory) the original files that are in the I386 directory. That's what I usually do. Then I copy over the slimmed versions into the I386 directory, make an ISO, test it in VirtualPC, and if it works then I burn an ISO and install the system. If the install doesn't work then I just copy the backups back into the I386 directory. My applet doesn't actually delete any files from the setup, it just removes the commands to install the files or registry entries. That's all. It's much safer that way so you can very easily restore your nLite install.
I'm trying to think of what else you may need to know.... oh yeah it's a .NET 1.1 app...
OH NO!! THE HORROR!!! 3ViL micr050f7 5Hi7.i'lL n3V3R u23 i7. mIcR050f7 5UX0R2!!
if you don't like .NET...too bad. write your own in perl or RISC assembly or whatever gets your rocks off.
There's a config file in there for the connection string in case you've got the DB installed on another system to where you're using the applet.
Uhh... I guess that's it for now. If there are any serious issues and I have time (not likely this week since I've got other things going on this weekend) I'll fix it.
If you have problems connecting to the database, please check C:\Program Files\Microsoft SQL Server\80\Tools\Binn for an app named SVRNETCN.exe. Use that to add Named Pipes to the list of protocols. Close that app then restart MSDE using the services control panel (MSSQLSERVER is the service name).
May 4th, 2005: Okay, I made a couple of quick and dirty changes. The new version is included. One is to implement check boxes and the other is a search window. You can use the search window without opening a configuration so if you're just curious about some file or component you can fire up the app and do a search. Once again, I'm working on limited time so YMMV... The new config file defaults to the MantisSQLDBEval database.
May 7th, 2005: Another version... I decided to disable the language trimming menu because it's very easy to screw things up if you're not careful. I'll get it back soon. In the mean time you can do it manually by looking at the different Language Support macros and what dependencies they have and remove what you don't need. I've added a couple things: you can now save a configuration of all the components in your install, when you open up a setup and load a config it'll go through and remove any component not in the config. I also added a few required components in the settings file. This is mainly to prevent users from removing language or keyboard options that are necessary to run setup. More required components can always be added to the config file. Also, the component tree is a bit more user friendly in that any folders without components will be grayed out so it makes it easier to find stuff. I fixed a couple things in the search window also. That's all I can think of now... It's late and it's been a long week...
May 11th, 2005: Okay, here's the latest version I've been using. Some more UI tweaks to make it faster and easier to see if a component has any dependencies/dependents. Now, this version has a major difference which prevents you from using any config XML files saved in the previous version. My app now reads in
all components from the DB (yes, there were more) yet it only displays depending on the visibility setting I added to the config file. It defaults to 200 which is the same setting I was using in the previous version. If you're really adventurous you can put the setting down to 0 and you'll see a bunch of extra stuff. What I recommend you do is read in your existing CD setup directory and then save the configuration XML file based off that CD. After that go ahead and start messing around, but I'm warning you: you can really screws things up if you're not careful because setting the visibility down to 0 shows a lot of extra low-level stuff. I've also improved the removal functionality so that it's more "proper". Before I was just not allowing the files to be copied over, but the setup still tried to register them. So now I edit the syssetup.inf file (and wbem.inf if necessary). The program saves a backup of them before saving the edited one, but as always I recommend you "Save As..." into another directory rather than overwriting your nLite setup. I think that's it... Once again it's late so I might have missed something. I've been using it for a couple days now without a problem so you should be fine.
May 20th, 2005: Just some UI changes to make the app more user friendly (in my opinion at least). The XML config files from the previous version are still compatible with this new one.