一次打开多个同一个Mac应用程序

时间:2020-03-06 14:33:19  来源:igfitidea点击:

我正在用Java开发Mac App,该App登录到我们客户的任何数据库中。我的用户希望运行该程序的多个副本,以便他们可以同时登录几个客户端,而不是注销并重新登录。

如何允许用户一次打开我的App的多个副本?

我正在使用Eclipse进行开发,并使用Jarbundler进行应用程序开发。

编辑:更重要的是,有没有一种方法可以在代码库中做到这一点,而不是让我的用户在他们的系统上做一些时髦的事情?我宁愿给他们一个"打开新窗口"菜单项,然后让他们在终端中输入内容。

解决方案

从终端(或者在脚本包装器中):

/Applications/TextEdit.app/Contents/MacOS/TextEdit  &

这样的事情应该为我们工作。

在Java中执行以下操作:

String[] cmd = { "/bin/sh", "-c", "[shell commmand goes here]" };
 Process p = Runtime.getRuntime().exec (cmd);

从终端,我可以运行

open -n -a appName.app

然后从Applescript运行

tell application "Terminal"
activaate
   do script "open -n -a appName.app"
end tell

然后可以从Java执行该脚本。然后,我可以将该Java代码填充到Action中。然后,将该动作填充到显示"打开新窗口"的菜单项中。

这就是我目前要处理的内容。现在,我只需要获取appName。

如果我们正在开发中,则应该只能够实例化顶部Frame来创建一个新窗口。

我们可能已经获得了足够的代码,我们不想听到这些,但是我们实际上不应该启动同一应用程序的两个实例。有一个原因使我们发现它是如此困难,这是因为Apple不希望我们这样做。

OSX的方法是在XCode中使用基于Cocoa文档的应用程序模板。 Apple文档:选择一个项目。

这是用户非常习惯的事情,并且效果很好。 FTP程序,IRC客户端和许多其他类型已经使用不同的"文档"窗口来指向不同的服务器或者通道。指向不同的数据库没有本质上的区别。

根据我们编写的代码量以及应用程序的设计方式,这可能很难重新开始。但是,在设计阶段遇到此问题的开发人员绝对应该听取Apple的建议。