【问题标题】:Install4j - Issue with OSX launcherInstall4j - OSX 启动器的问题
【发布时间】:2018-09-29 11:22:12
【问题描述】:

我们在 CentOS7 上使用 install4j 版本 6.1.4 (build 6320)。

我们为 OSX 构建了安装程序,安装程序类型为“Mac OSX 文件夹”。安装程序有一个启动器,它将启动自定义 Java SystemTray 应用程序。

在安装过程中,启动器按预期执行,系统托盘应用程序出现了。即使在安装过程完成后,启动器仍然停留在 Applications Doc 中并且没有关闭。 在关闭系统托盘应用程序之前,此启动器不会从应用程序文档中退出。

当机器关闭时,启动器仍在运行,直到我们强制退出或关闭 SystemTray 应用程序。

有没有办法可以在安装完成后立即关闭启动器进程?

---更新---

这个问题是 OSX 特有的。

启动器实际上是一个 JavaApplicationStub 二进制文件,它运行基于 Java 的自定义 SystemTray 应用程序。

当我们尝试退出 JavaApplicationStub 应用程序(可在 Application Doc 上找到)时,它不会退出,直到我们关闭 SystemTray 应用程序或强制退出它。

当我们终止 JavaApplicationStub 进程时,它也会终止 SystemTray 应用程序。

【问题讨论】:

    标签: java macos install4j launcher


    【解决方案1】:

    如果您没有进程的句柄,您可以使用WinProcesses API 来终止您知道可执行文件完整路径的进程:

    for (WinProcesses.Info info : infos) {
         if (info.getModuleName().equals("full path to executable")) {
             WinProcesses.terminateProcesses(new int[] {info.getProcessId()});
             return true;
         }
    }
    

    在 macOS 上,有对应的 MacProcesses API:

    for (MacProcesses.Info info : infos) {
         if (info.getModuleName().equals("full path to executable")) {
             MacProcesses.terminateProcesses(new int[] {info.getProcessId()});
             return true;
         }, false, 10000
    }
    

    【讨论】:

    • 谢谢。用更多细节更新了我的问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-01
    • 1970-01-01
    • 2018-05-25
    相关资源
    最近更新 更多