SMLoginItemSetEnabled иногда молча не удается запустить помощник пользовательского интерфейса в песочнице
У меня есть приложение, которое находится в «песочнице» и включает в себя помощника, который представляет некоторый пользовательский интерфейс (в виде полноэкранного окна, но может быть элементом состояния или аналогичным).
Это работает ... большую часть времени. Но иногда это не так; просто молча не удается запустить помощника.
Поскольку у помощника есть пользовательский интерфейс, я используюSMLoginItemSetEnabled
чтобы загрузить его, тогдаNSXPCConnection
общаться с этим. Но иногдаSMLoginItemSetEnabled
не в состоянии запустить его, все еще возвращая ДА.
Похоже, это связано со старой сборкой приложения где-то на машине; это, кажется, сбивает с толку механизм входа в систему. Удаление старого приложения исправляет это, но я не могу разумно ожидать, что пользователи будут делать это (некоторые люди предпочитают хранить старые версии).
Я могу обнаружить эту ситуацию, сравнивая результат-[NSWorkspace URLForApplicationWithBundleIdentifier:]
с URL-адресом помощника в комплекте приложений, но необходимость попросить пользователя удалить другое приложение не очень элегантное решение.
Есть ли способ сделатьSMLoginItemSetEnabled
всегда использовать элемент входа из текущего комплекта приложений, а не какой-нибудь случайный в другом месте на диске?
Или что-то изменилось в последних версиях ОС для поддержки более элегантного механизма для помощников с пользовательским интерфейсом?
Я читал много других вопросов здесь и в других местах по этой теме, и кажется, что этот неуклюжий механизм все еще является лучшим решением, но, возможно, я что-то упустил.