Как сделать скрипт, который не спрашивает разрешения при каждом открытии

Я сделал сценарий Apple, который фотографирует людей с помощью PhotoBooth. Однако каждый раз, когда я его открываю, он запрашивает разрешение на использование PhotoBooth вместо мгновенной фотосъемки. Я уже установил [Безопасность и конфиденциальность > Конфиденциальность > Автоматизация > Разрешить скрипту использовать PhotoBooth], но он по-прежнему каждый раз предлагает мне разрешить PhotoBooth. Есть ли способ исправить это, ничего не загружая и не меняя сценарий? Спасибо!


person yuwe    schedule 12.10.2018    source источник
comment
как вы установили [Безопасность и конфиденциальность › Конфиденциальность › Автоматизация › Разрешить скрипту использовать PhotoBooth]? Я работаю в приложении, которое использует appleScript, но оно не работает в Мохаве. это не изолированное приложение, и я также добавил NSAppleEventsUsageDescription в файл .plist, но все же я не могу получить само всплывающее окно разрешения.   -  person Krishna Maru    schedule 01.05.2019


Ответы (1)


Ваш сценарий сохранен как апплет? В то время как 10.14 запоминает предыдущие разрешения, предоставленные пользователем, он будет повторно запрашивать каждый раз, когда сценарий изменяется. Традиционные апплеты AppleScript реализуют базовый механизм сохраняемости, который сохраняет текущее состояние переменных верхнего уровня сценария после выхода. Обсуждение здесь:

https://forum.latenightsw.com/t/mojave-and-applescript-applets/1563/13

Один быстрый трюк, чтобы избежать любого постоянного состояния:

script MyScript
    -- original code goes here…
end script

on run
    local tempScript
    copy MyScript to tempScript
    run tempScript
end run

Если вам нужно сохранять состояние (например, пользовательские настройки) между запусками, вам нужно либо подписать код апплета, либо использовать альтернативный механизм (например, NSUserDefaults через AppleScript-ObjC).

person foo    schedule 12.10.2018
comment
Большое спасибо! Сработала с первой попытки. Мне не нужны были какие-либо состояния сохранения, поэтому код работал с первой попытки :) - person yuwe; 14.10.2018