[wix-devs] Running WiX on Linux using Mono

Rob Mensching rob at firegiant.com
Sat Jul 8 15:10:55 PDT 2017

1. .NET Core - I would recommend holding off porting your work to WiX v4. My experiments with .NET Core 2.0 plus your and Simon's feedback have me pretty convinced that I'll be making that move as part of: http://wixtoolset.org/development/wips/5489-repository-reorganization/. I'll add to the agenda for this week's WiX Online Meeting to talk a little bit about plans here.

I've taken a bit of a break from WiX work in June/July after the big push to get WiX v3.11 done (which once again took way more effort than I really wanted to put into a v3.x release). I'll be back in WiX v4 in August.

Once I get through the first pass of the reorganization, I'll definitely appreciate extra eyes on fixing whatever issues remain.

2. x-plat - I had hopes that x-plat would work as well as you make it sounds like it does. But I was afraid to hope to much. Given where we're going with the WIX Toolset, if we can do straight forward things to support x-plat, I'd be very interested if those of you on Linux helped out.

3. no-Wine - I'll follow up on these topics with Simon's responses. Net-net, it's sounding very much like if we isolate our native code requirements to a single executable with well-defined input (cmd-line) and output (stdout) then this may be more straightforward than I'd hoped.

4. niche - cross compiling MSI's may be niche but I'm looking at extending the supported outputs from the WiX Toolset. You can already see what we've done at FireGiant for Desktop Bridge and Nano Server AppX Packages (https://www.firegiant.com/products/wix-expansion-pack/appx/). So, there may be a place we get where certain outputs from the WiX Toolset are less "niche" on Linux.

So, I'm interested enough in Linux because of the promise of .NET Core 2.0 and (what appears to be) our ability to isolate non-managed code.

Give me a few more weeks to get caught up on my FireGiant work and I expect we'll see a WiX v4.0 build on .NET Core 2.0 pretty quickly.

-----Original Message-----
From: Iain Nicol [mailto:git at iainnicol.com] 
Sent: Friday, July 7, 2017 4:24 PM
To: Rob Mensching <rob at firegiant.com>
Cc: wix-devs at lists.wixtoolset.org
Subject: [wix-devs] Running WiX on Linux using Mono

Hi Rob et al.,

  > This isn't something we'll consider for WiX v3.x (WiX v3.x line is done)

Understood.  I have some prototype code against WiX v3 which I intend to port it to WiX v4.

  > 4. Stopping at .idt files - unfortunately, with Merge Modules there
  > are phases of processing that happen after .idt file generation (WiX
  > actually uses .idt files to create the MSI today). You are probably
  > avoiding use of Merge Modules today. So, I'll keep this request in
  > mind but I don't remember the processing is as simple as you make it
  > out to be here. <smile/>


  > 5. .NET Core - I'm currently investigating how much of WiX can move to
  > .NET Core.

This is what I'm personally most interested in.

It seems to me very doable with .NET Core v2.0.  Mainly you have to update the msbuild header, change the target framework, and add additional NuGet dependencies.  I've got some prototype code at <https://gitlab.com/brainsick/wix-cross/>.  In particular, the shell script dotnet-core-port.sh got me 80% of the way to building the SDK tools, plus candle, light, and lit.

Of course, my shell script butchers the csproj files etc, so I'm not suggesting to run it and commit the changes to WiX.  Also, I suspect .NET Core would require dropping support for older versions of Visual Studio.

  > The goal isn't x-plat

Fair enough, but impressively WiX on .NET Core almost "just works" if you run it on Linux using Wine.  That's magically a huge step up from Mono.

  > maybe this work moves from "we'll try not to completely break WiX use
  > on Linux" to "get a 'winterop.exe' Linux binary from PuTTY" or maybe
  > even "get 'winterop.exe' Linux binary from some side repo under
  > github.com/wixtoolset)".

So, removing the Wine dependency (with a Linux native winterop) doesn't hugely interest me personally.  Of course, Simon Tatham would rather drop the Wine dependency, and he's done some work towards that.  So I presume he'd be happy if, as you suggest, the WiX on Linux story could become "fetch libwinterop.so, from PuTTY or a side repo".

  > voicing [your opinion] in a project that primarily targets Windows
  > isn't likely to accomplish anything but ruffle feathers of people who
  > work on the project (aka: probably don't think Windows sucks).

FWIW, my motivation is that it's convenient to be able to cross compile when developing free and open source software.  And WiX is clearly the gold standard way to create installers for Windows.  Of course, I completely realise that cross compiling WiX and MSIs is incredibly niche!


More information about the wix-devs mailing list