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;
来防止回滚。
我想知道是否有一种方法可以防止包失败时回滚。
就像我的情况一样,我有一个 .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;
来防止回滚。