Windows XP total slipstream

Updated January 30, 2010.
Windows XP will not have any new Service Packs, so there is rarely any need to develop new content. HFSLIP will always support my fileset, and if I do happen to make any adjustments in my file or processes, I will post them.

This is only for Windows XP, so stop reading if...

I have always been tutorial-heavy, because I think it's more valuable for people to learn. What you will read has been described as "mind-numbingly thorough" (MP3 Car Forums) and that means I've reached my goal.

How to do this: download HFSLIP, then my XP fileset, then put my files in FDVFILES. Everything you read below is essentially "how to."

Before we begin

It's not required, but it helps a lot if you:

You should know that although using HFSLIP is technically not required, I highly recommend that you do.

Exroidal The Windows Wizard has tips for advanced users throughout.
Beginners can safely ignore what Exroidal has to say.

Step 1

Create a new folder on D:\ called HFSLIP. This folder must not have any punctuation in its name, so don't decide to get creative. (You could call it WINXP, but don't call it _HFSLIP or HFSLIP!XP or something).

Unzip the HFSLIP archive contents to D:\HFSLIP

Double-click on hfslip-x.x.x.cmd (the x's are the version number)

You'll see a DOS box flick on and then close immediately. What HFSLIP has done is to create several subfolders and then terminate automatically.

Copy the i386 directory from the Windows XP CD to D:\HFSLIP\SOURCE

Copy WIN51, WIN51IP, and if you have them, WIN51IP.SP1 or .SP2 or .SP3 from the Windows XP CD to D:\HFSLIP\SOURCE

Step 2 (optional)

Ignore this step if you already have SP3 slipstreamed.

Download Windows XP Service Pack 3. You may download your native language version as HFSLIP is multilingual.

Put SP3's .EXE file, WindowsXP-KB936929-SP3-x86-ENU.exe, into the HF folder and go to Step Three.

Be aware that HFSLIP will slipstream SP3 permanently, so it happens just one time. It won't go through it every time you run HFSLIP.

Step 3

Populate the HF folder
Start downloading all of the hotfixes you need and save them in the HF folder (D:\HFSLIP\HF). You can find Windows XP hotfixes here courtesy of Muppet Hunter.

The HF folder can take Type 1 and Type 2 Hotfixes as well as MSI installers. Here's what it can't take: hotfixes for Internet Explorer 6, 7 and 8. Think about it: combining hotfixes for two or three different versions of IE is only asking for problems. What I'm saying here just makes sense to you, I hope!

Do not rename the files. (However, it is ok to put a prefix to the filename like Z_ in front in case you want to sort some hotfixes.)

Please note that links to files with ENU in them are English language updates only. (Remember that HFSLIP supports languages other than English, but finding the appropriate Hotfixes is up to you!)

Windows Media Codecs (optional)
Download WMP11 and extract the contents using the -x switch to get the WMFDIST file, then place it in the HF folder and discard the rest. HFSLIP will slipstream WM11 codecs, but not the player, into Windows. This EXE will also cause the Windows DRM (Digital Rights Management) files to be updated as well. There are some software packages that call the DRM dlls, like Goldwave. (Goldwave is great!)

Step 4

Populate the HFTOOLS folder
Download the following and put them in HFTOOLS.

ModifyPE (unzip it, and copy the executable (modifype.exe) to both HFTOOLS and your own C:\WINNT\system32. (Here is another source for

Mkisofs.exe (this version does not need Cygwin, or you can use Mkisofs.exe and Cygwin) and put it into HFTOOLS so that HFSLIP can make an ISO for you. You may also use CDImage.exe, if you can find it . Note: to find a version of Mkisofs.exe that does not need a Cygwin DLL, search Google for "Mingw32 mkisofs.exe"



Extract.exe (makecab.exe is in here, and is handy but not required).

Step 5 (optional)

Integrating Application Add-Ons
Here is where we put those nifty silent installers. Filenames here must have 8.3 formatting, and must be without spaces or punctuation.

The HFSVCPACK Directory - For installing Self Extracting Silent Switchless Installers (.REG tweak files, .INF files, CMD files)

The HFSVCPACK_SW1 Directory - For MSI files (except Microsoft XML installation files, which go in HF)

The HFSVCPACK_SW2 Directory - For installing programs packaged with /Q:A /R:N switches

If you want more application integration options, visit the advanced section of the HFSLIP site. Here is how to make switchless installers. RyanVM has some handy installers. Lots of silent switchless application info is listed here.

Step 6

[step is blank for parity with Win2k instructions]

Step 7

Make a decision about Internet Explorer.
You need to decide now whether you will be using IE or not.

If so, put Internet Explorer hotfix files in your HF Directory.

If not, put IE 6 hotfixes in your HF directory. (What? Yeah, you read that right. If you are removing IE, put IE6 fixes in HF)

Download my fileset.

Save the file to D:\ and unzip its contents to D:\HFSLIP\FDVFILES

Step 8

Making a boot sector, and making sure we're good so far.
Whether you're making an actual install CD or just an ISO to use later, you'll have to have a boot sector. You can download them from lots of places on the Internet, or if you leave your Windows XP CD in the drive when running HFSLIP later, it will extract a boot sector image (using BBIE.EXE automatically) for you. That TommyP, he thought of everything, didn't he? If, for whatever reason, you don't have a Windows CD on hand but you do have a boot sector file, rename it to boot.bin and put it in HFTOOLS.

Step 9 (optional)

Add some necessary new and replacement files.

Other modified binaries go into D:\HFSLIP\REPLACE
The contents of the REPLACE folder will be added to the final folder of source files at the end of the slipstreaming process. If you want to overwrite any files, place those files in this folder. Some possible modified files to place here include TCPIP.SYS, hacked to allow multiple half open connections for torrenting. That's up to you.

Get a browser right now before you forget (Firefox, Opera). If you rip out IE, you won't be able to download a new browser unless you want to use FTP which is a real pain! (You could, I suppose, put the OffByOne mini-browser into an $OEM$ setup, see below)

While you're at it, take this opportunity to download some software that I recommend.

If you're one of Bold Fortune's old users, open up FINAL1.INF and FINAL2.INF in my files. Bold was big on not deleting files until they were registered, which in his case meant allowing them to install. With my FINAL files, you can install a file, register it, and have it deleted automatically before Windows even boots for the first time. Although Bold and I have friction, I don't hold it against his users and this option is just for them.

Step 10

Integrate SATA support (if you need it)

TXTSETUP.SIF and LAYOUT.INF file "protection."
This one is easy. I keep telling people that the reason Windows chokes on some modified INF files like LAYOUT is because it checks file sizes against the list in the LAYOUT.INF file of any file that has an _X in its line. In other words, if we open LAYOUT.INF and TXTSETUP.SIF, and find the line of that file, it reads:

layout.inf = 2,,244801,,,,_x,20,0,0

If you want to modify this file, delete the _X!

layout.inf = 2,,244801,,,,,20,0,0

ZOMG the _X is gone!!! That's all there is to it! Stop making this harder than it is! You might as well take the _X out from the whole file list (but not the whole INF file, because there are some you need to keep, such as under [SourceDisksNames].) Just remove _X from the list of files under [SourceDisksFiles]. This means global replace of ,_x, with ,, (comma underscore x comma with comma comma)

My fileset does this for you.

Before I get into this, realize that will allow you to do this too.

If you have a single-file driver that you want to integrate and have installed at boot time
This is a popular one for getting Windows to see SATA drives / controllers at boot time. In reality, a SATA driver INF file would probably be named TxtSetup.oem, but in this example, your driver's INF file will be called DRIVER.INF, and the single-file driver will be called DRIVER.SYS.

"mySATAdevice" = PCI\VEN_1791&DEV_0907
"mySATAdevice" = PCI\VEN_1791&DEV_0908
"mySATAdevice" = PCI\VEN_1791&DEV_0909
"mySATAdevice" = PCI\VEN_09b9&DEV_9712
"mySATAdevice" = PCI\VEN_09b9&DEV_9713

PCI\VEN_1791&DEV_0907 = "mySATAdevice"
PCI\VEN_1791&DEV_0908 = "mySATAdevice"
PCI\VEN_1791&DEV_0909 = "mySATAdevice"
PCI\VEN_09b9&DEV_9712 = "mySATAdevice"
PCI\VEN_09b9&DEV_9713 = "mySATAdevice"

driver.sys = 1,,,,,,,4,1,0

mySATAdevice = driver.sys,4

driver.sys = 16

mySATAdevice = "My SATA Driver for Windows XP"

Step 11 (optional)

Making an $OEM$ folder

In this step, we'll create an $OEM$ directory and pack it with utilities.

Inside of D:\HFSLIP\SOURCE, make a folder called $OEM$. Inside of it, make another folder called $$. Inside of that, make another folder called SYSTEM32. You now have D: \ HFSLIP \ SOURCE \ $OEM$ \ $$ \ SYSTEM32

In order to make Windows more useful in a variety of ways when it's installed, we need to download a bunch of utilities that will go into the \WINNT\SYSTEM32 directory automatically at installation. Many of these files come in archives zipped or packed along with help files, text files, chm helpfiles, etc. Just unzip each file and delete these nonessential files, then put all of the .EXEs and .DLLs inside of D: \ HFSLIP \ SOURCE \ $OEM$ \ $$ \ SYSTEM32

Here is a sample of my folder and the programs I use.

Please make sure that the $OEM$ folder is in D:\HFSLIP\SOURCE and not in your i386 directory. :

Although you should always make a bootable CD, sometimes an older machine's BIOS doesn't let you boot from the CD. You would then have to use a floppy to install, but your $OEM$ files wouldn't copy over. Here is where we solve one of the enduring mysteries of $OEM$ setups.

Q. Why do some people say to put $OEM$ into the root, and some say to put $OEM$ into \I386?
A. $OEM$ in the root is for CD-based installs; $OEM$ in I386 is for floppy disk-based installs. Put $OEM$ both places if you want to be covered for both types of installations. MS deleted the KB on this (wow, imagine that! MS deleted a KB article!!)

So, if you wanted to install your $OEM$ files also when installing from floppy, you'd have to have duplicate file sets in:
D: \ HFSLIP \ SOURCE \ $OEM$ \ $$ \ SYSTEM32
as well as
D: \ HFSLIP \ SOURCE \ I386 \ $OEM$ \ $$ \ SYSTEM32.

Just a reminder... my fileset does not support floppy-based installs. I'd have to cut up DOSNET.INF and I don't feel like it. Go ahead and do it for me and you'll see your name in my credits and gain the admiration of about 10 guys out there who install via DOS.

Step 12 (optional)

Make a bootable floppy or recovery CD.

In any emergency, you'll need a way to fix things. I recommend a Windows PE CD. I use the Ultimate Boot CD For Windows. You'll need Windows XP or that trial version of Windows 2003 to create it.

Step 13

This is where we finish up.

Now run HFSLIP again (for the second time). The process will start to slipstream the hotfixes and integrate the contents of whatever you added in other folders. You may see some error messages pass by on the screen when the script is running. Ignore them. This is due to the fact that many worthless binaries are included with each hotfix. They're getting stripped out and thrown away.

When it's done, Windows is fully slipstreamed in SOURCESS (note the double S on the end) and you will have a date-stamped ISO file. Use it in a Virtual Machine or burn it to CD if you like.

Language issues?
Languages are automatically chosen depending on the source. As long as you put the correct language hotfix in the HF folder, you will not have issues. If you get prompted during installation to report languages, please post a message to the HFSLIP forum so your language can be added to the program.

Other problems?
Inside of SOURCESS, you will find an ERROR_REPORT.TXT file. HFSLIP creates this no matter what -- even if no errors happened. Open this file and read the instructions.

Using nLite after HFSLIP?
(Copied from HFSLIP.ORG). If you plan on using nLite, please do so on the SOURCESS folder after running HFSLIP. Some items to consider:
Do NOT remove sound drivers. If you remove sound drivers, Windows Media codecs won't work.
You have to add some file names to nLite's "keep" box. Please use this utility to generate a list of new files slipstreamed by HFSLIP.

Please note that my fileset does not work with nLite, for the same reason that two mechanics can't work on the same engine at the same time. Either use one or the other, but not both. Nuhi's software is way more versatile than this process.

The initial windows shell launch may take about 30 seconds or more to appear the first time you boot. This is a normal, ONE time event . Windows is installing registry hives and registering DLLs, and other binaries. This delay will never happen again.

Windows Update will be gone, as it was 100% MS HTML engine dependant. Hey you know what? Who cares? Download your fixes manually from the hotfix pages here at It's why Muppet Hunter does the work!

Did you know that Add/Remove Programs was also MS HTML dependant? Use appwiz.cpl from ReactOS.

Random notes

Disabling Windows File Protection.

First of all, if you're installing Windows for your Grandmother, then disabling WFP is a really bad idea. Think about it. Her system will be screwed up by the end of the week with all sorts of screwed up DLL problems from the software she's downloaded. It was designed not to thwart you, but to prevent software from changing your DLLs on you. WFP is a good thing 95% of the time. Personally, I don't like some piece of shareware replacing, say, OLEAUT32.DLL and other such files, so I leave WFP turned on. But if you really want to disable it, read on.

Windows File Protection in Service Pack 1 disallows the ffffff9d registry hack discovered by Jeremy Collake. Jeremy details how to modify each new version of SFC.DLL on this page.

Shutting off WFP using only two Registry keys
This was an "oops." I set these keys in fileset 8 (now obsolete) and couldn't figure out why WFP stopped working.

HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon","SFCDllCacheDir",,"z:"
HKLM,"SOFTWARE\Policies\Microsoft\Windows NT\Windows File Protection","SFCDllCacheDir",,"z:"

These keys are optional in 2000, XP, and 2003. Windows already knows where to find the dllcache, you don't need to tell it. But Microsoft created these two keys to let you tell it. And if you give Windows an inavlid path, it won't find the dllcache, a WFP error will show one time in the error log, and WFP will be off. UNC paths don't work (in 2000 anyway). If UNC paths worked, wouldn't it be great to keep all of your files for all of the users in a domain on one server? Nah, that would make too much sense, so Microsoft would never do it.

Shutting off WFP with a hacked DLL
Jeremy Collake created a "generalize patch procedure" to do this which requires an accompanying reg key (see above). A programmer friend of mine created two DLL hacks that just flat out disable SFC, no reg hack needed: by creating a new version of SFCFILES.DLL that is "empty," which avoids having to hack SFC.DLL. Here is the source for the empty SFCFILES.DLL. The idea and initial source for this came from Damian Bakowski, we've just tweaked his source a little.

If you're afraid of the space Windows takes up, you can always set the size of the dllcache to one so that it stores next to nothing. Be sure to use the purgecache switch before the cachesize switch or your setting will do nothing. Please do not put "SFCQuota=0" in your WINNT.SIF. Make it anything other than zero. If you set it to zero and you later run SFC.EXE to scan files or rebuild the file cache, YOU CAN KILL YOUR WINDOWS INSTALLATION. The next time you boot, you may get an error message that the machine is unable to find NTOSKRNL.EXE. The Knowledge Base will claim that this is a problem with the BOOT.INI file, but trust me, it is totally unrelated.

EDIT SETUPAPI.DLL (This has been done for you in my files)
Click here to see how to edit SETUPAPI.DLL with XVI32. I provide this file for you in my fileset. This illustration shows the modifications necessary to turn of digital signature checking during Windows setup. The empty SFCFILES.DLL creator made this for me, too.

Make the edits shown, save the file, and then exit the program.

Now we have to fix the headers on the DLLs we modified! This is not optional!

We need a way to update the checksum inside of this dll. Time for ModifyPE, with it's -c switch, which will recalculate the checksum and store it so that the file does not appear to be corrupt to Windows. Remember, modifype.exe must have been moved to your C:\WINNT\system32 directory after you downloaded it.

Open a command prompt again.

Type D: [ENTER]


Type modifype setupapi.dll -c

Type makecab setupapi.dll

Close this command prompt.

Having a hacked SYSSETUP.DLL file allows us to comment out every INF we don't want to install.



IE removal process by Fred Vorck. HFSLIP created by TommyP and maintained by TommyP.

Copyright issues. The purpose of this explanation, and information about reverse engineering. Although Microsoft retains Copyright, when we edit INF files, we make use of a portion of Windows files under the doctrine of Fair Use.

This procedure is to enhance your understanding of Windows XP. If you carry it out it ends Microsoft's technical support obligations to you and you'll probably violate their contract by adhesion (EULA). Also, don't think for one second that you could do this and complain if something goes wrong. We're only trying to speed your system up and maybe teach you some things.