Architecture: Decoupling MSI from WiX
The primary goal of this project is to decouple the MSI generation process from the Windows-only WiX toolchain.
The Specification Gap
Currently, most cross-platform tools (CPack, Tauri, etc.) generate WiX XML (.wxs) and then call WiX binaries (candle.exe, light.exe) to produce the final MSI. This creates a hard dependency on Windows (and .NET) for the build process.
We bridge this gap by defining a Universal Product Specification and implementing the low-level binary formats natively in D.
Binary Decoupling Layers
To generate an MSI without WiX, we implement the following layers:
| Layer | Description |
|---|---|
Spec API |
A high-level D-lang API ( |
MSI Database Logic |
Maps the high-level Spec to the relational table structure of Windows Installer ( |
CFB (OLE2) Writer |
A pure D implementation of the OLE2 Compound File Binary format ( |
CAB (Cabinet) Writer |
A pure D implementation of the Microsoft Cabinet format ( |