使用 WIX 安装程序在自定义操作中停止设置错误
Posted
技术标签:
【中文标题】使用 WIX 安装程序在自定义操作中停止设置错误【英文标题】:Stop setup error inside Custom Action With WIX installer 【发布时间】:2013-07-01 10:03:12 【问题描述】:如果在 CustomAction 中显示任何错误,我可以停止设置吗?因为我可以在自定义操作中显示错误消息并且它会显示错误消息,但是一旦我点击确定按钮,我的下一个 UI 序列表单就会出现。我将如何强制用户完成按钮?
添加我的源代码:
<Binary Id="BIN_CustomAction" SourceFile="CustomAction.CA.dll" />
<CustomAction Id="CA_CheckList" BinaryKey="BIN_CustomAction" DllEntry="CA_CheckList" Execute="immediate" Impersonate="yes" Return="ignore" />
<UI Id="MyWixUI_Mondo">
<UIRef Id="WixUI_Mondo" />
<UIRef Id="WixUI_ErrorProgressText" />
<DialogRef Id="UserRegistrationDlg" />
<Dialog Id="UserRegistrationDlg" Width="370" Height="270" Title="[ProductName] Setup" NoMinimize="yes">
<Control Id="ComboBoxMain" Type="ComboBox" X="124" Y="158" Width="241" Height="16" Property="LOCATIONNAME">
</Control>
<Control Id="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Text="&Back">
<Publish Event="NewDialog" Value="LicenseAgreementDlg">1</Publish>
</Control>
<Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="&Next">
<Publish Event="SpawnDialog" Value="SetupTypeDlg">1</Publish>
</Control>
<Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="Cancel">
<Publish Event="SpawnDialog" Value="CancelDlg">1</Publish>
</Control>
</Dialog>
<Control Id="Next" Type="PushButton" X="180" Y="243" Width="56" Height="17" Text="&NExt">
<Publish Event="DoAction" Value="RadioButtonCheck">1</Publish>
</Control>
</Dialog>-->
<Publish Dialog="LicenseAgreementDlg" Control="Next" Event="NewDialog" Value="UserRegistrationDlg" Order="3">
LicenseAccepted = "1"
</Publish>
<Publish Dialog="SetupTypeDlg" Control="Back" Event="NewDialog" Value="UserRegistrationDlg">1</Publish>
</UI>
<InstallUISequence>
<Custom Action="CA_CheckList" Before="AppSearch">Not Installed</Custom>
</InstallUISequence>
[CustomAction]
public static ActionResult CA_CheckList(Session session)
if (installer.ListStatus == false)
// dispaly
Record record = new Record();
record.FormatString = string.Format("Error!");
session.Message(
InstallMessage.Error | (InstallMessage)(MessageIcon.Error) |
(InstallMessage)MessageButtons.OK,record);
return ActionResult.Failure;
else
return ActionResult.Success;
添加屏幕截图也证明一旦我单击图像 (1) 的确定按钮,我的下一个对话框即图像 (2) 正在出现:- 当我收到错误时,我需要的是完成对话框。
1)
2)
Any idea??kindly help me.
【问题讨论】:
【参考方案1】:这是一个旧帖子,但我想回答这个问题,以防其他人发现这个问题。在自定义操作定义中,CustomAction Id="CA_CheckList" BinaryKey="BIN_CustomAction" ..., 'Return' 设置为 'ignore'。它应该设置为“检查”。
【讨论】:
【参考方案2】:这一切都是为了从自定义操作中返回正确的“错误代码”。如果您想终止安装,请从您的 CA 返回ActionResult.Failure
。
附注:从自定义操作中显示 UI 通常是个坏主意 - 这种情况不支持应采用的静默安装方式。
【讨论】:
当我尝试使用 ActionResult.Failure 时,它仍然显示下一个按钮而不是完成按钮。有什么可能的解决方法? 如果 ActionResult 是失败,我需要在安装 UI 序列中做些什么目前这是我在ActionResult.Failure
时,它通常会回滚安装。根据您使用的 UI,它会显示或不会显示最终的“设置失败”对话框。 AFAIK,完整的 UI 方案包含您的场景所需的所有对话框。
如果你不介意我可以提供我想要做的事情,如果我使用的 UI 是错误的,你能帮我吗,因为我是 WIX 设置的新手。
@reapen,如果你以某种方式分享安装项目源,我可以看看(今天晚些时候或明天)以上是关于使用 WIX 安装程序在自定义操作中停止设置错误的主要内容,如果未能解决你的问题,请参考以下文章
如何在关闭对话框的 Wix 安装程序中停止自定义操作中的进度条