cargo-wix icon indicating copy to clipboard operation
cargo-wix copied to clipboard

Support msitools for cross-building

Open ssokolow opened this issue 2 years ago • 2 comments

This bit in the README may not be strictly necessary:

The cargo-wix project can be installed on any platform supported by the Rust programming language, but the Wix Toolset is Windows only; thus, this project is only useful when installed on a Windows machine.

Specifically, because the msitools project offers a wixl command which aims to be a syntax-compatible replacement for the WiX Toolset on POSIX platforms. (Note that on Ubuntu Linux, wixl is its own package separate from the msitools package.)

It'd be nice to have support for using it.

ssokolow avatar May 01 '22 20:05 ssokolow

I was not aware of the msitools project. It looks interesting. It looks like the wixl command is a one-step compile/build command, while WiX Toolset is a two-step compile/link command. This would suggest the command line interfaces are different between the two and could require significantly more changes to add support than a single flag/drop-in replacement.

I did see:

Many features supported by WiX are not implemented in wixl, such as the installer UI support

Currently, this cargo subcommand is heavily integrated with the WiX Toolset, so managing differences in implementation between the two is a little beyond my interest and capacity. I wonder if a separate cargo msi subcommand would be more appropriate that "wraps" the msitools, similar to how cargo wix wraps the WiX Toolset?

I am open to a PR and/or further discussion to map out adding support if possible.

volks73 avatar May 02 '22 00:05 volks73

Currently, this cargo subcommand is heavily integrated with the WiX Toolset, so managing differences in implementation between the two is a little beyond my interest and capacity. I wonder if a separate cargo msi subcommand would be more appropriate that "wraps" the msitools, similar to how cargo wix wraps the WiX Toolset?

That may be true. Perhaps, for cargo wix, it might be better to explore options for making it easy to have cargo wix run WiX Toolset inside Wine if cfg!(not(windows)), similar to how things which build Inno Setup installers on non-Windows platforms work.

(Then the simplest way to support it would be wine <cmd> instead of <cmd> and letting the user make sure they've set up a compatible WINEPREFIX... though, ideally, you'd also want a tunable so a user can specify a custom path to wine in case they want to juggle multiple versions.)

am open to a PR and/or further discussion to map out adding support if possible.

Unfortunately, at the moment, I don't have time to do much. I'm currently trying to catch up on a backlog of hobby projects I fell very behind on.

(While cleaning up my notes for various projects, cargo-wix came up as one of the things I'll eventually need once I'm ready to start making Windows builds and, given how long it took me to discover wixl while assembling this reference blog post, I thought it'd be for the greater good to move this "explore this option" TODO from my private TODO list to somewhere it can make others aware of it.)

ssokolow avatar May 02 '22 02:05 ssokolow