Я буду запускать предоставленные пользователем сценарии через приложение 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 для совместного доступа к пользовательским настройкам.
https://developer.apple.com/library/archive/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html
Есть ли возможность совместно использовать папку «Сценарий приложений» между приложением и расширением, принадлежащим к одной группе приложений?