我想知道是否有办法在Package失败时阻止回滚。
就像我的情况一样,我有一个.bat包,用于设置某些服务的用户名和密码。如果失败,我想在安装结束时显示一条消息,告知用户需要手动设置凭据。此外,当我在安装之前检查凭证时,由于某种原因他们失败了,我告诉用户该凭证可能是错误的,并询问他是否要继续。
(否则我不想阻止回滚)
我知道<ExitCode/>
中有<ExePackage/>
我可以用来阻止回滚,但是我无法在我的Bootstrapper中检测到错误值。
我还尝试在程序包完成时读取我的Bootstrapper中的Status,然后返回以下内容之一:
e.Result = Result.Continue;
e.Result = Result.Ignore;
e.Result = Result.Ok;
阅读状态的例子:
if (e.Status == -2147024895)
{
e.Result = Result.Continue;
}
但它仍然会回滚。
答案 0 :(得分:0)
我从这里得到了答案:http://lists.wixtoolset.org/pipermail/wix-users-wixtoolset.org/
基本上,您需要做的就是将要处理返回代码的包设置为Vital='no'
,并在ExecutePackageComplete
处理程序中使用e.Result = Result.Ignore;
来防止回滚。