如何让安装程序暂停/允许验证?

本文关键字:验证 许验证 安装 程序暂停 | 更新日期: 2023-09-27 18:16:59

我正在创建一个安装程序,当前在IIS中创建一个新网站,创建一个应用程序池,然后将此池分配给该网站。我创建了一个自定义动作来做这个,它工作得很好。

现在我试图建立一些检查到用户输入(网站名称,目标目录,端口号等)。这就是我陷入困境的地方。我目前试图向用户显示一个消息框,如果端口号不是"有效的",即>大于65535,小于0,空或空白,或目前正在由另一个站点使用。这在OnBeforeInstall方法中完成。

当用户收到消息并单击"Ok"时,我希望安装程序停止并允许用户输入另一个端口号。澄清一下,我不希望安装程序回滚或关闭,只允许用户输入一个新的端口号,然后尝试单击"下一步"。我还在OnBeforeInstall方法中运行其他检查,例如检查网站是否已经存在。在验证用户的基本输入之前,我不想运行这些检查。

下面是目前为止的代码:
    protected override void OnBeforeInstall(System.Collections.IDictionary savedState)
    {
        base.OnBeforeInstall(savedState);
        string msg = "The port: " + targetPort + " is invalid.";
        string caption = "Invalid Port Supplied";
        MessageBoxButtons buttons = MessageBoxButtons.OK;
        DialogResult result = DialogResult.None;
        int UserPort;
        Int32.TryParse(targetPort, out UserPort);
        if (UserPort <= 0 || string.IsNullOrEmpty(targetPort))
        {
           result = MessageBox.Show(msg, caption, buttons);
        }
        else if (UserPort > 65535)
        {
            result = MessageBox.Show(msg + " Please enter a port number less than 65535.", caption, buttons);
        }
        else if (!IsValidPort())
        {
            result = MessageBox.Show(msg + " The port is already in use.", caption, buttons);
        }
        if (result == DialogResult.OK)
        {
            //Pause installer
        }
        ...more checks...
    }

如何让安装程序暂停/允许验证?

这看起来像一个Visual Studio安装项目,你不能在VS安装项目中进行验证。

尽管它的名字OnBeforeInstall在安装完成和文件安装之后运行,所以使用的对话框已经来了又走,你不能访问值。显示来自该代码的消息,并查看它相对于进度条的位置。你甚至可能发现网站已经创建好了。

在MSI安装中完成验证的方式是由对话框中的按钮触发自定义操作代码,因此如果值不正确,Next按钮将被禁用并显示一条消息。你不能在VS安装项目中这样做。