10.4 Изменения
Эта статья описывает изменения в AppleScript и связанных инструментах в Mac OS X v10.4 и его обновления.
Mac OS X v10.4 - AppleScript 1.10
AppleScript 1.10 включен с версией 10.4 Mac OS X и требует версии 10.4 Mac OS X или позже. Это содержит много новых функций и улучшений, и исправляет проблемы, найденные с AppleScript 1.9.3 и более ранними версиями.
AppleScript 1.10 может использовать сценарии, разработанные для любой версии AppleScript от 1,1 до 1.9.3, любое дополнение сценариев, создаваемое для AppleScript 1.5 или позже для Mac OS X и любого scriptable приложения для Mac OS 7.1 или позже.
Сценарий, создаваемый с AppleScript 1.10, может использоваться любой версией AppleScript назад к версии 1.1, если это не использует функции AppleScript, пишущий сценарий дополнений или scriptable приложений, которые недоступны в той версии.
Специальные замечания
Сценарии, сравнивающие номера версий AppleScript с помощью сравнений строк, должны будут быть изменены для работы правильно с новым номером версии AppleScript. A
considering numeric stringsоператор должен быть добавлен перед сравнением строк так, чтобы строка «1.10» была больше, чем строка «1.9.3».Должны будут быть изменены сценарии, сравнивающие номера версий путем принуждения класса версии вещественного числа и затем выполнения числовых сравнений. Приведение от
versionкrealбыл изменен, чтобы позволить вторым и третьим частям номера версии быть 0.. 15 вместо 0.. 9. В результате версия 1.2.3 теперь принудит к вещественному числу 1.0203. Ранее, это принудило бы к вещественному числу 1.23.Сценарии, сравнивающие номера версий AppleScript, и которые должны работать на AppleScript 1.10, а также более ранних версиях AppleScript, должны сделать числовые сравнения с помощью номера версии Гештальта. Номер версии Гештальта может быть получен с помощью
system attribute "ascv"команда.Конкатенация строк теперь использует более богатые из этих двух операндов. Если любой операнд будет Unicode, то результатом будет Unicode.
path to meкоманда теперь возвращает корректный результат для скомпилированных сценариев, включая тех, которые выполняются с помощьюrun scriptкоманда.Начинаясь в версии 10.4 Mac OS X,
mount volumeесли сервер указан с помощью имени сервера AppleTalk, команда больше не может монтировать Mac OS 9 объемов сервера. Имя сервера TCP или IP-адрес должны использоваться вместо этого.Не использовать
sudo(8)сadministrator privilegesпараметрdo shell scriptкоманда. Вследствие ошибки, еслиsudoдумает, что этому нужен пароль, это будет запрашивать его на несуществующем терминале и ожидать навсегда ответа, заставляя сценарий зависнуть. Это может повредить существующие сценарии.do shell scriptкоманда теперь выполняет сценарий оболочки как seteuid-корень, не фактически корень. Это создает определенные различия; например, perl откажется принимать-eопции, когда seteuid-корень.Коды ошибки, возвращенные
do shell scriptкоманда изменилась.Если
with iconпараметр кdisplay dialogкоманда указывает значок, не существующий, об ошибке теперь сообщают. Ранее, ошибка была проигнорирована.Возвращаемое значение от
list disksкоманда является теперь списком строк Unicode. Ранее, это был список простых строк.Получение
countизparagraphsилиtext itemsиз пустой строки Unicode теперь возвращается 1 вместо 0.Строки, содержащие только плюс или знак «минус», больше не могут принуждаться к числу.
Неявно закодированные типы текстов,
typeText,typeCString, иtypePString, все осуждаются с AppleScript 1.9.2, так как они неспособны к представлению международных символов и могут быть даны иное толкование непредсказуемыми способами. Кроме того,typeCStringиtypePStringне поддерживайте полный спектр текстовых приведений, и будет удален полностью в будущем выпуске.typeStyledTextиtypeIntlText, в то время как у них есть явные кодировки, не рекомендуются, так как они неспособны к представлению символов только для Unicode как венгерский, арабский или тайский язык. Рекомендуемый тип текстаtypeUnicodeText.
Разработчик отмечает
Новый API Open Scripting Architecture (OSA) была добавлена, который позволяет Вам получить словарь сценариев приложения как sdef (см. ASDebugging.h и
sdef(5)). Если целевое приложение не имеет истины sdef, но действительно имеет'aete'или Сгенерированный какао словарь, это переведет это, таким образом, API будет работать над любым scriptable приложением. [3657719]OSAError OSACopyScriptingDefinition(const FSRef *ref, SInt32 modeFlags, CFDataRef *sdef);Описания параметра
refFSRef к файлу приложения или пакету.modeFlagsНет никаких флагов, в настоящее время определяемых; передача 0.sdefЕсли результатом является noErr, CFDataRef, содержащий sdef XML, который Вы ответственны за выпуск; иначе неопределенный.
Обсуждение
Для обеспечения sdef в приложении поместите sdef в папку Resources пакета и добавьте ключ
OSAScriptingDefinitionк Вашему Info.plist со значением имени sdef (например, MyApplication.sdef).Известные ошибки и ограничения
Динамическая генерация sdefs не поддерживается. sdefs в однофайловых приложениях не поддерживаются.
Катастрофический отказ, произошедший при вызове
OSAScriptError()сkOSAErrorAppселектор был фиксирован. [3547609]osascriptинструмент командной строки теперь передаетkOSAModeCompileIntoContextфлаг режима при компиляции текстового сценария. [3684436]osascriptинструмент командной строки может теперь вызвать сценарии, берущие параметры. Любые параметры после сценария будут переданы как список строк к прямому параметру обработчика выполнения. [3165225]
Новые функции и улучшения
AppleScript
Новый атрибут Рассмотрения/Игнорирования был добавлен что сравнения строк влияния.
numeric stringsатрибут указывает, что числовые подстроки должны быть сопоставлены их числовым значением. Например, “версия 1.9” является меньше, чем «версия 1.10». [3614412]Называют новую строковую константу
quoteбыл добавлен, чье значение"\"". [3618573]Конкатенация строк теперь использует более богатые из этих двух операндов. Если любой операнд будет Unicode, то результатом будет Unicode. [3375227]
dateкласс теперь имеетhours,minutes, иsecondsсвойства.hoursсвойство всегда использует 24-часовые часы. [3516702]monthсвойствоdateкласс может теперь быть установлен в целое число. [3525546]weekdayконстанты могут теперь быть принуждены к числам.Sunday1. [3639194]Приведение от
versionкrealбыл изменен, чтобы позволить вторым и третьим частям номера версии быть 0.. 15 вместо 0.. 9. В результате версия 1.2.3 теперь принудит к вещественному числу 1.0203. Ранее, это принудило бы к вещественному числу 1.23. [3621631]A
tell application "AppName"оператор может теперь использовать приложениеshort name(CFBundleName), если в настоящее время работает приложение. [3655554]Если приложение сценария (апплет) встретится с ошибкой, то кнопка Edit в ошибочном диалоговом окне теперь откроет апплет в редакторе сценариев по умолчанию. Редактор сценариев по умолчанию может быть установлен с помощью нового приложения Утилиты AppleScript. [3084519]
Если апплет будет иметь пользовательскую экранную заставку, то экранная заставка будет теперь выведена на экран, когда пользователь выберет пункт меню «About appletName». Ранее, универсальный апплет О Поле был выведен на экран. [3537429]
Если связанному апплету сохранили пользовательскую экранную заставку в
Contents/Resources/description.rtfd/TXT.rtf, та экранная заставка будет выведена на экран вместо экранной заставки, сохраненной в пакете'TEXT'и'styl'ресурсы. Обратите внимание на то, что нетекстовые экранные заставки в настоящее время не поддерживаются. [3545405]Связанные апплеты теперь выводят на экран локализованные меню и диалоговые окна. [3847125] [3933933]
Диалоговые окна экранной заставки апплета и ошибочные диалоговые окна теперь соответствуют Инструкциям по Интерфейсу пользователя Воды. [3545405] [3535392]
Апплет О Поле был обновлен. [2632525]
Стандартные дополнения
with promptиwith titleпараметры кchoose applicationкоманда теперь поддерживает текст Unicode. [3526680]choose applicationдиалоговое окно теперь помнит ширину столбцов. [2680232]choose fileиchoose folderкоманды теперь имеют ashowing package contentsпараметр, указывающий, должны ли пакеты быть обработаны как папки. Значение по умолчанию является ложью. [3616391]of typeпараметр кchoose fileкоманда теперь принимает или список типов файлов или список идентификаторов типов. [3226364]choose from listкоманда теперь имеет awith titleпараметр, указывающий заголовок диалогового окна. По умолчанию диалоговое окно не имеет заголовка. [3722157]choose from listкоманда теперь поддерживает текст Unicode. [3318667]choose from listкоманда теперь поддерживает долгие подсказки и многострочные подсказки. [2641867]choose from listдиалоговое окно теперь позволяет текстовому элементу быть выбранным путем ввода первых нескольких символов его имени. [3497349]choose from listдиалоговое окно теперь поддерживает полный доступ клавиатуры. [2748218]Новое
choose remote applicationкоманда была добавлена, который позволяет пользователю выбрать запущенное приложение на удаленной машине или на локальной машине. [2763939]choose URLкоманда теперь поддерживает файловые серверы CIFS. [3444824]Новое
display alertкоманда была добавлена, который выводит на экран стандартное предупредительное диалоговое окно, соответствующее Инструкциям по Интерфейсу пользователя Воды. [3580135] Обратите внимание на то, что стандартные предупредительные диалоговые окна имеют следующие ограничения:Кнопка по умолчанию требуется. Самая правая кнопка будет кнопкой по умолчанию, если пользователь не укажет иначе использование
default buttonпараметр.Кнопка отмены не может совпасть с кнопкой по умолчанию.
display dialogкоманда теперь имеет acancel buttonпараметр, указывающий имя или число кнопки отмены. [3422345]display dialogкоманда теперь имеет ahidden answerпараметр, указывающий, должен ли доступный для редактирования текст быть выведен на экран как маркеры. Значение по умолчанию является ложью. [1622240]display dialogкоманда теперь имеет awith titleпараметр, указывающий заголовок диалогового окна. По умолчанию диалоговое окно не имеет заголовка. [3601825]default answerпараметр кdisplay dialogкоманда теперь поддерживает текст Unicode и переводы строки. [3332444] [3316708]with iconпараметр кdisplay dialogкоманда теперь принимает псевдоним или ссылку на файл на a.icnsфайл. [3437405]display dialogдиалоговое окно теперь поддерживает полный доступ клавиатуры. [3272416]display dialogдиалоговое окно теперь использует значки Aqua дляnote,caution, иstop. [3437405]display dialogдиалоговое окно теперь соответствует Инструкциям по Интерфейсу пользователя Воды. [3438825]do shell scriptкоманда теперь выводит на экран диалог аутентификации Mac OS X для получения прав администратора. [3004723]do shell scriptкоманда теперь имеет auser nameпараметр, указывающий учетную запись администратора. Этот параметр может использоваться вместе сpasswordпараметр иadministrator privilegesпараметр для выполнения команд как администратор, не выводя на экран диалог аутентификации. [3004723]info forкоманда теперь имеет asizeпараметр, указывающий, должен ли быть возвращен размер элемента. Значение по умолчанию является истиной. [3566020]info forкоманда теперь возвращаетсяtype identifierдля файлов. [3226360]info forкоманда теперь возвращаетсяshort name(CFBundleName) для приложений. [3655608]info forкоманда теперь возвращаетсяbusy statusдля пакетов. Если пакет отмечен как неполный (kExtendedFlagObjectIsBusy), состояние занятости установлено в истину. [3675978]info forкоманда теперь устанавливаетbusy statusдля несвязанных файлов к истине, если или файл отмечен как открытый (kioFlAttribFileOpenBit) или файл, отмечен как неполный (kExtendedFlagObjectIsBusy). [3976012]list disksкоманда теперь поддерживает дисковые имена, содержащие символы Unicode. Возвращаемое значение отlist disksкоманда является теперь списком строк Unicode. Ранее, это был список простых строк. [3513241]Новое
localized stringкоманда была добавлена, который возвращает локализованную строку для указанного ключа. [2857256]path toкоманда теперь имеет папку, постоянную для Automatorworkflows folder. [3748836]path to meкоманда теперь возвращает корректный результат для скомпилированных сценариев, включая тех, которые выполняются с помощьюrun scriptкоманда. [3634573]Новое
path to resourceкоманда была добавлена, который возвращает псевдоним указанному ресурсу. [3177652]sayкоманда теперь принимает текст Unicode и числа как прямой параметр и какdisplayingпараметр. [3380562]Новое
system infoкоманда была добавлена, который возвращает рекордное, содержащее информацию о системе. [3611016]
Исправления ошибок
AppleScript
Строки, содержащие только плюс или знак «минус», больше не могут принуждаться к числу. [2604425] [3759051]
Классы числового значения, класс перечисляемого значения (
typeEnumerated), и тип оценивает класс (typeType) может теперь быть принужден к и из текста Unicode и стилизованного текста. [3333079]Тип Модуля оценивает классы (например,
miles,gallons) может теперь быть принужден к и из текста Unicode. [3567987]Класс версии (
typeVersion) может теперь быть принужден к тексту Unicode. [3333229]Простой текст (
typeText) может теперь быть принужден к стилизованному тексту (typeStyledText). [3333079]Приведение от
typeFileURLвозразить спецификатору было добавлено. [3244564]Принуждение спецификации файла (
typeFSS) к объектному спецификатору теперь работает правильно на имена файлов, которые более длительны, чем 31 символ. [3078972]Если псевдоним не мог бы быть разрешен, принуждение псевдонима к объектному спецификатору отказало бы при определенных обстоятельствах. Это было фиксировано. [3556365]
Расстояние и преобразования веса теперь более точны. [3627006]
"file://localhost" as URLбольше не вызывает катастрофический отказ. [3580636]Получение первого слова пустой строки Unicode больше не вызывает катастрофический отказ. [3619870]
Получение произвольного элемента текстового использования Unicode
some(например,some word of theUnicodeText) теперь приводит к более случайным результатам. [3479349]Получение
countиз несуществующего элемента текста Unicode (например,count files of theUnicodeText) теперь возвраты 0. Ранее, это возвратило число символов. [3735260]Получение
countизparagraphsилиtext itemsиз пустой строки Unicode теперь возвращается 1 вместо 0. [3978194]Была решена проблема, заставившая некоторые стилизованные текстовые сравнения перестать работать, когда основной язык был установлен в японский язык. [3528969]
tell application "AppName"будет теперь искать приложение Mac OS X по имени AppName.app перед поиском Классического приложения под названием AppName. Ранее, Классическое приложение было сочтено первым. [2868512]Долгие имена приложений больше не являются усеченными, когда используется в a
tellоператор. [2854838] [3736065]Долгие имена приложений больше не являются усеченными в, “Где xxx?” диалоговое окно. [3874872]
Длинный объем/папка/имена файлов больше не вызывает ошибки. [3625871]
Получение
POSIX pathиз строки пути, которая уже является POSIX теперь, возвращает корректные результаты. [3405197]Приложения Какао Scriptable, содержащие ресурсы Менеджера ресурсов, но не содержащие
'aete'ресурс, теперь распознаны как scriptable. [3553719]Если a
with timeoutоператор указывает тайм-аут больше чем 8 947 848 секунд, тайм-аут будет установлен в 8 947 848 секунд. Ранее, об ошибке сообщили. [3570429]Была решена проблема компиляции, заставившая последний знак улучшенного приложения спецификация URL быть удаленным. [3577364]
Когда основной язык будет установлен в японский язык, символы наклонной черты влево и символы знака Яня теперь скомпилируют правильно. [3765766]
'¬','÷','≠','≤', и'≥'когда основной язык будет установлен в японский язык, корейский язык или китайский язык, символы теперь скомпилируют правильно. [3427926] [3758459] [3828128]Связанные апплеты создаваемое использование AppleScript 1.9.x всегда, кажется, называют «апплетом», когда предназначено от удаленной машины. Это было фиксировано для связанных апплетов, создаваемых с AppleScript 1.10 и позже. [3625938]
Связанные апплеты создаваемое использование AppleScript 1.9.x ошибочно выводят на экран Открытое во флажке Classic Environment в окне Finder's Get Info. Это было фиксировано для связанных апплетов, создаваемых с AppleScript 1.10 и позже. [3560457]
Размер внутренней таблицы символов был увеличен, который позволяет большим сценариям быть скомпилированными. [3465382]
Размер внутреннего стека этапа выполнения был увеличен, который позволяет большим статическим спискам создаваться. [3612848]
Форматирование по умолчанию теперь локализуемо. [3381966]
Ссылки, форматирующие категорию, больше не используются. [3394917]
Деление 0 в a
tryблок в arepeatблокируйте больше не вызывает подвешивание. [3735291]Были фиксированы катастрофические отказы, которые произошли бы при определенных обстоятельствах после сборки «мусора». [3410634] [3783112]
Утечки памяти были фиксированы. [3400572] [3542919]
Были решены несколько проблем сообщения об ошибке. [3537493] [2361457] [3481518] [3382032] [3753807] [3756205] [3775760]
Стандартные дополнения
choose application,choose from list,choose URL, иdisplay dialogкоманды больше не будут представлять диалоговые окна на удаленных машинах. [3342807]choose applicationкоманда больше не пропускает память. [3505723]В версии 10.3.x Mac OS X,
choose applicationдиалоговое окно не является быстро реагирующим к щелчкам мышью в предметной области, когда неактивный. Это было фиксировано. [3467405]of typeпараметр кchoose fileкоманда теперь работает правильно на пакеты, не содержащие файл PkgInfo (например, пишущий сценарий дополнений). [3742878]choose file of type {"MooV"}теперь работы как ожидалось. Ранее, это позволило пользователю выбирать любой файл, который мог открыть QuickTime. [3595938]choose file nameдиалоговое окно теперь распознает пакеты. [4003078]display dialogкоманда больше не будет создавать диалоговое окно, которое слишком высоко для экрана, когда дали очень длинная строка для отображения. [3464996]display dialogкогда апплет работает на японско-основной системе, команда теперь выводит на экран японский текст правильно. [2812677]do shell scriptкоманда теперь работает правильно с многократными командами когдаadministrator privilegesпараметр указан. [3466509]Когда
administrator privilegesпараметр указан кdo shell scriptкоманда, 5-минутная метка времени аутентификации теперь применяется только к текущему сценарию. [3004723]do shell scriptесли пользователь отменяет диалог аутентификации, команда теперь возвращает корректный код ошибки (-128). [3446874]info forкоманда теперь возвращает корректноеfile typeиfile creatorдля пакетов, не содержащих файл PkgInfo (например, пишущий сценарий дополнений). [3153056]read before <delimiter> as dateбольше не вызывает ошибку. [3383413]run scriptесли прямой параметр не указан, команда больше не вызывает ошибку переполнения стека. [3514354]usingпараметр кsayкогда Распознавание речи включено, команда теперь работает правильно. [3055088]usingпараметр кsayесли указанная речь не капитализируется правильно, команда больше не вызывает ошибку. [2361457]the clipboard as Unicode textтеперь работы правильно, когда буфер обмена содержит разработанный текст, но никакой текст Unicode. [3668725]Проверка ошибок и создание отчетов были улучшены. [3523658] [3522599] [2361457] [3413730] [3446766]
Были фиксированы несколько ошибок в Стандартном Дополнительном словаре. [3512009] [3431746] [3632368] [3608653] [3505597]
Mac OS X v10.4.2 - Стандартные Дополнения 1.10.1
Стандартные Дополнения 1.10.1 включены с версией 10.4.2 Mac OS X и требуют версии 10.4 Mac OS X или позже. Это содержит изменения в do shell script команда. Обратите внимание на то, что только Стандартные Дополнения изменились в этом выпуске, время выполнения AppleScript не изменилось, и его номер версии остается 1.10.
Исправления ошибок
Стандартные дополнения
do shell script ... with administrator privilegesтеперь наборы и реальные и эффективные идентификаторы пользователей сценария к 0. Это соответствует поведение в версии 10.3.x Mac OS X и исправляет много проблем разрешения в версиях 10.4.0 и 10.4.1. [4126949] Mac OS XИспользуя
sudo(8)сadministrator privilegesпараметрdo shell scriptкоманда больше не будет заставлять сценарий зависать. В целом, добавлениеsudoкwith administrator privilegesизбыточно, но некоторые сценарии полагаются на него. [4126949]
Mac OS X v10.4.3 - AppleScript 1.10.3
AppleScript 1.10.3 включен с версией 10.4.3 Mac OS X и требует версии 10.4 Mac OS X или позже.
Разработчик отмечает
OSAGetPropertyNames()иOSAGetHandlerNames()Когда объект сценария содержит родительское объявление свойства, APIs теперь возвращает все свойства и обработчики объекта сценария. Ранее они только возвратили бы свойства и обработчики, объявленные перед родительским свойством. [4179456]AppleScript 1.10.3 теперь уважает нормальные правила при попытке выбрать терминологию от хост-приложения: это загружается
'aete'ресурс, если Вы присутствуете или отправляете событие, если приложение отмечено как наличие динамической терминологии. Ранее, это всегда отправляло бы событие. Это только влияет на scriptable приложения, выполняющие сценарии в их собственном процессе. [4250843]
Исправления ошибок
AppleScript
delayкоманда теперь приводит к большему количеству времени другим процессам. [4179466]
Стандартные дополнения
do shell script...with administrator privilegesбольше не замедляется, когда вызвано несколько раз в том же сценарии. [4179474]get volume settingsкоманда теперь возвращает корректноеoutput volumeкогда баланс установлен направо от центра. [4242153]Производительность
system infoкоманда была улучшена. [4182950]
Mac OS X v10.4.6 - AppleScript 1.10.6
AppleScript 1.10.6 включен с версией 10.4.6 Mac OS X и требует версии 10.4 Mac OS X или позже.
Исправления ошибок
AppleScript
Изменения в
propertyкогда сценарий выполняется из меню Script, значения теперь сохраняются. Если сценарий возвратил результат, в предыдущих версиях AppleScript были только сохранены значения свойств. [4400567]Проблема, вызвавшая
path to,path to it, иpath to application "AppName"команды для возврата неправильного результата в определенных ситуациях были фиксированы. [4400329]Проблема компиляции, вызвавшая
afterссылочная форма, которая будет преобразована вbeforeна основанном на Intel Macs был фиксирован. [4460185]Были фиксированы катастрофические отказы, инициированные различными виджетами Инструментальной панели и приложениями в определенных ситуациях. [4400300] [4400304] [4400306] [4400309] [4400557]
Утечка памяти была фиксирована. [4400420]
Стандартные дополнения
Проблема, которая могла вызвать
choose applicationдиалоговое окно, чтобы быть невидимым было фиксировано. [4400378]Проблема, которая могла вызвать
choose remote applicationбыть неспособным найти приложения на удаленных машинах, использующих Добрый день, было фиксировано. [4400386]
Mac OS X v10.4.7 - AppleScript 1.10.7
AppleScript 1.10.7 включен с версией 10.4.7 Mac OS X и требует версии 10.4 Mac OS X или позже.
Исправления ошибок
AppleScript
Выход из связанного апплета только для чтения больше не заставляет ошибку сообщаться. [4505459]
Скомпилированные сценарии, содержащие даты теперь, декомпилируются и работают правильно, когда передано от основанного на PowerPC Macs до основанного на Intel Macs (и наоборот). [4525261]
delayкоманды иon idleобработчики больше не конфликтуют. [4508927]Конкатенация пустой записи больше не вызывает катастрофический отказ. [4510216]
Был фиксирован катастрофический отказ, который мог произойти при определенных обстоятельствах при копировании больших вложенных объектов сценария. [4510228]
Утечка памяти была фиксирована. [4505510]
Стандартные дополнения
Указание типа данных
"TEXT"для areadилиwriteкоманда (например,read fileRef as "TEXT") больше не вызывает ошибку на основанном на Intel Macs. [4508534]