Deployment Tools Foundation
MSI, MSP, CAB Diff Tool
Development Guide > Samples > DDiff

## MSI, MSP, CAB Diff Tool

    Usage: DDiff target1 target2 [options]
    Example: DDiff d:\dir1 d:\dir2
    Example: DDiff setup1.msi setup2.msi
    Example: DDiff patch1.msp patch2.msp -patchtarget target.msi
    Example: DDiff package1.cab package2.cab

    Options:
      /o [filename]    Output results to text file (UTF8)
      /p [package.msi] Diff patches relative to target MSI

The following types of inputs can be diffed:

- Directories: files and subdirectories are compared.
- Cab files: internal file list and files are compared.
- MSI/MSM database files: summary info, tables, and embedded binary and cab streams are compared.
- MSP files: summary info and embedded file cab are compared. When a patch target MSI is provided, the MSP's tables are also compared.
- Versioned files: Win32 file version is compared.
- Text files: if diff.exe is in the path, it is used to get a line-by-line diff.
- Other files: file size and bytes are compared.

All processing is done recursively. So a versioned file within a cab within an MSI within a directory will have meaningful diff results.