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

Christopher Painter chrpai at iswix.com
Tue Nov 15 07:59:19 PST 2022


I did a search and figured out enough pieces were there to do it.  We'd need wcautil and dutil ported to rust and then create a custom action project type for Rust.

Another great idea for HeatWave IMO.

________________________________
From: wix-users <wix-users-bounces at lists.wixtoolset.org> on behalf of Edwin Young via wix-users <wix-users at lists.wixtoolset.org>
Sent: Tuesday, November 15, 2022 9:46 AM
To: Bob Arnson <bob at firegiant.com>
Cc: Edwin Young <the.edwin.young at gmail.com>; WiX Toolset Users Mailing List <wix-users at lists.wixtoolset.org>
Subject: Re: [wix-users] .NET 7 NativeAOT Custom Actions appear to work

Rust ought to work - anyone know of an example of actually doing that? A
web search didn't turn up any.

One of the things that interested me with the .NET approach is that a
convenient wrapper over the unmanaged windows installer API already exists.

On Tue, Nov 15, 2022, 5:19 AM Bob Arnson <bob at firegiant.com> wrote:

> 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/
>

____________________________________________________________________
WiX Toolset Users Mailing List provided by FireGiant http://www.firegiant.com/


More information about the wix-users mailing list