The only current headache is that there's no pure Rust bundler, to make ".msi" or ".msix" installer files.
If you dump the legacy OS stuff, it gets easier.
The only current headache is that there's no pure Rust bundler, to make ".msi" or ".msix" installer files.
If you dump the legacy OS stuff, it gets easier.
I have set up a toolchain based on Wix, running via Mono and Wine on Linux, for the purpose of packaging some rather complex .msi files in a commercial software project. Has been running on the Linux-based CI servers of that project for 10 years straight now, with the only change having been that the entire chain has been packaged into a Docker container a few years ago when that became fashionable.
I only know about other proprietary non-MS solutions like InstallShield, which also generate .msi files but use their own proprietary way to define the installation process, with the benefit/disadvantage (depending on what you want to do specifically) of being on a higher abstraction level than WiX, which is more or less a direct resemblance of the internal Windows Installer data structures.
That’s exactly how I rigged up building our MSIs at Tailscale.
[1] https://nsis.sourceforge.io/Main_Page
[2] E.g.: https://aur.archlinux.org/packages/nsis / https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=nsis
In my enterprise, a big one, I shipped only NSIS installers. Much easier to use, and better user experience also.
It is only a bit more work
https://activedirectorypro.com/deploy-software-exe-using-gro...
I tried doing that, and then found that my test suite passes on real Windows but fails on Wine, because it uses APIs which Wine doesn't implement correctly (or at all).
It's rather impressive that the whole Rend3->WGPU->Vulkan chain for 3D graphics works under Wine, because that's all bleeding-edge stuff. It's only that full screen won't work. Wine reports "fullscreen true stub!", so it's something not implemented yet, rather than something broken.
The official dev tools are really frustrating (except the debugger, I like gdb but it kind of sucks with c++)
The biggest advantage is not having to use different tools for different target platforms.
Unfortunately MacOS is more difficult target than Windows. If anyone has tips for compiling and debugging software of MacOS from a Linux host, please do share.
What did not work for you specifically?
[1] https://internals.rust-lang.org/t/cross-platform-bundling/16...
https://gist.github.com/amake/3e7194e5e61d0e1850bba144797fd7...
Inno Setup was the best and easiest thing for me to ever use but when I was building Windows installers for use from a Windows OS.
Update:
Found this Cargo package rust-msi:
I looked at that crate. That lets you read and write .msi files, but those are just containers. It doesn't help you set up the rather complicated contents required. Someone who's into the Windows ecosystem could probably use it to do the limited things cargo-bundler does. The neat thing about cargo-bundle is that it only needs the info from the Cargo.toml file to drive the bundling process. Most Windows installer builders involve manually constructing Windows-specific XML files.