1

我有一个 VS 2010 安装项目。在安装项目中,我有一个自定义对话框和一个自定义操作。两者都有效,我什至可以调试我的自定义操作,它会正确接收用户在自定义对话框中提供的输入。

我想验证用户输入,并且仅在输入有效时才允许用户进入下一步。我可以使用 MessageBox.Show 显示一个消息框,但是在用户更正输入之前如何防止进入下一步?

public override void Install(IDictionary stateSaver)
{
    base.Install(stateSaver);
    string myInput = Context.Parameters["MY_INPUT"]; // Value from custom dialog
    if (myInput ..... )
    {
        // Not a valid input, we do not want to proceed to the next step 
        MessageBox.Show("Not a valid input, please correct it");

        // What to do here? 
        // How can I tell the Installer do not accept this input?
    }
    else
    {
        // Valid input...
    }
 }

谢谢回答

4

1 回答 1

1

实现这一点的最简单方法是从您的自定义操作中设置一个属性,并使用该属性来调节用户按下“下一步”按钮时调用的 NewDialog 事件,因此如果条件不成立,则不会执行该事件。

.NET Installer 类自定义操作无法直接从其代码设置属性,但您可以使用 C# 代码编写另一种类型的自定义操作,该操作可以获取/设置属性,如下例所示:http://www.advancedinstaller。 com/user-guide/qa-c-sharp-ca.html

编辑:您可以通过使用 Orca 编辑从 VS 生成的 MSI 来做到这一点,但是,我会说这非常痛苦,因为您需要手动编辑多个表,例如 Binary、CustomActions、ControlEvent。下面是一些可以帮助您开始的方法:http: //support.microsoft.com/kb/255905
另一种方法是使用更高级的安装程序创作工具切换创建安装程序包。如果您想使用一个免费且功能强大的软件,我推荐 WiX ( http://wix.sourceforge.net/ ),您需要一些时间才能开始使用它,但它比在 Orca 中编辑要快得多。Advanced Installer ( http://www.advancedinstaller.com),但您需要企业许可证才能完成所需的工作。

于 2013-02-12T10:07:48.157 回答