2

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

关于安装程序的简短介绍。我正在使用具有链 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";
4

1 回答 1

1

从@RobMensching 的这个答案中,有一种方法可以做到这一点。但不幸的是,您将不得不深入研究代码来实现它。

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

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

于 2015-11-13T06:31:19.573 回答