Install4j - 有没有办法杀死当前使用的端口?

标签 install4j

当我们的安装程序失败时,默认情况下会启动回滚过程。 因为我们的安装程序涉及 Windows 服务,所以我们使用 Optional Rollback Script 属性来关闭和删除这些服务,以防它们在安装后出现故障。

我们的问题是某些进程仍然分配给某些端口,这种情况导致用户在不先关闭这些端口的情况下无法删除安装目录。

现在,在命令行中,使用以下命令可以很容易地找到并终止这些进程:

netstat -ano | findstr :<portNumber>
taskkill /PID <processId> /F

我的问题是我无法通过 Run Script 操作运行这些命令,获取它们的进程 ID 并关闭它们。 (无论如何,我无法取回输出)

Installer 中是否有这样的内置选项?如果没有,有没有其他方法?

最佳答案

您可以使用 WinProcesses API 终止进程:

https://resources.ej-technologies.com/install4j/help/api/com/install4j/api/windows/WinProcesses.html

至于调用netstat,就得调用

netstat -ano

使用“运行可执行文件或批处理文件”操作并将其“重定向标准输出”属性设置为“安装程序变量”。然后您可以在“运行脚本”操作中解析输出。

关于Install4j - 有没有办法杀死当前使用的端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49155298/

相关文章:

java - 如何解决 install4j 中的 java.lang.NoClassDefFoundError

java - 目录选择画面、初始目录、无人值守模式下的标准目录

linux - install4j - 单击超链接,网络浏览器无法打开

java - 如何在 install4j FileChooser 中使用一个过滤器

java - install4j 7 - Mac OSX 中的 handleQuit() 不再被调用

install4j - 更改默认安装位置并在 Install4j 中创建桌面快捷方式链接

java - 使用 Install4J 使用 EV 证书签署可执行文件

java - Install4j 安装程序在出现 NullPointerException 的第一个欢迎屏幕之前停止

每个用户具有单个实例的 Java 应用程序