java - 如何在安装过程中打开防火墙端口?

标签 java windows firewall install4j windows-firewall

如何在使用 install4j 安装期间打开 Windows 防火墙端口?
我找到了这个适用于 c# 的解决方案,但我无法将它移植到 install4j 自定义代码:
http://www.codeproject.com/Articles/14906/Open-Windows-Firewall-During-Installation

也许有人有想法或替代解决方案?

最佳答案

这个问题已经有一段时间了,但这是我用 install4j 5.1/6.1 做的

对于每条防火墙规则,我都使用了带有以下参数的“运行可执行文件或批处理文件”操作:

可执行文件:${installer:sys.system32Dir}\netsh.exe

工作目录:${installer:sys.system32Dir}

参数:取决于我想使用 netsh 创建的规则语法。

例如:advfirewall;防火墙;添加;规则;名称=${编译器:sys.shortName} UDP IN;目录=在;行动=允许;服务=${编译器:sys.shortName}; localip=任何;远程ip=任何;本地端口=任何;远程端口=任何;协议(protocol)=udp;接口(interface)类型=任何;安全=不需要;边缘=否;配置文件=任何;启用=是

或者,从编辑对话框:

advfirewall
firewall
add
rule
name=${compiler:sys.shortName} UDP IN
dir=in
action=allow
service=${compiler:sys.shortName}
localip=any
remoteip=any
localport=any
remoteport=any
protocol=udp
interfacetype=any
security=notrequired
edge=no
profile=any
enable=yes

忠告:

netsh 对它接收的参数很挑剔。更糟糕的是,当它无法解析您的输入时,它往往会打印出非常无用和误导的消息。所以请注意以下几点:

  1. 将每个 netsh 命令作为单独的参数传递。在属性表中使用分号分隔它们。在由换行符分隔的编辑对话框中。
  2. 不要在你的论点中使用引号。如果 Microsoft 文档告诉您指定如下规则名称:name="rule name",则仅在命令行中执行此操作。在 install4j 中,参数应该是 name=rule name without quotes
  3. 确保您的论点不包含任何不应包含的内容,例如不属于它们的地方的空格。 netsh 不喜欢那样。

关于java - 如何在安装过程中打开防火墙端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12051371/

相关文章:

java - 从 J2ME 获取电池状态

java - (生菜)只读你不能写一个只读的奴隶

java - Spring Integration Java DSL - 动态设置 RecepientListRouter 收件人?

xml - windows下XSLT样式表相对路径问题

windows - 自托管时究竟是什么导致了 AddressAccessDeniedException : HTTP could not register URL

java - 当我从具有不同屏幕分辨率的 PC 打开游戏时,为什么 JPanel 的尺寸会变得困惑?

c# - 从 Windows C# 上传文件到 Linux 服务器

c# - 我需要查看哪些 API 来编写我自己的 Windows 驱动器号

ssl - Heroku CLI 错误 : unable to get local issuer certificate

防火墙后的 NuGet