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”. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |