Каталог общего доступа к сценариям приложения между приложением Mac и расширением + группа приложений
Я буду запускать предоставленные пользователем сценарии через приложение Mac и расширение приложения. Приложение и расширение принадлежат к одной группе приложений и по отдельности имеют правильные права для запуска сценариев.
Приложение для Mac находится в песочнице. Согласно Apple, любые сценарии должны находиться в каталоге Applications Scripts: . applicationScriptsDirectory
/ NSApplicationScriptsDirectory
,
Класс NSUserAppleScriptTask предназначен для запуска сценариев AppleScript из вашего приложения. Он предназначен для выполнения пользовательских сценариев и будет выполнять их вне изолированной программной среды приложения, если таковые имеются.
Если приложение находится в "песочнице", сценарий должен находиться в
NSApplicationScriptsDirectory
папка. Приложение из песочницы может читать, но не записывать в эту папку.https://developer.apple.com/documentation/foundation/nsuserapplescripttask
Проблема, с которой я сталкиваюсь, заключается в том, что Основное приложение и Расширение приложения разрешают различные NSApplicationScriptsDirectories:
let applicationScripts = try! FileManager.default.url(for: .applicationScriptsDirectory, in: .userDomainMask, appropriateFor: nil, create: true)
Разные каталоги:
- ~/Library/Application Scripts/com.company.MainApp
- ~/Library/Application Scripts/com.company.MainAppFinderSync
Я хочу запускать одинаковые сценарии как из приложения, так и из расширения. Он работает для запуска сценариев из собственного каталога Application Scripts каждого компонента, но сценарии не запускаются, если они находятся в каталоге другого компонента.
Не идеально поддерживать синхронизированную структуру каталогов с соответствующими сценариями в обоих местах. Также сложно убедить пользователя разместить сценарии в правильном месте, поскольку руководство по настройкам основного приложения не может открыть каталог сценариев расширения.
Группы приложений решают эту проблему для других общих сценариев приложений / расширений, таких как совместное использование данных через NSUserDefaults:
После включения групп приложений расширение приложения и содержащее его приложение могут использовать API NSUserDefaults для совместного доступа к пользовательским настройкам.
Есть ли возможность совместно использовать папку "Сценарий приложений" между приложением и расширением, которые принадлежат к одной группе приложений?