10.8 Изменения

Эта статья описывает изменения в AppleScript и связанных инструментах у Пумы OS X v10.8.

Улучшения

Редактор AppleScript

Редактор AppleScript приложение в OS X 10.8 включает много улучшений в обработку документов:

  • Автоматическое Сохранение: Изменения в документах автоматически сохраняются, включая в настоящее время не компилирующие изменения.

  • Версии: Предыдущие версии документа являются легко восстановимым использованием средств управления стандартной версией в строке заголовка документа.

  • Экспорт: Доступный из меню File, Экспорт … команда сохраняет копию приложения сценария или сценария для распределения. Экспорт … является теперь единственным способом сохранить сценарий как «дополнительно», снижая риск сохранения по доступному для редактирования оригиналу.

  • Идентификатор пакета: секция Содержания Пакета для приложений сценария теперь включает поле для установки идентификатора пакета. Редактор AppleScript заполнит значение по умолчанию, но рекомендуется настроить идентификатор для любого приложения сценария, предназначенного для распределения. Установка идентификатора пакета всегда рекомендовалась, но ранее потребовала, чтобы ручное редактирование файла Info.plist сделало так.

Исправления ошибок

AppleScript

Если один из элементов списка не будет конвертируем, принуждение списка к строке теперь перестанет работать. Предыдущие версии требовали бы успеха с только частичным результатом. [2300198]

div и mod теперь используйте стандартный IEEE 754 подпрограммы для вычислений их результатов. Это соответствует другие языки и остальную часть OS X. Предыдущие версии уклонились бы от результатов заставить определенные «неправильные» ответы выйти «право», но это представило погрешности и никогда не работало во всех случаях. Для получения дополнительной информации по проблеме, посмотрите то, Что Каждый Программист Должен Знать Об Арифметике С плавающей точкой Дэвидом Голдбергом. [2358365]

Стандартные дополнения

time to GMT теперь корректируется живой к сдвигам DST и изменениям в часовом поясе. [7676174]

open for access может теперь создать файл с наклонной чертой на ее имя. [10431973]

Примечания совместимости

При отправке команд в поигравшее в песочнице приложение, таких как TextEdit у Пумы OS X, параметры, относящиеся к файлам, должны иметь явный подобный файлу тип и не пустую строку, или целевое приложение не будет в состоянии получить доступ к файлу. Например, file "Macintosh HD:Users:me:sample.txt", POSIX file "/Users/me/sample.txt", или результат choose file все было бы приемлемо, но строка "/Users/me/sample.txt" не был бы.

Разработчик отмечает

Привратник и подписание апплетов

Пума OS X включает Привратника, защищающего пользователей от вредоносного программного обеспечения путем применения политики о том, что загруженному программному обеспечению позволяют выполнить. Привратник полагается на подписывание кода для проверки приложений: приложение со знаком, как гарантируют, будет создано подписывающим лицом и не будет изменено, так как оно было подписано. По умолчанию Привратник позволит запускать только приложения, подписанные App Store Mac или идентифицированным разработчиком. Если Вы пишете приложения сценария («апплеты») для распределения, то эта политика применяется к Вашим апплетам. Для подписания апплетов так, политика Привратника по умолчанию не блокирует их:

  1. Получите Разработчика сертификат ID. Для получения дополнительной информации см. Распределительные Приложения Вне App Store Mac в Руководстве по Распределению приложений.

  2. Сохраните копию своего апплета для распределения с помощью Экспорта … команда. (Примечание: Ваш апплет должен иметь уникальный идентификатор пакета, который можно установить в секции Содержания Пакета.)

  3. Запустите Терминал и измените рабочий каталог на пакет апплета. (Подсказка: перетащите апплет на Терминале, и это создаст новое окно терминала с набором каталога правильно.)

  4. Отметьте основной сценарий как только для чтения.

    chmod a-w ./Contents/Resources/Scripts/main.scpt

    Если Ваш апплет содержит другие сценарии, также отметьте их как только для чтения.

  5. Подпишите апплет с помощью идентификационных данных подписывания кода.

    codesign -s 'My Signing Identity' .

Игра в песочнице и рабочие сценарии

Игра в песочнице Вашего приложения может потребовать изменений в том, как это выполняет сценарии. Обычный метод в прошлом был NSAppleScript, но так как сценарии обычно полагаются на передающие события Apple, и профиль песочницы по умолчанию не позволяет отправлять события Apple в любое другое приложение, это часто не работает правильно когда в песочнице. Сценарии, выполненные из Вашего приложения, попадут в одну из трех категорий:

  • Самопредназначенные сценарии. Ваши сценарии только отправляют события в Ваше приложение и в никогда любое другое приложение. Продолжайте использовать NSAppleScript как прежде.

  • Встроенные сценарии. Ваши сценарии создаются как часть Вашего приложения и не изменятся после поставки. Продолжайте использовать NSAppleScript, но добавьте права для отправки событий к целевым приложениям.

  • Пользовательские сценарии. Ваши сценарии предоставляются конечным пользователем и могут использовать любое другое приложение. Использовать NSUserScriptTask. Сценарии должны быть сохранены в специальном расположении (использование NSApplicationScriptsDirectory определить где), и будет работать за пределами Вашей песочницы.

Sandboxing и Scriptability

Политика песочницы не ограничивает получение событий Apple, так в целом, код scriptability Вашего приложения не будет затронут путем игры в песочнице.

Определение сценариев Вашего приложения (sdef), однако, должен быть обновлен для добавления групп доступа: группы команд, классов, и т.д. что поигравший в песочнице клиент может запросить использовать с новым com.apple.security.scripting-targets право. Например, Почта определяет «составить» группу доступа, позволяющую создание и редактирование исходящего сообщения, но ничего иного. Это более безопасно, чем старое com.apple.security.temporary-exception.apple-events право, предоставляющее доступ ко всему интерфейсу сценариев. Посмотрите sdef(5) для подробных данных формата разметки.