Wix bootstrapper 如何防止回滚

Wix bootstrapper How to prevent rollback

我想知道是否有一种方法可以防止包失败时回滚。

就像我的情况一样,我有一个 .bat 包,它为某些服务设置用户名和密码。如果失败,我想在安装结束时显示一条消息,告知用户需要手动设置凭据。此外,当我在安装前检查凭据时,由于某种原因它们失败了,我告诉用户凭据可能有误,并询问他是否要继续。

(否则我不想阻止回滚)

我知道 <ExePackage/> 中有 <ExitCode/> 可以用来防止回滚,但是我无法在我的 Bootstrapper 中检测到错误值。

我还尝试在包完成后读取我的 Bootstrapper 中的状态,然后 return 以下之一:

e.Result = Result.Continue;
e.Result = Result.Ignore;
e.Result = Result.Ok;

读取状态示例:

if (e.Status == -2147024895)
{
    e.Result = Result.Continue;
}

但它仍然回滚。

我从这里得到了答案:http://lists.wixtoolset.org/pipermail/wix-users-wixtoolset.org/

基本上,您需要做的就是将要处理 return 代码的包设置为 Vital='no' 并在 ExecutePackageComplete 处理程序中使用 e.Result = Result.Ignore; 来防止回滚。