現在、IIS で新しい Web サイトを作成し、アプリケーション プールを作成してから、このプールを Web サイトに割り当てるインストーラーを作成しています。これを行うカスタム アクションを作成しましたが、これは正常に機能します。
現在、ユーザー入力 (サイト名、ターゲット ディレクトリ、ポート番号など) にいくつかのチェックを構築しようとしています。これは私が立ち往生しているところです。ポート番号が「有効」でない場合、つまり 65535 より大きい場合、0 より小さい場合、null または空白である場合、または現在別のサイトで使用されている場合に、ユーザーにメッセージ ボックスを表示しようとしています。これは OnBeforeInstall メソッドで行われます。
ユーザーがメッセージを受け取って「OK」をクリックした時点で、インストーラーを停止し、ユーザーが別のポート番号を入力できるようにします。明確にするために、インストーラーをロールバックまたは終了させたくありません。ユーザーが新しいポート番号を入力できるようにしてから、「次へ」をクリックしてみてください。Web サイトが既に存在するかどうかを確認するなど、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...
}
どんな助けでも大歓迎です。