在运行MSI安装时如何管理Windows防火墙端口?

问题描述

我有使用Wix工具集和Wix文件(* wxs)创建的MSI Windows Installer文件。我的要求是我需要在运行MSI安装时打开或关闭特定的防火墙端口。

是否可以通过用于制造MSI安装程序的Wix文件(* wxs)中的规范来管理它?

解决方法

WiX中有一个名为FirewallException的扩展名。您需要在Visual Studio项目中引用它。在C:\Program Files (x86)\WiX Toolset v3.11\bin\WixFirewallExtension.dll上找到它以进行WiX的标准安装。

关于实际元素的用法:

基本用法分步:

  1. 在Visual Studio项目中,添加对C:\Program Files (x86)\WiX Toolset v3.11\bin\WixFirewallExtension.dll的引用

    • 右键单击您的WiX项目
    • 点击“添加=>引用...”并浏览至以上路径,然后双击文件
  2. 在您的 Project.wxs 源文件中添加到顶级Wix元素:xmlns:fire="http://schemas.microsoft.com/wix/FirewallExtension"

  3. 然后添加标记。遵循以下原则:

    <Component Feature="ProductFeature">
    
      <File Source="$(env.SystemRoot)\myexecutable.exe">
         <fire:FirewallException Id="FWX1" Name="Service" Port="[PORT]" Protocol="tcp" Scope="any" />
      </File>
    
    </Component>