C# 如何使用wix自定义操作停止.MSI安装

C# 如何使用wix自定义操作停止.MSI安装,c#,.net,wix,windows-installer,C#,.net,Wix,Windows Installer,在安装之前,我正在使用自定义操作进行一些检查。如果这些检查失败,我希望安装不会启动 有什么方法可以优雅地执行此操作吗?如果无法使用条件元素完成检查,则在自定义操作中,如果检查失败,则应返回操作结果。如果检查通过,则应返回操作结果。如果检查通过,则返回操作结果。成功 返回失败将导致安装程序进入回滚模式,并且不会继续进行。如果元素的Return属性设置为默认值check,这将起作用。如果无法使用条件元素完成检查,则在自定义操作中,如果检查失败,则应返回ActionResult.Failure,如果检

在安装之前,我正在使用自定义操作进行一些检查。如果这些检查失败,我希望安装不会启动


有什么方法可以优雅地执行此操作吗?

如果无法使用
条件
元素完成检查,则在自定义操作中,如果检查失败,则应返回
操作结果。如果检查通过,则应返回
操作结果。如果检查通过,则返回
操作结果。成功


返回失败将导致安装程序进入回滚模式,并且不会继续进行。如果元素的
Return
属性设置为默认值
check
,这将起作用。

如果无法使用
条件
元素完成检查,则在自定义操作中,如果检查失败,则应返回
ActionResult.Failure
,如果检查失败,则返回
ActionResult.Success
通过


返回失败将导致安装程序进入回滚模式,并且不会继续进行。如果元素的
Return
属性设置为
check
这是默认值,则此选项将起作用。

您正在执行什么类型的检查?您正在执行什么类型的检查?我稍后再试,谢谢。目前我所做的只是强制执行一个异常并让windows处理它。我认为这样做不安全?如果异常不阻止msi的执行,那么它就不安全。它还可能导致在安装过程中弹出一个带有异常消息的对话框。返回
Failure
将确保您的设置被回滚,并且在该点之前安装的任何内容都将被删除。我还建议查看
条件
元素。您可以使用这些来检查是否存在某些应用程序或您或第三方软件的版本。WiX DTF自定义操作有一个顶级try{}catch{}块,该块在调用静态方法之前被调用。如果您引发异常,它将被捕获并记录到windows installer日志(假设您正在记录)和ActionResult中。失败将自动返回。也就是说,我仍然会编写自己的错误处理并实现单点返回模式。稍后我将尝试此方法,谢谢。目前我所做的只是强制执行一个异常并让windows处理它。我认为这样做不安全?如果异常不阻止msi的执行,那么它就不安全。它还可能导致在安装过程中弹出一个带有异常消息的对话框。返回
Failure
将确保您的设置被回滚,并且在该点之前安装的任何内容都将被删除。我还建议查看
条件
元素。您可以使用这些来检查是否存在某些应用程序或您或第三方软件的版本。WiX DTF自定义操作有一个顶级try{}catch{}块,该块在调用静态方法之前被调用。如果您引发异常,它将被捕获并记录到windows installer日志(假设您正在记录)和ActionResult中。失败将自动返回。也就是说,我仍然会编写自己的错误处理并实现单点返回模式。