簡體   English   中英

Wix C#Custom Action根本不執行

[英]Wix C# Custom Action not executing at all

我有一個安裝程序,它有一個包含按鈕的自定義屏幕。 按下該按鈕時,必須運行自定義操作,以驗證一些事情,並返回成功或錯誤。

我的按鈕定義如下:

<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;
    }

日志顯示以下內容:

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應該為您執行此操作。

我在這里完全失敗了。 為什么這不起作用? 它顯示了無處不在的成功,但它根本不執行任何代碼。

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

檢查DLLEntry名稱“VerifyDatabaseConnection2”,但實際的自定義操作方法名稱是“VerifyDatabaseConnection”(缺少2,因此永遠不會被調用“)。

同時更改publish元素以調用“VerifyDatabaseConnectionCA”而不是“VerifyDatabaseConnection”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM