gpt4 book ai didi

exception - 关于通过防火墙扩展在 wix 安装程序中添加防火墙异常的问题

转载 作者:行者123 更新时间:2023-12-05 01:07:28 28 4
gpt4 key购买 nike

我是 的新手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 防火墙异常并且每个异常对于“ 配置文件 ”和“ 协议(protocol) ”属性具有不同的值。我的预期结果是创建了 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

所以,我有两个问题:
  • 为什么只创建一个异常?异常的名称必须是唯一的吗?
  • 为什么“协议(protocol)”属性的值不生效?

  • 我引用了关于防火墙扩展的官方文档:
    http://wixtoolset.org/documentation/manual/v3/xsd/firewall/firewallexception.html
    在文档中,我看到了一些关于"file"属性的描述:

    Identifier of a file to be granted access to all incoming ports and protocols. If you use File, you cannot also use Program. If you use File and also Port or Protocol in the same FirewallException element, the exception will fail to install on Windows XP and Windows Server 2003. IgnoreFailure="yes" can be used to ignore the resulting failure, but the exception will not be added.



    这是否意味着如果我为程序设置防火墙规则,即使我设置了“协议(protocol)”,“协议(protocol)”和“端口”属性也会自动为“任何”?

    最佳答案

    现有的 wix FirewallException 自定义操作使用 XP/Server2003 windows 防火墙 API。在此 API 中,为特定可执行文件设置防火墙异常(exception)意味着所有端口和所有协议(protocol)都将对异常(exception)开放。

    作为引用,XP/Server2003 firewall API interfaces .请注意,INetFwOpenPort 能够获取/设置端口,而 INetFwAuthorizedApplication 没有。

    如果您想在程序上创建防火墙异常(exception)并明确限制端口、协议(protocol)和域,您将需要使用 Vista 附带的 Windows“高级”防火墙 API。查看这些引用资料:
    Highlevel overview
    Reference guide
    Command-line reference guide

    可悲的是,还没有人为 wix 实现 AdvancedFirewallException 扩展来使用这些更新的 API。也许我会举办一个kickstarter事件,看看是否有兴趣资助开发;P

    关于exception - 关于通过防火墙扩展在 wix 安装程序中添加防火墙异常的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18633391/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com