如何使用 Wixsharp (Wix#) 安装程序实现回滚

How to implement rollback using Wixsharp (Wix#) installer

我是 MSI 安装程序 wix 和 wixsharp 的新手。我需要在安装过程中通过一些操作来实现安装程序(比如调用一些 *.exe 或设置任务调度程序等)。如果出现任何问题和异常,我需要回滚所有已安装的项目。

  1. 如何使用Wixsharp (Wix#)实现回滚?我在这个项目的页面上没有找到任何信息。

  2. 我无法弄清楚自定义操作和 before\after 安装事件处理程序之间的实际区别。为什么我需要完全使用自定义操作,而不是在 wix# 中使用 AfterInstall 甚至处理程序?

wix# 的作者使用权限提升和第三方对程序集的引用帮助我回滚(最困难的情况)。

完整答案在这里:https://wixsharp.codeplex.com/discussions/646337

通常回滚可以这样完成:

project.AfterInstall += project_AfterInstall;
...
static void project_AfterInstall(SetupEventArgs e)
{
    try
    {
        //do your stuff
    }
    catch (Exception ex)
    {
        e.Session.Log(ex.Message);
        e.Result = ActionResult.Failure;
    }
}