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