我是在 VS2012 中使用 WIX 3.7 的中级 WIX 用户。我有多个 webapps 解决方案。
对于每个我都有一个引导程序,包括一个 MSI 项目。
我希望每个安装程序根据 IIS 中已安装的内容有条件地更改端口。
换句话说:默认安装到端口 80,如果使用 80,则安装到端口 81,如果使用 81,则安装到 82,等等。
我搜索了“WIX 有条件地更改端口”并找到了以下帖子
..但它们似乎不是我所需要的。
抱歉,如果答案正盯着我看,而我没有看到它。
谢谢你。
我是在 VS2012 中使用 WIX 3.7 的中级 WIX 用户。我有多个 webapps 解决方案。
对于每个我都有一个引导程序,包括一个 MSI 项目。
我希望每个安装程序根据 IIS 中已安装的内容有条件地更改端口。
换句话说:默认安装到端口 80,如果使用 80,则安装到端口 81,如果使用 81,则安装到 82,等等。
我搜索了“WIX 有条件地更改端口”并找到了以下帖子
..但它们似乎不是我所需要的。
抱歉,如果答案正盯着我看,而我没有看到它。
谢谢你。
显而易见的解决方案是遍历主机上的所有网站和虚拟应用程序并检查它们的端口号。
另一种可能性是遍历以 80 开头的所有端口并检查它是否可用。我认为System.Net.NetworkInformation 命名空间对这类东西有一些有用的对象,但我对网络相关的东西没有太多经验,所以我真的无法帮助你。
或者,您可以运行“netstat -a”来获取所有活动连接并解析结果。将输出重定向到临时文本文件可能更容易:“netstat -a > c:\temp\netstat.txt”。请记住,netstat 有点慢。
无论哪种方式,我都会将端口保留在一个属性中,并在您找到可用号码时对其进行修改。
如前所述,此功能目前不存在,但可以改进自定义操作以具有此类功能。WiX 工具集毕竟是开源的。
这将是扩展 scasched 和 scaexec DLL 的问题,其源代码可以在 src\ca\serverca 文件夹中找到。