Wot*_*tuu 6 c# custom-action wix
我有一个安装程序,它有一个包含按钮的自定义屏幕。当该按钮被按下时,必须运行一个自定义操作来验证一些事情,并返回成功或错误。
我的按钮定义如下:
<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>
Run Code Online (Sandbox Code Playgroud)
我的自定义操作 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]"/>
Run Code Online (Sandbox Code Playgroud)
我的自定义操作 C# 代码:
[CustomAction]
public static ActionResult VerifyDatabaseConnection(Session session)
{
System.Diagnostics.Process.Start(@"C:\Windows\System32\calc.exe");
return ActionResult.Failure;
}
Run Code Online (Sandbox Code Playgroud)
日志显示以下内容:
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.
Run Code Online (Sandbox Code Playgroud)
我已经尝试了很多东西。附加调试器,不起作用。返回成功或失败,似乎无关紧要。哎呀,当您单击按钮时,它甚至不会启动计算器。我确实注意到更改自定义操作的入口点似乎根本无关紧要。
我还阅读了有关 MakeSfxCA.exe 的一些内容,但我终其一生都找不到有关如何使其正常工作的任何地方。但是我也读到如果您将自定义操作项目添加为自定义操作项目,Visual Studio 应该为您完成,我就是这样做的。
我在这里完全不知所措。为什么这行不通?它到处都显示成功,但它根本不执行任何代码。
<CustomAction Id="VerifyDatabaseConnectionCA"
BinaryKey="DatabaseCustomAction.CA.dll"
DllEntry="VerifyDatabaseConnection2"
Execute="immediate"
Return="check"/>
Run Code Online (Sandbox Code Playgroud)
检查 DLLEntry 名称“VerifyDatabaseConnection2”,但实际的自定义操作方法名称是“VerifyDatabaseConnection”(缺少 2,因此从未被调用)。
还要更改发布元素以调用“VerifyDatabaseConnectionCA”而不是“VerifyDatabaseConnection”。