如果Wix CustomAction失败,如何让它打印自定义错误消息?

如果Wix CustomAction失败,如何让它打印自定义错误消息?,wix,Wix,如果Wix CustomAction失败(而不是一般错误消息),如何让它打印我选择的特定错误消息 谢谢。您可以创建一个新的自定义操作,它可以执行您需要它执行的任何操作。这包括,运行您的命令,并以您自己的格式准确地记录所需的位和块 -创建WiX自定义操作。这有点令人困惑,因为您有一个exe自定义操作,所以为什么程序不能显示其实际错误消息?如果exe没有这样做,那么除了“exe失败”之外,很难获得有意义的消息,除非exe有大量的退出代码准确地告诉您发生了什么。因此,您的消息将是“失败”的,几乎没

如果Wix CustomAction失败(而不是一般错误消息),如何让它打印我选择的特定错误消息



谢谢。

您可以创建一个新的自定义操作,它可以执行您需要它执行的任何操作。这包括,运行您的命令,并以您自己的格式准确地记录所需的位和块


-创建WiX自定义操作。

这有点令人困惑,因为您有一个exe自定义操作,所以为什么程序不能显示其实际错误消息?如果exe没有这样做,那么除了“exe失败”之外,很难获得有意义的消息,除非exe有大量的退出代码准确地告诉您发生了什么。因此,您的消息将是“失败”的,几乎没有其他信息


如果这是您的代码,并且您希望提供准确描述错误的特定错误消息,我建议使用Dll调用,可以是C/C++或托管代码C#with DTF。然后,您可以在C#/DTF世界中使用Win32 API MsiProcessMessage()和等效程序,如session.message。它的优点是知道何时是静默安装(并且不显示任何内容),确保消息位于当前对话框(可能是进度对话框)的顶部,并在创建MSI日志时将消息放入MSI日志。所有这些显然都假设您的代码足够全面,能够准确地说出失败的原因和原因,因此错误消息是有意义的

exe当前是命令行(无UI)。我想我可以用一些UI来包装它,尽管我不愿意。exe要么工作,要么失败(崩溃)。如果exe自定义操作失败(而不是“一个或多个问题导致安装失败。请修复这些问题,然后重试安装…”),我希望它说“XXX失败”,exe可以是Windows程序而不是控制台程序-它不需要显示UI,这意味着如果失败,它可能会显示一个实际的错误消息对话框(而不是控制台窗口?)。另一种方法是编写一个Dll类型的自定义操作,调用exe并在失败时显示错误,但如果是我,我会努力使程序更友好。无论如何,如果您不想将程序代码放入自定义操作Dll中,则只需使用session.Message(InstallMessage.Error,new Record(“some Message”);
<CustomAction Id="XXX" Directory="INSTALLFOLDER" ExeCommand="SomeCommand" Return="check" Execute="deferred"/>