[wix-users] .NET 7 NativeAOT Custom Actions appear to work

Bob Arnson bob at firegiant.com
Tue Nov 15 05:19:44 PST 2022


That it's only 3MB is actually pretty impressive.

But Rust can do better. 😊

> -----Original Message-----
> From: wix-users <wix-users-bounces at lists.wixtoolset.org> On Behalf Of
> Edwin Young via wix-users
> Sent: Tuesday, 15 November, 2022 01:45
> To: wix-users at lists.wixtoolset.org
> Cc: Edwin Young <the.edwin.young at gmail.com>
> Subject: [wix-users] .NET 7 NativeAOT Custom Actions appear to work
> 
> Hi,
> 
> I've long found it a bit frustrating to write custom actions - writing HRESULT-
> style C++ makes me sad, and managed custom actions, despite the awesome
> work the Wix team has put in, have some drawbacks, like the dependency on
> having a compatible framework installed.
> 
> So I was quite excited to see that .NET 7 has the ability to output DLLs which
> have no dependencies and can be called from unmanaged code :-) See
> samples/core/nativeaot/NativeLibrary
> at main · dotnet/samples · GitHub
> <https://github.com/dotnet/samples/tree/main/core/nativeaot/NativeLibrar
> y>
> 
> I wanted to see if this would work for Custom Actions, and according to my
> very first experiment, the answer appears to be yes!
> 
> edyoung/net7ca: Experiment to see if I can write Custom Actions in .NET 7
> (github.com) <https://github.com/edyoung/net7ca>
> 
> I can write a custom action in C#:
> 
> using System.Runtime.InteropServices;
> using WixToolset.Dtf.WindowsInstaller;
> 
> namespace CustomAction;
> public class Class1
> {
>     [UnmanagedCallersOnly(EntryPoint = "CustomAction2")]
>     public static uint CustomAction2(IntPtr handle)
>     {
>         using Session session = Session.FromHandle(handle, false);
> 
>         session.Log("Custom Action 2 Called");
>         return 0;
>     }
> }
> 
> Compile it with .NET 7, publish it, and call it from an installer. The log
> message appears in the MSI log!
> 
> The binary DLL which is output contains all the bits of the CLR which are
> required, which turns out to be about 3MB - painfully large, but not
> impossible if you have a largish install package.
> 
> So obviously, this is a very long way from a production solution - there are
> likely all sorts of problems ahead - but I'm quite excited about the
> possibilities, so I wanted to share.
> 
> Also, Wix4 worked beautifully first time for this experiment. Thanks Rob &
> co!
> 
> Happy installing!
> --
> Edwin
> 
> ________________________________________________________________
> ____
> WiX Toolset Users Mailing List provided by FireGiant
> http://www.firegiant.com/


More information about the wix-users mailing list