Я создаю установщик, который в настоящее время создает новый веб-сайт в IIS, создает пул приложений, а затем назначает этот пул веб-сайту. Я создал специальное действие для этого, и оно отлично работает.
Теперь я пытаюсь встроить некоторые проверки в пользовательские входы (имя сайта, целевой каталог, номер порта и т. д.). Вот тут я и выхожу из себя. В настоящее время я пытаюсь отобразить окно сообщения для пользователя, если номер порта не является «действительным», то есть > 65535, меньше 0, нулевым или пустым или в настоящее время используется другим сайтом. Это делается в методе 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...
}
Любая помощь будет оценена по достоинству.