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 and 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 deploy MSP files via GPO (in contrast to MST files). There are two possible solutions for this. Either slipstrem (see next section), or use GPO to declare a startup script, which runs the correct msiexec command for applying an MSP. However a startup script runs every time when the PC boots, so it must first check which version is already installed. Also you should probably better deploy that software completely via startup script, not first deploy an MSI via GPO, and then use a startup script for upgrade, because then you end up having a later version installed than the one noted in the group policy.

Integrate ("slipstream") 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, otherwise it may fail (for example when trying to do this for Adobe Reader).