To acquire background on Versioning and Component Rules, we recommend

Rob Mensching's Background blogs

Component Rules 101
Windows Installer Components Introduction.

Component Rules

The following MSDN topics help folks understand the components rules

What happens if the component rules are broken? [Windows Installer]
Changing the Component Code [Windows Installer]
Organizing Applications into Components [Windows Installer]
Defining Installer Components [Windows Installer]

At the core these rules are meant to represent the underlying requirements of COM
The Rules of the Component Object Model (COM General Technical Articles)

Version Rules

Generally the KeyPath column in the component table provides the version for the entire component
Component Table [Windows Installer]

The version behavior is controlled by
File Versioning Rules [Windows Installer]

there are also these examples
Neither File Has a Version [Windows Installer]
One File Has a Version [Windows Installer]
Neither File Has a Version with File Hash Check [Windows Installer]
Both Files Have a Version [Windows Installer]
Default File Versioning [Windows Installer]

Note: Uninstall is not constrained by versioning as when uninstalling a product Windows Installer will remove any version of the file that is already there if not referenced by another component registered on the system.

Known Bug

TLB Version Downgrade

Darwin, while registering a typelib will unregister type library with the same major version number and the highest minor version number installed, i.e.:

  • You have 2.5 registered
  • You run MSI that installs 2.4
  • Result: 2.4 is registered but registration for 2.5 is removed

Workaround: fix this by repairing the typelib registration on startup

[Author: Robert Flaming]
This posting is provided "AS IS" with no warranties, and confers no rights. Use of included script samples are subject to the terms specified at http://www.microsoft.com/info/cpyright.htm.