从Visual Studio安装程序中安装安装程序取消安装程序

时间:2014-05-15 10:17:33

标签: c# visual-studio-2010 installer setup-project

我有一个安装程序类,它在安装时从用户处获取了一个值。现在根据我的要求,如果提供的值不正确,我必须取消安装,但我没有得到如何获得这个。

这是我的installer.cs文件..

 public override void Install(System.Collections.IDictionary stateSaver)
    {
        base.Install(stateSaver);

        // Retrieve configuration settings
        string targetSite = Context.Parameters["targetsite"];
        string targetVDir = Context.Parameters["targetvdir"];
        string targetDirectory = Context.Parameters["targetdir"];

        string value = Context.Parameters["value"];

        string connectionstring = Context.Parameters["db"];

        if (targetSite == null)
            throw new InstallException("IIS Site Name Not Specified!");

        if (targetSite.StartsWith("/LM/"))
            targetSite = targetSite.Substring(4);

        if (connectionstring == null)
            throw new InstallException("You did not specify a database to use!");

        if (value.Equals("123"))
        {

            RegisterScriptMaps(targetSite, targetVDir);
            ConfigureDatabase(targetSite, targetVDir, connectionstring);
        }

        else {

            Rollback(stateSaver);

        }
    }

尽管Rollback(stateSaver);我的设置已安装..

请帮帮我..

1 个答案:

答案 0 :(得分:1)

只需调用InstallException即可进行回滚。这是通常的方式而且有效,所以如果它没有,那么其他东西正在发生。

您应该考虑使用其他工具,以便在输入数据时对其进行验证。 VS自定义操作始终在安装完所有文件后运行,因此基本上您需要安装整个应用程序然后再将其回滚,而不是使用MSI构建工具来验证何时输入。