加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Wix C#Custom Action根本不执行

发布时间:2020-12-16 07:07:27 所属栏目:百科 来源:网络整理
导读:我有一个安装程序,它有一个包含按钮的自定义屏幕.按下该按钮时,必须运行自定义操作,以验证一些事情,并返回成功或错误. 我的按钮定义如下: Control Type="PushButton" Id="DatabaseVerifyConnectionButton" X="118" Y="150" Width="116" Height="17" Text="V
我有一个安装程序,它有一个包含按钮的自定义屏幕.按下该按钮时,必须运行自定义操作,以验证一些事情,并返回成功或错误.

我的按钮定义如下:

<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:WindowsSystem32calc.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”.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读