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

Install4j - is there any way killing currently used ports?

当我们的安装程序失败时,默认情况下会启动回滚过程。 因为我们的安装程序涉及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

使用 "Run executable or batch file" 操作并将其 "Redirect stdout" 属性 设置为 "To installer variable"。然后您可以在 "Run script" 操作中解析输出。