如何在安装install4j期间打开Windows防火墙端口?
我为c#找到了这个解决方案,但我无法将其移植到install4j自定义代码:
http://www.codeproject.com/Articles/14906/Open-Windows-Firewall-During-Installation
也许有人有想法或替代解决方案?
答案 0 :(得分:2)
问题问题已经有一段时间了,但是这是我用install4j 5.1 / 6.1做的方式
对于每个防火墙规则,我使用“运行可执行文件或批处理文件”操作,并使用以下参数:
可执行文件:${installer:sys.system32Dir}\netsh.exe
工作目录:${installer:sys.system32Dir}
参数:取决于我想要创建的规则,使用netsh语法。
例如: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
或者,从编辑对话框中:
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对于它收到的参数很挑剔。更糟糕的是,当它无法解析您的输入时,它往往会打印出非常无用且误导性的消息。请注意以下几点:
name="rule name"
,则仅在命令行中执行此操作。从install4j开始,参数应为name=rule name
,不带引号。答案 1 :(得分:1)
Thx,我找到了一个类似的解决方案,我刚刚创建了一个“ firewall.cmd”,其中包含允许其在安装过程中从install4j运行的规则。 “ firewall.cmd”的内容:
netsh.exe advfirewall firewall delete rule name="QOMET-IN"
netsh.exe advfirewall firewall delete rule name="QOMET-OUT"
netsh.exe advfirewall firewall add rule name="QOMET-IN" protocol=TCP dir=in localport=3050,29418-29430,14416 security=notrequired action=allow profile=any enable=yes
netsh.exe advfirewall firewall add rule name="QOMET-OUT" protocol=TCP dir=out remoteport=3050,29418-29430,14416,20,21,25,587,80 security=notrequired action=allow profile=any enable=yes