Intallshield - 检测正在使用的现有网站端口

Intallshield - Detect existing website ports in use

我正在使用 Installshield 2013 创建安装程序。

此安装程序将有一个对话框,允许用户为要安装的 Web 应用程序输入自定义端口号。但是我想验证此端口号是否已被 IIS 中的现有网站使用。 installshield 是否具有执行此操作的内置功能?或者我是否需要创建一个查询 IIS 元数据库的自定义操作。

那就更复杂了。 IIS 使用 HTTP.sys 并且多个网站实际上可以共享一个点,前提是它们的绑定指定了唯一的主机 headers。 InstallShield 中没有内置任何内容,因此您必须编写验证自定义操作。

您可以使用这种代码编写自定义操作:

            // Check if port is in use.
            var ip = System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties();
            var listeners = ip.GetActiveTcpListeners();
            foreach (var listener in listeners)
            {
                if (listener.Port == port)
                {
                    message = string.Format("Please specify another port number. {0} is already in use.", port);
                    break;
                }
            }