MSP patch files

What is MSP

An MSP-file contains a patch to be applied to an installed software product, or to an AIP.

A patch is usually an update to a new version of a software product.

A typical example for MSP-files are the updates for Acrobat and Adobe Reader provided by Adobe.

Creating a patch file is an alternative to creating a new MSI-file.

Howto apply MSP

A patch from an MSP-file can be applied to an already installed software product by double-clicking the MSP-file, or by issuing the command
msiexec /p patch.msp REINSTALL=ALL REINSTALLMODE=omus
(the options are important, otherwise it only updates the locally cached copy of the MSI-file).

It is also possible to let windows installer install an MSI-file plus one or more MSP-files in one step with a command like this:
msiexec /I package.msi PATCH="c:\directory\patch.msp"

It is not possible to directly specify an MSP-file when deploying software with GPO, like it can be done with MST files.

In theory you could also just apply the MSP to the installed version with a GPO startup script, instead with GPO software deployment, but then you must do the version management for that software yourself. The script runs each time when the PC boots, so it must check which version is already installed. Also repair and uninstall probably become tricky, because you have a later version installed, than noted in the group policy. So you should probably not just deploy the MSP updates with the script, but the base version MSI of that software as well.

Integrate MSP into MSI

It is possible to slipstream one or more patches from MSP-files into an AIP (for example one extracted from an MSI-file), and to deploy that with GPO.

manual slipstreaming

Slipstreaming requires these steps:

  1. extract the MSI file as AIP into an empty directory with the command
    msiexec /qb /a "%msi%" TARGETDIR="%aip%"
  2. apply the patch from the MSP-file with the command
    msiexec /qb /a "%msi%" /p "%msp%"

automatic slipstreaming

If you don't want to do this manually, you may use my batch ApplyMSP.bat. Simply create a new directory, and copy the MSI-file (or an AIP), the MSP-file, and this BAT-file there. Then double-click on the BAT. It will display the name of the MSI-file, and of the MSP-file that it has found. Then it asks if the MSI is a self-contained MSI, or part of an AIP. You must typein either 'MSI' or 'AIP' and press the enter key. The result of the slipstreaming will always be an AIP. Thus if there is more than one MSP to be applied, you must copy all but the first into the AIP directory, one at a time, and apply them there (also copy the BAT file into the AIP directory and double-click it there). I'm using this for Adobe Reader.

News: try the new version ApplyMSP2.bat. It detects itself whether it is processing a freshly extracted MSI, or an already slipstreamed AIP. It simply checks whether or not a file Data1.cab still exists. If yes it is processing a freshly extracted MSI. If not, it processes an AIP into which already another MSP has been slipstreamed.

Notes

  • The result is not a self-contained MSI-file, but an AIP.
  • replace %aip% with the full path to an empty directory (will become the AIP).
  • replace %msi% and %msp% with the path to those files (don't know if this must also be the full path).
  • run the second command inside the AIP-directory.
  • to apply a MSP-file to an AIP, run only the second command.
  • do all as admin or it may fail (for example when trying to do this for Adobe Reader).