如何从自定义引导程序中的链式MSI获取错误消息?

时间:2016-09-02 00:42:26

标签: c# wix burn

如果我有一个配置错误的MSI(比如一个util上的XPath:XmlFile元素不正确)并且我只运行MSI,我会得到一个很好的描述性错误,说明我做错了(在路径X找不到元素。 ..)在它回​​滚安装并进入结束屏幕之前。

如果我现在将MSI作为自定义BA的一部分运行,我将丢失此错误信息。我在ExecutePackageComplete的处理程序中尝试了以下内容:

function filterData($params)

但那只是给了我一些关于烟斗的东西。

string errorMessage = new Win32Exception(Marshal.GetLastWin32Error()).Message;

Gives"发生致命错误" (或类似的东西)。

我希望获得完整的描述性错误消息,因此无需自行运行MSI就可以更轻松地调试失败。如何在我的自定义BA中收到该错误消息?

1 个答案:

答案 0 :(得分:0)

string errorMessage = new Win32Exception(e.Status).Message; 对象上有一个名为BootstrapperApplicaton的事件。这会引起链式MSI的错误(除了我确定的其他事情之外)。

有用的错误消息位于其事件args的Error属性中:

ErrorMessage

引发错误的包也在 private void HandleError(object sender, ErrorEventArgs e) { string errorMessage = e.ErrorMessage; } 属性中。