10.2 Изменения
Эта статья описывает изменения в AppleScript и связанных инструментах в Mac OS X v10.2 и его обновления.
Mac OS X v10.2 - AppleScript 1.9
AppleScript 1.9 включен с версией 10.2 Mac OS X и требует версии 10.2 Mac OS X или позже. Это содержит несколько новых функций и улучшений, и исправляет проблемы, найденные с AppleScript 1.8.3 и более ранними версиями.
AppleScript 1.9 может использовать сценарии, разработанные для любой версии AppleScript от 1,1 до 1.8.3, любое дополнение сценариев, создаваемое для AppleScript 1.5 или позже для Mac OS X и любого scriptable приложения для Mac OS 7.1 или позже.
Сценарий, создаваемый с AppleScript 1.9, может использоваться любой версией AppleScript назад к версии 1.1, если это не использует функции AppleScript, пишущий сценарий дополнений или scriptable приложений, которые недоступны в той версии.
Разработчик отмечает
В AppleScript 1.7 и ранее,
OSASetProperty()вызов часто перестал бы работать. Это было фиксировано. [2786611]Ссылки на объект формы <класс> <строка> были исторически отправлены в приложения как по имени объектные спецификаторы. В AppleScript 1.5 до 1.8.3, если <строка> был
typeUnicodeTextобъектный спецификатор был бы отправлен какformAbsolutePosition. В AppleScript 1.9 и позже, ссылки на объект с помощью строк Unicode всегда отправляются в использование приложенийformName. (Обратите внимание на то, что все другие скалярные типы, включаяtypeUTF8, отправляются какformAbsolutePosition). [2768306]Разработчики могут теперь определить приложение scriptability использование XML-описания, а не старого стиля
'aete'ресурсы или Какао.scriptSuiteи.scriptTerminologyфайлы plist. Это упрощает писать и редактировать терминологию приложения. Новый инструмент разработчика,/Developer/Tools/sdp, преобразовывает XML-файлы с.sdefрасширение в также.rфайлы (для приложений Углерода) или.scriptSuiteи.scriptTerminologyфайлы (для Какао). В будущем будет читать AppleScript.sdefфайлы непосредственно, делая это преобразование ненужным. См. страницы справочника дляsdpиsdefдля получения дополнительной информации. Некоторая выборка.sdefфайлы предоставляются в/Developer/Examples/Scripting Definitions. [2912639] [2913622]
Новые функции и улучшения
Стандартные дополнения
choose URLкогда выпадающее меню Файловых серверов выбрано, команда теперь выводит на экран SMB и серверы Samba. [2810506]mount volumeкоманда может теперь соединиться с любым файловым сервером, поддерживающимся Подключением Средства поиска К... команде, включая Windows (smb), Samba и Ftp-серверы. На некоторых видах серверов,as user nameиwith passwordпараметры могут не обойти диалоговое окно входа в систему, но кодирование имени и пароля в URL (например.smb://myname:passwd@server.domain.com/sharename) смонтирует его тихо. [2855789]sayкоманда поддерживает новый дополнительный параметр,saving to, который указывает файл, в котором можно сохранить разговорный текст. Если этот параметр будет предоставлен, то команда будет тиха и вместо этого создаст аудиофайл с данными разговорного текста. Для лучших результатов расширение файла этого файла должно быть.aiff, который сделает его применимым с iTunes и другими аудиоприложениями. [2898296]
Меню сценария
Меню Script Menu, дополнительное, который был доступен для скачивания от веб-страницы AppleScript, теперь включено с Mac OS X. Для активации меню Script откройтесь
AppleScriptпапка (вApplicationsпапка Вашего загрузочного диска), и дважды щелкают поScriptMenu.menuпапка. Меню Script появится на правой стороне строки меню во всех приложениях.Как Бегун Сценария в предыдущих версиях Mac OS X, меню Script позволяет Вам выполнить любой сценарий при использовании любого приложения. Это перечисляет все файлы, присутствующие в
ScriptsпапкаLibraryпапка и Вашего загрузочного диска и Вашего Корневого каталога. В отличие от Бегуна Сценария, меню Script выполнит оба сценария OSA (сохраненный Редактором сценариев) и сценарии UNIX (сценарии оболочки, perl сценарии, и т.д.).
Действия папки
Действия папки теперь поддерживаются в Mac OS X. Действия папки позволяют Вам присоединить сценарий к папке, и когда та папка открыта или закрыта в Средстве поиска, или файлы изменяются в нем, обработчик в том сценарии будет выполняться.
В Mac OS X Действия Папки обрабатываются приложением Системных событий, не отдельным расширением Действий Папки. Свойство в приложении Системных событий включает и выключает Действия Папки; когда они идут, Системные события добавляется к Вашему списку Элементов Входа в систему и запускает, когда Вы входите в систему. Если приложение Системных событий выйдет, действия папки не будут выполняться.
Действия присоединены и удалены из папок путем отправки команд в Системные события. Те же события, работающие с расширением Действий Папки на Mac OS 9, будут работать то же с приложением Системных событий в Mac OS X; кроме того, Системные события поддерживает объектную модель для управления действиями с папкой. См. словарь Системных событий для полного набора событий Folder Actions и классов.
События действия, отправляющиеся в сценарии действия, совпадают с в Mac OS 9. Терминология для этих событий может быть найдена в Стандартных Дополнениях, пишущих сценарий дополнения.
Существуют некоторые функциональные различия между Действиями Папки в Mac OS X от Mac OS 9 версий. В Mac OS X действия присваиваются папкам на основе в расчете на пользователя, таким образом, у различных пользователей той же машины могут быть различные наборы действий. Это означает, что действия, присоединенные к съемным или совместно используемым дискам, не вступят в силу, если то действие не было присвоено на Вашей определенной учетной записи пользователя. Это - предосторожность безопасности. Это также означает, что действия, присоединенные к папкам в Mac OS 9, не вступят в силу в Mac OS X, если они не были в частности присоединены для определенной учетной записи пользователя в X.
Применение идентификационных знаков папки работает по-другому в Mac OS X, чем в Mac OS 9. Когда действие присваивается папке, никакой значок не появляется в Mac OS X; папки, которым присоединили действия в Mac OS 9, будут иметь значок Действия Папки, но не выполнят их действия, если они не были присвоены тому пользователю.
Контекстное меню, присваивающееся, удаляет и редактирует Действия Папки в Mac OS 9, не присутствует в этой версии Mac OS X. Сценарии в качестве примера, чтобы присвоиться и удалить Действия Папки предоставляются в
/Library/Scripts/Folder Actionsкаталог, и может использоваться непосредственно из меню Script.Из-за изменений в Средстве поиска много сценариев Действия Папки от Mac OS 9 не работают в Mac OS X. [2865598]
Исправления ошибок
AppleScript
В AppleScript 1.8.2 и позже, определенные ошибки в обработчиках сценариев загрузились через
load scriptкоманда вызвала бы катастрофический отказ. В AppleScript 1.9 эти ошибки производят сообщения об ошибках вместо этого. [2891612]Операции, создающие большие объекты AppleScript (такие как списки с тысячами элементов) могут перестать работать при попытке вывести на экран объект (например, в окне Results или Log Редактора сценариев), хотя успешно выполняется сама работа. В AppleScript 1.8.3 и ранее это обычно отказывает; в AppleScript 1.9 это будет сигнализировать “из памяти” ошибка. [2897872]
AppleScript автоматически преобразовывает любое значение результата, возвращающееся как текст Unicode в формате UTF-8 в текст Unicode. Для преобразования строкового значения в формат UTF-8 используйте приведение
as «class utf8»[2936516]
Стандартные дополнения
do shell scriptкоманда в Стандартных Дополнениях 1.8.3 и ранее не могла обработать пути к файлам, содержавшие акцентируемые или неанглийские символы. Это было фиксировано. [2848082]В Стандартных Дополнениях 1.8.2 и позже,
display dialogкоманда не активирует текстовое поле по умолчанию, когда диалоговое окно выведено на экран, таким образом, пользователь должен щелкнуть в нем перед вводом. Это было фиксировано. [2915953]Со Стандартными Дополнениями 1.8.3 и ранее,
the clipboardкогда текст на Буфере обмена не имел информации о стилях, команда возвратила бы ошибочное значение. Если передано другим приложениям, которые ошибочное значение могло заставить те приложения разрушать. Это было фиксировано. [2811798]
Mac OS X v10.2.3 - AppleScript 1.9.1
AppleScript 1.9.1 включен с версией 10.2.3 Mac OS X и требует версии 10.2 Mac OS X или позже.
Разработчик отмечает
Новое
modeFlagбыл добавлен к OSA API:Когда это
modeFlagустановлен на вызове вOSACoerceToDesc(), получающийся дескриптор будет полностью определен, т.е. он будет иметь как его наиболее удаленный контейнер (самый внутренний 'от' объекта) дескриптор приложения. Исторически эта функция предполагает, что все объектные спецификаторы базированы в текущем приложении, которое является часто неправильным. [2879211]
Исправления ошибок
AppleScript
В AppleScript 1.0 до 1,9, приведения от строк до чисел (например.
"12" as integer) если бы строка содержала ведущие или запаздывающие пробельные символы (например, пространство, вкладка, возврат, перевод строки), перестал бы работать. Это было фиксировано. [2849044]В AppleScript 1.7,
paragraphэлемент строк был улучшен для распознавания стиля Mac, стиля UNIX и разрывов строки стиля Windows. Те же изменения не были, однако, внесены вUnicode textкласс. Это было сделано в AppleScript 1.9.1. [3013979]В AppleScript 1.6 до 1,9, добираясь a
paragraphилиtext itemиз пустого Unicode представляют сбои в виде строки с ошибкой. В AppleScript 1.9.1 пустая строка теперь возвращается как результат. [3044226]С AppleScript 1.7 до 1,9, некоторые редактирующие сценарий приложения не могут открыть свои собственные словари сценариев. Это было фиксировано. [2688067]
В AppleScript 1.9 длинные сценарии (приблизительно от 3 000 строк, в зависимости от сложности) вызвали бы из ошибки памяти, будучи выведенным на экран. Это было фиксировано. [3016146]
В AppleScript 1.0 до 1,9, длинный сценарий (больше, чем 32 767 символов) мог вызвать катастрофический отказ, будучи скомпилированным. Это было фиксировано. [2800857]
В AppleScript 1.0 до 1,9, ошибка выполнения, произошедшая около конца длинного сценария (больше, чем 28 671 символ) могла привести к многократным строкам, выделяемым в редакторе сценариев вместо просто строки, вызвавшей ошибку. Это было фиксировано. [1342368]
В AppleScript 1.9 и ранее, сравнивая две строки перестанет работать, если одна строка будет содержать больше чем 32 767 символов, даже если строки очевидно отличаются. Это было фиксировано. [2655090]
В AppleScript 1.9 и ранее, длина долгой литеральной строки (больше, чем 32 767 символов) считается своей модификацией фактической длины 32,768. Это было фиксировано. [2731384]
В AppleScript 1.6 до 1,9, компилируя сценарий мог бы заставить его излишне запускать приложение, упомянутое в a
tellблок того сценария. Это было фиксировано. [2838223]В AppleScript 1.9 и ранее, отменяя из диалога аутентификации EPPC может вызвать ошибки компиляции. Это было фиксировано. [3006076]
В AppleScript 1.8 до 1,9,
POSIX pathсвойство afileилиaliasобъект возвратился бы «//» для объекта загрузочного диска. В то время как не технически неправильный это было тревожащим для знакомых с UNIX и было фиксировано. [3006675]В AppleScript 1.6 до 1,9, записывая сценарий отказал бы в относительно редких случаях. Это было фиксировано. [3006033]
В AppleScript 1.9 и ранее, приложение AppleScript Studio отказало бы при определенных обстоятельствах. Это было фиксировано. [3024472]
Катастрофический отказ в AppleScript 1.6 и позже это произошло при использовании текста Unicode, был фиксирован в AppleScript 1.9.1. [3025031]
В AppleScript 1.0 до 1,9, выражение
end of {}вызвал катастрофический отказ. Это было фиксировано. [3014615]Выражение
get name of parentразрушил бы AppleScript 1.9 и ранее при определенных обстоятельствах. Это было фиксировано. [2865830]
Стандартные дополнения
Из-за изменений в Звуковом менеджере в Mac OS X, многократные звуковые сигналы, произведенные
beepкоманда в Стандартных Дополнениях 1.6 до 1,9 походила на один длинный звуковой сигнал. Это было фиксировано. [2812503]Когда
display dialogкоманда используется с тремя кнопками и значком, диалоговое окно теперь достаточно высоко для корректного отображения и значка и крайней левой кнопки. [3052663]В стандартных дополнениях 1.6 до 1,9,
mount volumeкоманда могла иногда отказывать, когда предоставленоuser nameи/илиpasswordпараметры. Это было фиксировано. [3025436]