【问题标题】:Meaningful error/failure messages in burn bootstrapper / wix刻录引导程序 / wix 中有意义的错误/失败消息
【发布时间】:2016-02-14 14:15:31
【问题描述】:

如果在使用刻录引导程序安装时出现任何故障,我会尝试提供自定义/有意义的错误消息。

关于安装程序的简短介绍。我正在使用具有链 msipackages(3) 的烧录引导程序。 MSI 包在 c# 中有自定义操作。我正在使用本地化 wxl。下面是失败部分,请查看突出显示的 custommessage。

<Page Name="Failure">
<Text Name="FailureHeader" X="11" Y="80" Width="-11" Height="30" FontId="2" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.FailureHeader)</Text>
<Text Name="FailureInstallHeader" X="11" Y="80" Width="-11" Height="30" FontId="2" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.FailureInstallHeader)</Text>
<Text Name="FailureUninstallHeader" X="11" Y="80" Width="-11" Height="30" FontId="2" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.FailureUninstallHeader)</Text>
<Text Name="FailureRepairHeader" X="11" Y="80" Width="-11" Height="30" FontId="2" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.FailureRepairHeader)</Text>
<Hypertext Name="FailureLogFileLink" X="11" Y="121" Width="-11" Height="42" FontId="3" TabStop="yes" HideWhenDisabled="yes">#(loc.FailureHyperlinkLogText)</Hypertext>
<Hypertext Name="FailureMessageText" X="22" Y="163" Width="-11" Height="51" FontId="3" TabStop="yes" HideWhenDisabled="yes" ></Hypertext>
<Hypertext Name="CustomMessage" X="22" Y="163" Width="-11" Height="51" FontId="3" TabStop="yes" HideWhenDisabled="yes" >[CustomMessage]</Hypertext>
<Text Name="FailureRestartText" X="11" Y="-51" Width="400" Height="34" FontId="3" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.FailureRestartText)</Text>
<Button Name="FailureRestartButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.FailureRestartButton)</Button>
<Button Name="FailureCloseButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.FailureCloseButton)</Button>

我可以将此自定义消息作为刻录变量访问并使用 msiproperty 传递给 msi

 <Variable Name="CustomMessage" Value="Hi"/>
 <MsiProperty Name="CustomMessage" Value="[CustomMessage]"/>

我还可以使用 session["CustomMessage"] 在自定义操作中访问此 customMessage

问题:当我从自定义操作更改此会话 [“CustomMessage”] 时,它没有反映回刻录变量并返回到 wxl 中的 CustomMessage?谁能帮我解决这个问题。

来自自定义操作

session["CustomMessage"]="Please enter valid details";

【问题讨论】:

  • 仅在运行非 MSI 软件包时才需要使用 Isaiah4110 答案中的“嵌入式刻录协议”。 Burn 使用 MSI API 来获取有意义的错误消息。我对如何从自定义操作获取消息一直到引导程序应用程序 (BA) 的具体细节知之甚少,但 MsiProperty 是 MSI 的一种方式。 BA 将通过引擎的 IBootstrapperApplication 接口从回调中获取此信息。
  • 我不想编写自定义 BA,因为 WixStandardBootstrapperApplication.RtfLicense 工作得很好。如果我选择自定义 BA,那么是否可以重新使用它?
  • @Amanto 你成功了吗?

标签: wix bootstrapper wix3.10


【解决方案1】:

通过@RobMensching 的Answer,有一种方法可以做到这一点。但不幸的是,您将不得不挖掘代码来实现它。

“您的可执行文件可以实现“嵌入式刻录协议”以发送 丰富的进度和错误消息。它根本没有记录,所以你会 需要通过刻录代码才能看到协议,但它就在那里 并会得到你想要的。 “bundlerunner” .csproj 在 WiX 源代码也可能会有所帮助。”

这个Question 谈到了与 WiX 引导程序进行通信的 2 种不同方法。希望这将是您开始的事情。

【讨论】:

    猜你喜欢
    • 2014-02-24
    • 1970-01-01
    • 1970-01-01
    • 2013-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多