MSI Tables to WiX Schema

In the WiX schema, its not always entirely obvious how the tables from the Windows Installer schema map to the WiX schema. Below are some helpful hints on how to figure out the relationships between the two schemas.

DuplicateFile Table

This is authored using a CopyFile node nested under a File node. You only need to set the Id, DestinationFolder, and DestinationName attributes.

LaunchCondition Table

This is authored using a Condition node authored under Fragment or Product. You only need to set the Message attribute.

LockPermissions Table

This is authored using Permission.

MoveFile Table

This is authored using a CopyFile node nested under a Component node. You will need to set all attributes except Delete. Set Delete to 'yes' in order to use the msidbMoveFileOptionsMove option.

PublishComponent Table

The PublishComponent functionality is available in WiX by using a Category. Here is a small sample of what a PublishComponent record would look like in MSI, then in WiX notation.

MSI
ComponentId Qualifier Component AppData Feature
{11111111-2222-3333-4444-5555555555555} 1033 MyComponent Random Data MyFeature
WiX
<Component Id='MyComponent' Guid='87654321-4321-4321-4321-110987654321'>
     <Category Id='11111111-2222-3333-4444-5555555555555' AppData='Random Data' 
               Qualifier='1033'/>
</Component>
.
.
.
<Feature Id='MyFeature' Level='1'>
     <ComponentRef Id='MyComponent'/>
</Feature>

RemoveIniFile

This is authored using IniFile. Just set the Action attribute to 'removeLine' or 'removeTag' as appropriate.

RemoveRegistry Table

This is authored using Registry. Simply set the Action attribute to 'remove' or 'removeKey' (as appropriate) in order to get an entry in the RemoveRegistry table.