我是Wix 安装程序的新手。我正在尝试为我的程序添加防火墙例外。
我的代码如下:
<Component Id="_VIEW.EXE" Guid="*" Transitive="yes">
<File Id="view.exe"
Name="view.exe"
KeyPath="yes"
Source="$(var.INSTALLSOURCE)\view.exe">
<fire:FirewallException Id="view_firewall_domain_tcp"
Name="View"
Protocol="tcp"
Scope="any"
IgnoreFailure="yes"
Profile="domain" />
<fire:FirewallException Id="view_firewall_domain_udp"
Name="View"
Protocol="udp"
Scope="any"
IgnoreFailure="yes"
Profile="domain" />
<fire:FirewallException Id="view_firewall_private_tcp"
Name="View"
Protocol="tcp"
Scope="any"
IgnoreFailure="yes"
Profile="private" />
<fire:FirewallException Id="view_firewall_private_udp"
Name="View"
Protocol="udp"
Scope="any"
IgnoreFailure="yes"
Profile="private" />
</File>
</Component>
在我的代码中,我添加了4 个防火墙异常,每个异常对“配置文件”和“协议”属性都有不同的值。我的预期结果是创建了 4 个异常:
NAME GROUP Profile Enabled Action Override Program Local Address Remote Address Protocol Local Port Remote Port Allowed Users Allowed Computers
view Domain Yes Allow No c:\test\view.exe Any Any TCP Any Any Any Any
view Domain Yes Allow No c:\test\view.exe Any Any UDP Any Any Any Any
view Private Yes Allow No c:\test\view.exe Any Any TCP Any Any Any Any
view Private Yes Allow No c:\test\view.exe Any Any UDP Any Any Any Any
但实际结果是只创建了一个异常,“Protocol”属性的值为“any”而不是“ TCP ”或“ UDP ”:
NAME GROUP Profile Enabled Action Override Program Local Address Remote Address Protocol Local Port Remote Port Allowed Users Allowed Computers
view Domain Yes Allow No c:\test\view.exe Any Any Any Any Any Any Any
所以,我有两个问题:
- 为什么只创建一个异常?异常的名称必须是唯一的吗?
- 为什么“协议”属性的值不生效?
我参考了关于防火墙扩展的官方文档: http ://wixtoolset.org/documentation/manual/v3/xsd/firewall/firewallexception.html 在文档中,我看到了一些关于“文件”属性的描述:
被授予访问所有传入端口和协议的文件的标识符。如果您使用 File,则不能同时使用 Program。如果在同一个 FirewallException 元素中使用 File 以及 Port 或 Protocol,则该异常将无法在 Windows XP 和 Windows Server 2003 上安装。IgnoreFailure="yes" 可用于忽略导致的失败,但不会添加该异常.
这是否意味着如果我为程序设置防火墙规则,即使我设置了“协议”,“协议”和“端口”属性也会自动为“任何”?