刻录引导程序/wix中有意义的错误/失败消息



如果在使用burn-bootstrapper进行安装时出现任何故障,我将尝试提供自定义/有意义的错误消息。

关于安装程序的简短介绍。我使用的是burn-bootstrapper,它有链msi包(3)。MSI包在c#中具有自定义操作。我正在使用本地化wxl。下面是失败部分,请参阅突出显示的自定义消息

<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>

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

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

此外,我可以使用会话["customMessage"]在自定义操作中访问此customMessage

问题:当我从自定义操作更改此会话["CustomMessage"]时,它不会反映回burn变量和wxl中的CustomMessage?有人能帮我吗。

来自自定义操作

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

根据@RobMensching的这个答案,有一种方法可以做到这一点。但不幸的是,你必须深入研究代码才能实现它。

您的可执行文件可以实现"嵌入式刻录协议"以发送丰富的进度和错误消息。它根本没有记录在案,所以你会需要浏览Burn代码才能查看协议,但它就在那里并且会得到你想要的东西。中的"bundlerunner".csprojWiX源代码可能也会有所帮助。"

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

最新更新