自定义卸载动作 c#

Posted

技术标签:

【中文标题】自定义卸载动作 c#【英文标题】:Custom uninstall Action c# 【发布时间】:2012-07-22 18:00:14 【问题描述】:

我有一些条件,我必须在卸载时检查,如果条件匹配,那么我想停止安装过程并想回滚卸载过程。

目前我正在使用安装程序类进行卸载的自定义操作。我在其中检查条件是否匹配?如果匹配,则我已完成回滚,否则将继续卸载。

我在卸载脚本操作中使用了以下代码。

public override void Uninstall(IDictionary savedState)
        
            if (Condition)
            
                Rollback(savedState);
            
            else
            
                base.Uninstall(savedState);
            

        

但此代码无法回滚卸载过程。让我知道这段代码有什么问题。如果有任何新想法,请告诉我。

【问题讨论】:

【参考方案1】:

抛出InstallException,它将回滚。阅读this。

public override void Uninstall(IDictionary savedState)

    if (Condition)
    
        throw new InstallException("blah blah");
        // What ever you want to do after
    
    else
    
        base.Uninstall(savedState);
                   

您的代码不起作用。为什么?

当发生回滚时,将调用回滚自定义操作。

调用回滚自定义操作会导致回滚。

【讨论】:

感谢重播。我尝试抛出异常,但现在问题是,它显示异常错误窗口。有什么办法可以隐藏那个窗口。 不幸的是,没有。该窗口告诉用户为什么调用回滚。在我的代码中,它将显示“blah blah” 另外它显示“错误 1001 ........”。在 Wix/Installshield 中似乎有出路,但在 Visual Studio 部署项目中没有。 @NikhilAgrawal,但在我的项目中,我需要在 Visual Studio 部署项目中进行。所以我正在进一步探索1,2

以上是关于自定义卸载动作 c#的主要内容,如果未能解决你的问题,请参考以下文章

在卸载期间显示来自 C# 自定义操作的 WiX 对话框

C#事件快捷设置

C# 自定义VS安装项目的安装路径(可以通过程序调用DefaultLocation属性吗)

自定义帖子类型动作挂钩/瞬态

卸载期间自定义操作不起作用

.NET 部署项目:取消卸载程序的自定义操作