Custom Action in C# used via WiX fails with error 1154

后端 未结 8 760
傲寒
傲寒 2020-12-09 17:19

I am using WiX 3.5.1930 in Visual Studio 2010, targeting the .NET Framework 3.5. (Later weekly builds of WiX seem to be very broken with respect to their custom action temp

相关标签:
8条回答
  • 2020-12-09 17:56

    It sounds like you are using DTF. If you see:

    using Microsoft.Deployment.WindowsInstaller;
    

    then you certainly are. Be sure to read the following for how it all works:

    Deployment Tools Foundation (DTF) Managed Custom Actions

    Also you'll find a DTF help chm in the start menu under WiX.

    Basically it sounds like to me you are wiring the .NET assembly into the installer instead of the unmanged wrapper dll. Read the above article for an overview of how to look at it in Depends and to know what to expect. The WiX | C# Custom Action project should output Foo.dll and Foo.CA.dll. You want the later in your installer.

    For people who land on this page in the future (the answer was originally for the poster ) there is a whole list of things to check:

    1. Are you referencing the correct DLL in the Binary table?
    2. Are you referencing the correct exported function name?
    3. Is your class public?
    4. Is your method using the correct signature? I.e. is it:
    5. Marked with the correct CustomAction attribute
    6. Marked as public?
    7. Marked as static?
    8. Return ActionResult?
    9. Take Session as an Argument?
    10. Make sure you are using the WiX C# Custom Action Project type to ensure the postbuild event is called to create the native DLL wrapper. (See #1)

    Any one of these can cause an 1154 error. This is the reason I wrote a comprehensive blog article on the subject and linked to it in this answer. It's important to fully understand how managed code is presented to the unmanaged Windows Installer service and to know how to use Depends to validate that the public static method is exported as a stdcall function in the resulting .CA.dll that WiX/DTF produces.

    0 讨论(0)
  • 2020-12-09 17:56

    Try putting your custom action call in

    <InstallExecuteSequence/>
    

    in hopes of getting a better error message. I have received different error messages depending on how the action was called. Also, try using fuslogvw.exe. It might give you a pretty nice error message too.

    0 讨论(0)
提交回复
热议问题