2010-02-26 36 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新手:雙重檢查自定義操作的類和靜態方法入口是公開的!