【发布时间】: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