Как заставить установщика приостановить / разрешить проверку?
Я создаю установщик, который в настоящее время создает новый веб-сайт в 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...
}
Любая помощь будет оценена.
1 ответ
Это похоже на проект установки Visual Studio, и вы не можете выполнить эту проверку с проектом установки VS.
Несмотря на свое имя, OnBeforeInstall запускается после завершения установки и установки файлов, поэтому использованные диалоговые окна появлялись и исчезали, и вы не сможете получить доступ к значениям. Отобразите сообщение из этого кода и посмотрите, где оно находится относительно индикатора выполнения. Вы даже можете обнаружить, что веб-сайт уже создан.
Проверка выполняется в установках MSI: код настраиваемого действия вызывается кнопками в диалоговом окне, поэтому при неправильных значениях кнопка "Далее" будет отключена и отобразится сообщение. Вы не можете сделать это с проектами установки VS.