oleg-shilo / wixsharp

Framework for building a complete MSI or WiX source code by using script files written with C# syntax.
MIT License
1.07k stars 170 forks source link

Question : Make Wix# Wix Toolset v5 compatible #1493

Open Torchok19081986 opened 3 months ago

Torchok19081986 commented 3 months ago

Morning, according to Wix Team, in April should new Wix Toolset v5 released. Will Wix# also support it in later ? Link : https://wixtoolset.org/docs/fivefour/

oleg-shilo commented 3 months ago

I have updated the WixSharp msi authoring algorithm and now it supports both wix4 and wix5.

However wix5 support is rather partial (a technology preview) as wix5 brings some breaking changes and some incomplete features preventing the full integration with WixSharp at the moment.

Specifically wix5 at the moment has no official guidance for building custom BA for bundles.

WiX team has decided to change custom BA hosting to an out-of-process model. It is rather a very good move but at the moment there is no guidance on how to build such a BA. So we will need to wait until it's done: image

Thus WixSharp users will need to use wix.exe v4 for building custom BAs even if wix.exe v5 is available on the build environment. The code sample below demonstrates the technique:

https://github.com/oleg-shilo/wixsharp/blob/e1f72cc93fdd83afc7e41f6d4af434b456d7951e/Source/src/WixSharp.Samples/Wix%23%20Samples/Bootstrapper/WixBootstrapper_UI/setup.cs#L58

The change will be available in the very next release.

Torchok19081986 commented 3 months ago

many thanks, @oleg-shilo. Somehow i dont fully understand description of "naked" Filesi n Wix V5. Group of Files and how to do subdirectory for it ? What is purpose of Subdirectory, if i dont have ine ? 🤔🤔🤔


<ComponentGroup Id="Files" Directory="MyFolder" Subdirectory="bin">
  <File Source="foo.exe" />
  <File Source="bar.dll" />
  <File Source="baz.db" />
</ComponentGroup>
oleg-shilo commented 3 months ago

There is no description but I guess it is somewhat similar to:

new Dir("My Folder",
    new Dir("bin",
        new File("foo.exe"),
        new File("bar.dll"),
        new File("baz.db")))