Restrictions for Patches

Windows Installer XML

Restrictions for Patches

There are different restrictions for patches based on what type of patch is to be installed. There are three types of patches:

  • Small updates do not change the ProductVersion property of a target product and typically represent a small subset of files to be updated.
  • Minor upgrades do change the ProductVersion property of a target product and typically represent a larger subset of files to be updated. Minor upgrades might also be installed as upgrade MSIs.
  • Major upgrades change both the ProductVersion and ProductCode and contain all files in a product. Shipping major upgrades as a patch is, however, not recommended and WiX does not support building major upgrade patches because of the problems they create.

For information about restrictions for each type of patch, read Changing the Product Code.

Uninstallable Patches

For a patch to be uninstallable, the MsiPatchMetadata table must exist in the patch package and must contain the AllowRemoval property set to 1. This can be authored into the Patch Creation Properties file using the PatchMetadata/@AllowRemoval attribute or into the patch XML file using the Patch/@AllowRemoval attribute.

Beside that, certain tables cannot be modified in the upgrade package from which a patch is built. Read Uninstallable Patches for the current list of tables. Pyro.exe will error if one of these tables would be modified when building a patch XML file.

The following table lists tables and corresponding elements or attributes in WiX.

Table

Element or Attribute

BindImage

File/@BindPath

Class

Class

Complus

Component/@ComPlusFlags

CreateFolder

CreateFolder

DuplicateFile

CopyFile

Environment

Environment

Extension

Extension

Font

File/@FontTitle

IniFile

IniFile

IsolatedComponent

IsolatedComponent

LockPermissions

Permission

MIME

MIME

MoveFile

CopyFile

ODBCAttribute

ODBCDriver/Property

ODBCDataSource

ODBCDataSource

ODBCDriver

ODBCDriver

ODBCSourceAttribute

ODBCDataSource/Property

ODBCTranslator

ODBCTranslator

ProgId

ProgId

PublishComponent

Category

RemoveIniFile

IniFile

SelfReg

File/@SelfRegCost

ServiceControl

ServiceControl

ServiceInstall

ServiceInstall

TypeLib

TypeLib

Verb

Verb

Major upgrade patches are not uninstallable.