2014-01-30 102 views
4

我有一個安裝程序,它具有包含按鈕的自定義屏幕。當按下該按鈕時,必須運行自定義操作來驗證一些事情,並返回成功或錯誤。Wix C#自定義操作根本不執行

我有我的按鈕定義如下:

<Control Type="PushButton" Id="DatabaseVerifyConnectionButton" X="118" Y="150" Width="116" Height="17" Text="Verify Connection" Property="DATABASEVERIFYCONNECTIONBUTTONPROPERTY" Default="yes"> 
    <Publish Event="DoAction" Value="VerifyDatabaseConnection">1</Publish> 
    <Publish Event="SpawnDialog" Value="VerifySuccessDlg">VERIFIEDCONNECTION = "1"</Publish> 
    <Publish Event="SpawnDialog" Value="VerifyFailedDlg">VERIFIEDCONNECTION = "0"</Publish> 
</Control> 

我的自定義操作XML

<CustomAction Id="VerifyDatabaseConnectionCA" 
       BinaryKey="DatabaseCustomAction.CA.dll" 
       DllEntry="VerifyDatabaseConnection2" 
       Execute="immediate" 
       Return="check"/> 

<CustomAction Id='VerifyDatabaseConnection' 
    Property='VerifyDatabaseConnectionCA' 
    Execute='immediate' 
    Value="ServerIP=[DATABASESERVERIPTEXTBOXPROPERTY];Username=[DATABASEUSERNAMETEXTBOXPROPERTY];Password=[DATABASEPASSWORDTEXTBOXPROPERTY]"/> 

我的自定義操作使用C#代碼:

[CustomAction] 
    public static ActionResult VerifyDatabaseConnection(Session session) 
    { 
     System.Diagnostics.Process.Start(@"C:\Windows\System32\calc.exe"); 

     return ActionResult.Failure; 
    } 

該日誌顯示以下ing:

MSI (c) (58:B4) [16:39:45:183]: Doing action: VerifyDatabaseConnection 
Action 16:39:45: VerifyDatabaseConnection. 
Action start 16:39:45: VerifyDatabaseConnection. 
Action ended 16:39:45: VerifyDatabaseConnection. Return value 1. 

我試了很多東西。附加一個調試器,不起作用。迴歸成功或失敗似乎並不重要。哎呀,它甚至沒有啓動計算器,當你點擊按鈕。我確實注意到改變定製行動的切入點似乎並不重要。

我也讀了一些關於MakeSfxCA.exe的內容,但是我無法在我的生活中找到如何使它正常工作的任何地方。但如果您將自定義操作項目添加爲自定義操作項目,我也讀過Visual Studio應該爲您做的工作。

我在這裏完全損失。爲什麼這不工作?它在任何地方都顯示成功,但它根本不執行任何代碼。

+1

對於很好解釋的問題+1 +1 – Isaiah4110

回答

1
<CustomAction Id="VerifyDatabaseConnectionCA" 
        BinaryKey="DatabaseCustomAction.CA.dll" 
        DllEntry="VerifyDatabaseConnection2" 
        Execute="immediate" 
        Return="check"/> 

檢查你DLLEntry名「VerifyDatabaseConnection2」,但你實際的自定義操作方法名稱爲「VerifyDatabaseConnection」(2缺失,所以這是從來沒有得到所謂的「)。

也改變了發佈元素調用「VerifyDatabaseConnectionCA」,而不是「VerifyDatabaseConnection」。

+1

好的眼睛,但是這是我做的檢查,如果它在DllEntry錯誤的情況下編譯器錯誤,它沒有,休息保證沒有任何反應,當2被刪除:) – Wotuu

+1

你能改變那個pu blish元素調用「VerifyDatabaseConnectionCA」而不是「VerifyDatabaseConnection」? – Isaiah4110

+0

好的改變確實打開了計算器。我會看到爲什麼它不能像我以前那樣工作,以及如何以自定義操作的另一種方式更改參數。將報告,迄今爲止感謝!讓我的日子變得可以忍受。 – Wotuu