SMLoginItemSetEnabled иногда молча не удается запустить помощник пользовательского интерфейса в песочнице

У меня есть приложение, которое находится в «песочнице» и включает в себя помощника, который представляет некоторый пользовательский интерфейс (в виде полноэкранного окна, но может быть элементом состояния или аналогичным).

Это работает ... большую часть времени. Но иногда это не так; просто молча не удается запустить помощника.

Поскольку у помощника есть пользовательский интерфейс, я используюSMLoginItemSetEnabled чтобы загрузить его, тогдаNSXPCConnection общаться с этим. Но иногдаSMLoginItemSetEnabled не в состоянии запустить его, все еще возвращая ДА.

Похоже, это связано со старой сборкой приложения где-то на машине; это, кажется, сбивает с толку механизм входа в систему. Удаление старого приложения исправляет это, но я не могу разумно ожидать, что пользователи будут делать это (некоторые люди предпочитают хранить старые версии).

Я могу обнаружить эту ситуацию, сравнивая результат-[NSWorkspace URLForApplicationWithBundleIdentifier:] с URL-адресом помощника в комплекте приложений, но необходимость попросить пользователя удалить другое приложение не очень элегантное решение.

Есть ли способ сделатьSMLoginItemSetEnabled всегда использовать элемент входа из текущего комплекта приложений, а не какой-нибудь случайный в другом месте на диске?

Или что-то изменилось в последних версиях ОС для поддержки более элегантного механизма для помощников с пользовательским интерфейсом?

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

Ответы на вопрос(3)

Ваш ответ на вопрос