Я добавляю поддержку AppleScript в свое изолированное приложение Mac App Store. Я хотел бы, чтобы пользователь мог добавлять файлы в приложение через скрипт, используя команду, которую я написал, например:
add file at path "/path/to/some/file/on.disk"
Я указал параметр команды как тип file
, поэтому он передается моему приложению как NSURL
, и я могу видеть путь URL-адреса файла (po url.path
) в отладчике.
Это определение команды в файле sdef
:
<!-- Contained by a suite -->
<command name="add file at path" code="ABCDABCD">
<direct-parameter description="A file to add to the app" type="file" />
</command>
Когда я пытаюсь создать закладку с областью безопасности для этого файла, я получаю сообщение об ошибке:
Не удалось открыть () элемент
Мне нужно иметь возможность читать файл при последующих запусках приложения, поэтому я создаю закладку. Этот код создания закладок:
NSData *fileBookmark = [url bookmarkDataWithOptions:NSURLBookmarkCreationWithSecurityScope
includingResourceValuesForKeys:nil
relativeToURL:nil
error:&error];
Я попытался окружить код [url start(stop)AccessingSecurityScopedResource]
, но ничего не изменилось.
Обновить
Я также определил, что приложение не может прочитать содержимое файла или скопировать его в контейнер приложения. У приложения со сценарием нет доступа к файлу, кроме его пути.
Обновление 2
Я также попытался поместить скрипт в каталог ~/Application Scripts/bundleid
(NSApplicationScriptsDirectory
) и запустить его из NSUserScriptTask
внутри моего кода Cocoa, и это дало те же результаты (файл по URL-адресу по-прежнему не читается).