Требуются ли права для appA для выполнения AppleScript, который запускает appB?

У нас есть два подписанных приложения для Mac OS X (которые мы разработали - приложения не из магазина приложений). appA запускает Applescript (из файла .scpt), который отправляет appB сообщение для запуска и поиска некоторого текста.

Это отлично работает в OS X 10.6.

В OS X 10.7 и 10.8 у меня другое поведение: когда appA запускает Applescript, appB НЕ ЗАПУСКАЕТСЯ. Однако, если appB УЖЕ ЗАПУСКАЕТСЯ, то сообщение appA ПОЛУЧАЕТСЯ appB, и запрошенный поиск обрабатывается.

Это похоже на проблему с песочницей: когда мы отправили эту команду в Терминал:

sudo spctl --master-disable

… И перезапустите, также нет проблем с запуском AppB AppB на 10.8. В версии 10.7 appB по-прежнему не запускается.

Нужны ли нам ВРЕМЕННЫЕ РАЗРЕШЕНИЯ, чтобы иметь возможность выполнять сценарий AppleScript (или отправлять AppleEvents) в другое приложение? Оба приложения подписаны вручную с использованием кода. Получены ли эти права от Developer Relations и применяются ли они с кодом?

appA получает AppleScript и выполняет его с помощью следующих функций:

OpenDefaultComponent(), OSALoad(), AEBuildAppleEvent(), OSAExecuteEvent()

Выполняемый AppleScript:

on lookup(search_phrase)

tell application "appB"
activate
lookup (search_phrase)
end tell
end lookup

property ASDScriptUniqueIdentifier : "Lookup.scpt"

person SMGreenfield    schedule 18.04.2013    source источник
comment
Вы не говорите, изолированы ли ваши приложения. Если они не изолированы в песочнице, проблема не в правах. Я бы начал с поиска ошибок, о которых сообщается (а) в вашем коде, который выполняет сценарий AppleScript, и (б) в системной консоли. Я предполагаю, что код AppleScript не может найти appB. Вы можете попробовать использовать идентификаторы пакетов вместо имен приложений в инструкции tell, чтобы сделать поиск приложений более надежным.   -  person Mark Alldritt    schedule 19.04.2013
comment
@MarkAlldritt - попробую, но он все еще не объясняет, почему он не работает на 10.7 и 10.8 - или почему отключение привратника полностью решает проблему на 10.8.   -  person SMGreenfield    schedule 19.04.2013
comment
@MarkAlldritt - редактирование приложения Tell в appB для изменения его идентификатора пакета (com.writebros.appB) заставляет редактор AppleScript запрашивать разрешение идентификатора пакета, когда я иду для сохранения изменений. Я заметил, что еще одна проблема заключается в том, что в 10.8 после запуска appB он сразу исчезает (скрывается). Однако, если я сделаю ВТОРОЙ активацию (после поиска), тогда appB БУДЕТ перенесен вперед.   -  person SMGreenfield    schedule 19.04.2013


Ответы (1)


Я не знаю об этом, но вы можете, если appB является Applescript (на самом деле скриптом, а не приложением).

Тогда вы можете использовать (в AppA):

set AppB to load script alias "path:to:app:B"
set scriptResult to AppB's theaction() --Change theaction to your needs

Таким образом, вы загрузите appB в appA, заставив appA фактически выполнить действие.

person Isaiah    schedule 22.04.2013
comment
appA и appB являются исполняемыми приложениями Carbon Mach-O. - person SMGreenfield; 22.04.2013