gpt4 book ai didi

install4j - 当端口不可用时强制安装程序失败?

转载 作者:行者123 更新时间:2023-12-02 00:19:33 25 4
gpt4 key购买 nike

我正在使用 install4j 安装需要 HTTP 和 HTTPS 端口的 Intranet 应用程序。我想测试这些端口是否可用,并警告用户/阻止安装,直到他们选择不可用的端口。

我看到的唯一途径(除了自定义代码)是确保 Windows 服务在应用程序无法绑定(bind)到所需端口时失败,并使用失败策略“询问用户是重试还是失败时退出”。在 Web 服务器启动代码中,如果服务器无法绑定(bind)到端口,我将使用 System.exit(1)。但是,这似乎并未注册为安装程序的失败 - 安装继续进行而不调用失败策略。

向“启动服务”操作发出失败信号的正确方法是什么?其他人是否采取了替代方法来保证安装使用可用端口?

最佳答案

我发现了一个很好的替代方法:添加自定义代码操作:

List<Integer> takenPorts = new ArrayList<Integer>();
for (int port : Arrays.asList(80, 443)) {
java.net.ServerSocket socket = null;
try {
socket = new java.net.ServerSocket(port);
} catch (IOException e) {
takenPorts.add(port);
} finally {
if (socket != null) socket.close();
}
}

if (takenPorts.isEmpty()) {
return true;
}
else {
String msg;
if (takenPorts.size() == 2) {
msg = "Ports 80 and 443 must be available for uDiscovery";
}
else {
msg = "Port " + takenPorts.get(0) + " must be available for uDiscovery";
}
context.setVariable("portErrorMessage", msg);
return false;
}

关于如何连接的很好的解释 here

关于install4j - 当端口不可用时强制安装程序失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11542831/

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