【问题标题】:Wix 3.7: How to set website to unused port?Wix 3.7:如何将网站设置为未使用的端口?
【发布时间】:2013-05-24 02:46:54
【问题描述】:

我是在 VS2012 中使用 WIX 3.7 的中级 WIX 用户。我有多个 webapps 解决方案。

对于每个我都有一个引导程序,包括一个 MSI 项目。

我希望每个安装程序根据 IIS 中已安装的内容有条件地更改端口。

换句话说:默认安装到端口 80,如果使用 80,则安装到端口 81,如果使用 81,则安装到 82,等等。

我搜索了“WIX 有条件更改端口”,发现以下帖子

WiX 3.7 IIS Setup
Wix to Install multiple Applications

..但它们似乎不是我所需要的。

如果答案正盯着我看而我没有看到,请道歉。

谢谢。

【问题讨论】:

  • 这个问题的另一个可能标题是:“如何在安装时使用 WIX 3.7 选择下一个可用的 8* 端口?”

标签: iis wix wix3.7


【解决方案1】:

如前所述,此功能目前不存在,但可以改进自定义操作以具有此类功能。 WiX toolset 毕竟是开源的。

这将是扩展 scasched 和 scaexec DLL 的问题,其源代码可以在 src\ca\serverca 文件夹中找到。

【讨论】:

  • 嗨,Rob,有任何更新,还是还是一样?
【解决方案2】:

显而易见的解决方案是遍历主机上的所有网站和虚拟应用程序并检查它们的端口号。

另一种可能性是遍历所有以 80 开头的端口并检查它是否可用。我认为System.Net.NetworkInformation namespace 对这类东西有一些有用的对象,但我对网络相关的东西没有太多经验,所以我无法真正帮助你。

或者,您可以运行“netstat -a”来获取所有活动连接并解析结果。将输出重定向到临时文本文件可能更容易:“netstat -a > c:\temp\netstat.txt”。请记住,netstat 有点慢。

无论哪种方式,我都会将端口保存在一个属性中,并在您找到可用号码时对其进行修改。

【讨论】:

  • @Andrew 来自自定义操作。您正在做的事情没有内置功能。
  • 如果是这样,没有“本机”WIX 标签来提供(至少在我看来)每个网站在运行时都需要的非常基本的功能似乎是一个明显的遗漏: 绑定到一个未使用的端口。来自“如果你知道怎么做,一切都很容易”的部门 - 实现这一目标最直接的方法是什么?
  • @Andrew 我会使用第二种方法(System.Net.NetworkInformation),因为所有后端代码都已经完成。如果你真的认为它应该包含在 WiX 中,你可以编写一个扩展并提交给 WiX。
猜你喜欢
  • 1970-01-01
  • 2012-07-21
  • 1970-01-01
  • 2019-05-17
  • 2011-10-25
  • 2014-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多