2010-02-26 32 views
2

如果自定义操作程序集有多个操作,则DTF不会调用第二个操作。它总是只调用第一个动作。作为解决方法,我在一个程序集中使用了一个操作。它始终完美运作。在单个DTF自定义操作程序集中创建多个操作时发出Wix DTF

你对这个问题有什么想法吗?

public class CustomActions 
{ 

    [CustomAction] 
    public static ActionResult CustomAction1(Session session) 
    { 
     [some code] 
    } 


    [CustomAction] 
    public static ActionResult CustomAction2(Session session) 
    { 
     [some code] 
    } 

} 

回答

1

我从来没有在一个单一的组装看到了这个问题,因为我组自定义操作起来所有的时间。每种方法都将导出为类型1入口点,然后为每个导出的函数编写自定义操作。 Windows Installer调用调用启动CLR的函数的CA,并调用自定义操作指向的静态方法。

0

这看起来很明显,但依然如此。当您在wxs文件中定义自定义操作时,是否在“DllEntry”属性中指定了不同的值?这个属性指出了一个方法,它实际上是你的CA.如果你复制/粘贴自定义动作定义,你可能会忘记更改DllEntry ...

+0

严,是我只在DllEntry属性中调用不同的方法名称。当我单独给他们打电话时,它完美地工作。但是当我从相同程序集(或dll)中顺序调用两个不同的CA时,它总是失败。它表示无法从二进制文件中提取程序集。 – sankar 2010-03-01 09:06:29

+0

它取决于CA声明的Return属性吗?例如,如果您为两个CA都设置了Return ='check'(默认值),它是否可重现? – 2010-03-02 11:47:23

1

可能对某些搜索者有帮助,特别是对于.Net新手:双重检查自定义操作的类和静态方法入口是公开的!