PSFExtractor: A Tool to Extract All PSF Files

Discuss Windows 11 and newer.
Post Reply
Zheng He
User avatar
Donator
Posts: 123
Joined: Sat Apr 05, 2014 7:21 am
Location: People's Republic of China

PSFExtractor: A Tool to Extract All PSF Files

Post by Zheng He »

Windows 11 has a "new" structure for its CUs, that is, CAB + PSF express format. For example, Windows 11 build 22000.51 has Windows10.0-KB5004564-x64.cab and Windows10.0-KB5004564-x64.psf for its CU. If you use dism to install the CAB directly, you'll get an error says files are missing. So it's reasonable to guess that PSF is a necessary part for those express CABs to work. And it is.

PSFExtractor has been integrated into UUP converter from UUPDump, adguard, etc since May. It has the ability to transform CAB + PSF express format into an applicable version. Just place both CAB and PSF file in the same folder and rename them to have the same name (if not), drag the CAB file onto PSFExtractor.exe and you'll have the applicable version in a minute. The extracted folder contains the update and you can use dism to install it, or use CABARC to make your own CAB.

Code: Select all

PSFExtractor.exe Windows10.0-KB5004564-x64.cab
Image

As some of you might know, Windows 10 build 21382 already had this format tested. But the express format exists everywhere, not limited to recent CUs. In fact, almost every update also exists in the express format, however only WU could handle it correctly before. This is when manual mode of PSFExtractor comes in handy.

The CAB file contains manifests, while the PSF file contains actual deltas. This applies to all express format. Inside the CAB file there's a XML file which contains the information we need to extract deltas from the PSF file. Sometimes you need to find the XML file by yourself. If we manually specify XML file to extract a PSF, like Windows10.0-KB5004564-x64.psf, the command line will be like this:

Code: Select all

PSFExtractor.exe -m -v2 Windows10.0-KB5004564-x64.psf Windows10.0-KB5004564-x64\express.psf.cix.xml Windows10.0-KB5004564-x64
Image

That's it.

Remember we have Windows Vista SP2 build 6002.16489 en-us in express format only? It's time to install it! Extract the express CAB and we found 6 XML files, for 5 languages and one neutral respectively. We have 2 PSF files, one neutral and the other one en-us. Now we can extract the PSF with:

Code: Select all

PSFExtractor.exe -m -v2 windows6.0-kb948465-x86-neutral.psf windows6.0-kb948465-x86-express\windows6.0-kb948465-x86-neutral.psf.cix.xml windows6.0-kb948465-x86-express
PSFExtractor.exe -m -v2 windows6.0-kb948465-x86-en-us.psf windows6.0-kb948465-x86-express\windows6.0-kb948465-x86-en-us.psf.cix.xml windows6.0-kb948465-x86-express
Image

Use pkgmgr or Dism++ to install the service pack and it will just works as any non-express update!

Image

But it doesn't stop here. We have Windows XP SP3 build 2600.5508 ja-jp only in express format, too. It's a little different from what NT6.0+ uses. PSFExtractor supports the old format since v2.00. To extract the PSF, we need to first extract the express installer and use the PSM file in it.

Code: Select all

PSFExtractor.exe -m -v1 windowsxp-sp3-x86fre-jpn-5508.psf windowsxp-kb936929-sp3-express-x86-jpn\WindowsXP-SP3-x86fre-JPN-5508.psm windowsxp-kb936929-sp3-express-x86-jpn
Run update\update.exe and it will install as normal!

Image

Image

With this tool, any PSF (with corresponding XML/PSM) can be processed. Express installers are finally defeated!

Github repository: https://github.com/Secant1006/PSFExtractor

Post Reply