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;
}
}
我正在使用 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;
}
}