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

自定义操作驻留在 Wix C# 自定义操作项目中。
它的代码如下所示:

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% 准确)

任何帮助将非常受欢迎。
或者,如果您有关于如何在没有 CustomActions 的情况下实现我想要做的事情的建议(将相同的文件安装到只能在重新调整时确定的多个文件夹中),那也会很有帮助。

谢谢。

最佳答案

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

尝试:

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

关于c# - WIX 中的托管(C#)自定义操作不起作用(错误代码 1154),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7484837/

10-10 18:12