Каталог общего доступа к сценариям приложения между приложением Mac и расширением + группа приложений - PullRequest
0 голосов
/ 29 сентября 2018

Я буду запускать предоставленные пользователем сценарии через приложение 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

Есть ли возможность совместно использовать папку «Сценарий приложений» между приложением и расширением, принадлежащим к одной группе приложений?

...