Идеальный путь к приложениям единственного экземпляра на Mac

SELECT userid, MAX(value) KEEP (DENSE_RANK FIRST ORDER BY date DESC)
  FROM table
  GROUP BY userid
7
задан Quinn Taylor 7 July 2009 в 03:19
поделиться

5 ответов

На компьютерах Mac нет экземпляров, как в Windows. Вообще говоря, вы хотите, чтобы приложение запускалось дважды, вам физически нужно скопировать двоичный файл, а затем дважды щелкнуть скопированную версию.

Если вам нужно запустить два экземпляра приложения, вы не думаете, как пользователь Mac :).

Редактировать: Это технически неправда. Проверьте комментарии.

6
ответ дан 6 December 2019 в 12:53
поделиться

Чтобы подробнее рассказать об использовании NSWorkspace. Попробуйте использовать запущенные приложения в NSWorkspace. Это возвращает NSArray, содержащий словарь для каждого запущенного приложения. Вы можете просмотреть массив, чтобы узнать, запущено ли приложение, которое вы ищете. Я бы посоветовал вам использовать значение с ключом NSApplicationBundleIdentifier, который будет иметь значение типа com.mycompany.myapp, а не искать имя. Если вам нужно найти идентификатор пакета для приложения, вы можете посмотреть его файл info.plist в пакете приложения.

8
ответ дан 6 December 2019 в 12:53
поделиться

Не работает сопоставление управления процессами между разными операционными системами. Или не работает. По умолчанию и без особых усилий вы получаете одну копию и только одну копию приложения.

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

Как определить, запущено ли уже приложение OS X

Для введения в контекст времени выполнения и, в частности, вокруг демонов и агентов Mac OS X (и для этих случаев когда вам действительно нужно иметь несколько запущенных копий исполняемого файла в виде пула или чего-то подобного, похожего на Apache), см .:

http://developer.apple.com/technotes/tn2005/tn2083.html

1
ответ дан 6 December 2019 в 12:53
поделиться

If you're writing a Cocoa application, you can use NSWorkspace to see if another process is running with your bundle identifier. I've seen a few apps that present a dialog and say: "An instance of this app is already running" - I think Firefox does it, actually.

It's not a very "mac-ish" approach, but it will get the job done.

1
ответ дан 6 December 2019 в 12:53
поделиться

Если вы развертываете свое приложение с помощью Java Web Start (JWS), вы можете использовать javax.jnlp.SingleInstanceService . Подготовка JWS также обеспечит автоматическое обновление программы.

0
ответ дан 6 December 2019 в 12:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: