The Rust part of this isn't that hard. cargo bundler already has a place where the .msi output generator is supposed to go. The reading of the cargo.toml file and the writing in .msi format is already written. It's just generating the Microsoft-specific content for the .msi file that's hard. That takes Microsoft platform expertise.