open
не будет запускать второй экземпляр вашего приложения, если оно уже запущено, оно просто сделает его активным приложением.
Вы можете запустить второй экземпляр вашего приложения, выполнив приложениеИсполняемый файл пакета:
excel("/Applications/Foo.app/Contents/MacOS/Foo", ...
Хотя это не рекомендуемый способ запуска приложения Какао, инженеры Apple заверили, что это сработает.Но имейте в виду, что теперь у вас есть два запущенных приложения, которые используют один и тот же NSUserDefaults
и другие ресурсы, поэтому ожидайте странного поведения (или немедленно прекратите работу первого приложения через exit()
).
Имеясказал, что это, вероятно, не то, что вы хотите сделать.
Во-первых, вы не можете «обнаружить сбой и предпринять какие-либо действия», поскольку, по определению, ваше приложение упало.Существуют пакеты, которые обнаруживают сбой и регистрируют информацию о нем;ищите подобное решение для перезапуска вашего приложения.
Что касается обновлений, я бы снова направил вас к стороннему решению, например Sparkle .Он обрабатывает выход из старого приложения, его замену и последующий запуск нового нормальным способом.
Наконец, вы можете зарегистрировать свое приложение как «пользовательский агент» с помощью launchd
, чтобы оно автоматически перезапускалось.если выйдет.