MSI
Generated by scripts/gen-format-pages.py from docs/data/format-metadata/, FILE_FORMATS.csv and docs/formats-master.csv. Do not edit by hand: change the source, then run the script.
MSI Installer Preview.
At a glance
| Purpose | A Windows Installer database (.msi, or a merge module .msm): installer tables stored as streams in a compound file. |
| Extensions | .msi |
| Poka parser | poka-msi |
| Viewer | poka-tree-viewer |
| Depth tier | Parser with a shared viewer (see Depth tiers) |
| Breadth tier | B4 Summary (see Breadth tiers) |
How much Poka reads
B4 Summary. The container and metadata are read and summarised (counts, properties, structure), but the main content is not rendered.
Confidence: medium (the reviewer read the code). Basis: Reviewed 2026-10-26: read parsers/poka-msi/src/main.rs (1160 lines) and plugin.json. Five unit tests cover the compound-file walk and truncation; the corpus has no MSI. Covers .msi and .msm. The tree reads the compound file itself (DIFAT, FAT, mini stream, directory) and lists every storage and stream, with MSI's mangled stream names decoded and well-known tables named; from the Property table it shows ProductName, ProductVersion, Manufacturer and ProductCode. Judgement: B4: the database structure is listed and a few properties decoded, but the tables are not.
What Poka does not read
- Table rows are not decoded except four Property values: no files, components, features, registry entries or custom actions
- The summary information stream (title, author, platform, package code) is named but not decoded
- Embedded cabinets and binaries are not opened
- The digital signature is not read
- Files over 64 MiB are cut
Libraries
Libraries Poka uses or has assessed for this format, with the status, licence and language the registry records.
- msi (candidate; MIT; Rust; https://github.com/mdsteele/rust-msi) — MSI database tables
- cab (candidate; MIT; Rust; https://github.com/mdsteele/rust-cab) — container stage
Sources
- parsers/poka-msi/src/main.rs
- parsers/poka-msi/plugin.json