编程语言
首页 > 编程语言> > WIX中的托管(C#)自定义操作不起作用(错误代码1154)

WIX中的托管(C#)自定义操作不起作用(错误代码1154)

作者:互联网

我正在开发一个自定义操作来将相同的文件安装到多个文件夹中(在运行时确定).

自定义操作驻留在Wix C#Custom Action Project中.
它的代码如下:

public class CustomActions
{
    [CustomAction]
    public static ActionResult InstallToTrunks(Session session)
    {
        // some logic
    }
}

相关的WIX标记如下所示:

    <Binary Id='CustomActions' SourceFile='..\CustomActions\bin\$(var.Configuration)\CustomActions.dll' />
<CustomAction Id='InstallToTrunks' BinaryKey='CustomActions' DllEntry='InstallToTrunks' Execute='deferred' Return='check'/>

<InstallExecuteSequence>
  <Custom Action='InstallToTrunks' After='InstallInitialize'></Custom>
</InstallExecuteSequence>

但是,当我尝试运行安装程序时,它会失败,并且日志说:
CustomAction InstallToTrunks返回实际的错误代码1154(请注意,如果在沙箱中发生翻译,这可能不是100%准确)

任何帮助都会非常受欢迎.
或者,如果你有一个关于如何实现我想要做的事情的建议(将相同的文件安装到只能在retuntime确定的多个文件夹中)而没有CustomActions,那也会有所帮助.

谢谢.

解决方法:

看起来您正在引用自定义操作程序集,而不是自定义操作DLL.这些自定义操作项目生成一个名为xxxx.CA.dll的非托管自定义操作DLL,其中包含自定义操作程序集及其依赖项的压缩副本.

尝试:

<Binary Id='CustomActions' SourceFile='..\CustomActions\bin\$(var.Configuration)\CustomActions.CA.dll' />

标签:c,wix,windows-installer,custom-action
来源: https://codeday.me/bug/20190721/1495206.html