我正在创建一个安装程序,该安装程序当前在 IIS 中创建一个新网站,创建一个应用程序池,然后将此池分配给该网站。我创建了一个自定义操作来执行此操作,并且效果很好。
现在我正在尝试对用户输入(站点名称、目标目录、端口号等)进行一些检查。这就是我不解的地方。我目前正在尝试向用户显示一个消息框,如果端口号不是“有效”即 > 大于 65535、小于 0、null 或空白,或者当前正在被另一个站点使用。这是在 OnBeforeInstall 方法中完成的。
在用户收到消息并单击“确定”时,我希望安装程序停止并允许用户输入另一个端口号。澄清一下,我不希望安装程序回滚或关闭,只需允许用户输入新的端口号,然后尝试单击“下一步”。我还在 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...
}
任何帮助,将不胜感激。