Открытие более одного приложения Mac одновременно - PullRequest
1 голос
/ 22 сентября 2008

Я разрабатываю приложение для Mac на Java, которое подключается к любой из баз данных нашего клиента. Мои пользователи хотят иметь несколько запущенных копий этой программы, чтобы они могли одновременно входить в пару клиентов, а не выходить из системы и снова входить в нее.

Как разрешить пользователю открывать несколько копий моего приложения одновременно?

Я использую Eclipse для разработки и Jarbundler для создания приложения.

Редактировать: Более важно, есть ли способ сделать это в кодовой базе, вместо того, чтобы мой пользователь делал что-то напуганное в своей системе? Я бы предпочел просто дать им пункт меню «Открыть новое окно», а затем заставить их набирать текст в Терминале.

Ответы [ 4 ]

4 голосов
/ 23 сентября 2008

Возможно, вы уже получили достаточно кода, чтобы не слышать этого, но вам не следует запускать два экземпляра одного и того же приложения. Есть причина, по которой вы находите это настолько трудным, и это потому, что Apple не хочет, чтобы вы это делали.

OSX способ сделать это - использовать шаблон Приложения на основе документов Cocoa в XCode. Документация Apple: выбор проекта.

Это то, к чему пользователи очень привыкли, и оно работает просто отлично. Программы FTP, клиенты IRC и многие другие типы уже используют разные окна «документы» для указания на разные серверы или каналы. В указании на разные базы данных нет ничего особенного.

В зависимости от того, сколько кода вы написали, и как разработано ваше приложение, это может быть практически невозможно реализовать без перезапуска. Однако разработчики, которые сталкиваются с этой проблемой на этапе проектирования, должны обязательно принять совет Apple.

0 голосов
/ 23 сентября 2008

Из Терминала я могу запустить

open -n -a appName.app

Тогда из Applescript я могу запустить

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

Тогда из Java я могу выполнить этот скрипт. Затем я могу вставить этот Java-код в Action. Затем поместите это действие в пункт меню с надписью «Открыть новое окно».

Это то, с чем я сейчас уйду. Теперь мне просто нужно получить appName.

0 голосов
/ 23 сентября 2008

Если вы разрабатываете его в разгаре, вы можете просто создать экземпляр верхнего фрейма для создания нового окна.

0 голосов
/ 22 сентября 2008

Из Терминала (или в оболочке скрипта):

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

Нечто подобное должно работать для вас.

Чтобы сделать это на Java:

 String[] cmd = { "/bin/sh", "-c", "[shell commmand goes here]" };
 Process p = Runtime.getRuntime().exec (cmd);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...