Файл:
Я создал файл AppleScript .scpt в Script Debugger.app.
Вот как я назначил пользовательский значок этому файлу .scpt:
Я загрузил уникальную иконку (в формате "512px PNG") с IconArchive.com .
Я открыл .png файл с помощью Preview.app. В Preview я нажал Edit⟶ Copy, чтобы поместить это изображение в буфер обмена.
Я открыл Get Infoокно .scpt файла в Finder. Я щелкнул левой кнопкой мыши на значке по умолчанию, найденном в верхнем левом углу Get Infoокна. Затем вокруг значка по умолчанию появился синий контур, отражающий, что значок был выбран.
Наконец, я вставил пользовательский значок поверх значка по умолчанию с помощью сочетания клавиш ⌘ command+ V. Пользовательский значок был установлен сразу. Я закрылся из Get Infoокна.
Баг:
Когда я открываю файл .scpt в отладчике сценариев, редактирую код и затем сохраняю файл .scpt, пользовательский значок исчезает.
При сохранении следующий значок немедленно заменяет пользовательский значок:
(Это значок OS X по умолчанию для файлов .scpt.)
Конечно, необходимость проходить процедуру установки пользовательского значка каждый раз, когда я сохраняю (то есть редактирую) файл, является неудобством.
Но есть и вторая ошибка: каждый раз, когда я снова добавляю пользовательский значок в Get Infoокно, размер файла .scpt кумулятивно увеличивается. Другими словами, когда Script Debugger удаляет пользовательский значок файла, размер файла значка все равно включается как часть общего размера файла .scpt.
Показательный пример: размер файла .scpt на данный момент составляет 12,6 МБ. Файл не должен быть больше, чем .5 МБ.
Вопрос:
Я понимаю, как установить пользовательский значок файла для файла AppleScript .app , чтобы этот пользовательский значок оставался на месте после редактирования , но мне любопытно, можно ли сделать то же самое для файла .scpt.
Есть ли способ, чтобы мой собственный значок сценария оставался на месте, даже после изменения файла .scpt в Script Debugger?
Это файл .scpt, который запускается через раскрывающееся меню строки меню FastScripts.app. (Файл .scpt находится в /Users/Me/Library/Scripts
.) В раскрывающемся меню FastScripts на самом деле отображаются значки файлов сценариев , что является хорошей функцией. По этой причине я хочу установить пользовательский значок для файла .scpt (т. Е. Чтобы я мог наблюдать соответствующий значок в контекстном меню FastScripts).
Нет, нет ничего сложного в том, чтобы просто преобразовать файлы AppleScript .scpt, для которых я хочу иметь пользовательский значок файла, в файлы AppleScript .app. Я задаю этот вопрос, просто чтобы посмотреть, есть ли что-то, что я здесь упускаю или пропускаю
А как насчет редактора скриптов ?
Похоже, что эта ошибка является уникальной для Script Debugger .
Когда я выполняю те же действия в собственной программе редактирования AppleScript, Script Editor.app , значок файла .scpt остается неизменным при сохранении. Тем не менее, я мог бы поклясться, что на самом деле я столкнулся с этой проблемой в Редакторе сценариев в прошлом.
Например, я вспоминаю, что однажды Редактор сценариев отказался сохранить отредактированный файл .scpt; смутный диалог ошибок был представлен при сохранении. Чтобы успешно сохранить файл, мне пришлось либо удалить пользовательский значок из Get Infoокна Finder , либо скопировать текст кода и вставить его в новый файл .scpt (который, конечно, обязательно будет иметь значок файла по умолчанию .scpt).
Но в настоящее время я больше не могу воспроизвести ошибку в редакторе сценариев.
Во всяком случае, я стараюсь больше не использовать редактор сценариев для редактирования моих AppleScripts больше. Это происходит потому , что редактор сценариев является лагом , потенциально сбой при использовании библиотеки сценариев третьей стороны , и может быть темпераментным , когда дело доходит до открытия и сохранения файлов.
По моему опыту, до сих пор Script Debugger не имел ни одной из этих проблем.
Конечно, Script Debugger имеет хотя бы одну проблему (то есть проблему, подробно описанную в этом посте).
OS X El Capitan, версия 10.11.6.
источник
Ответы:
Вообще говоря, когда пользователь назначает пользовательский значок для файла, копируя и вставляя файл изображения в значок, в верхнем левом углу на листе получения информации о файле, файл изображения сохраняется как
com.apple.ResourceFork
расширенный атрибут файла, в котором он находится. применяется к терминалу, и его можно увидеть в терминале,ls -l@ filename.ext
который показывает, что файл имеет расширенные атрибуты . Чтобы манипулировать расширенными атрибутами , используйтеxattr
утилиту в терминале. Обратите внимание, что термин « файл изображения» в этом контакте - это любой действительный источник, скопированный в буфер обмена и вставленный в лист «Информация».Необходимость повторного применения файла значков после сохранения файла .scpt в отладчике сценариев приводит к тому, что
com.apple.ResourceFork
расширенный атрибут продолжает увеличиваться в размере, в то же время, возможно, теряя доступ к накопленным файлам значков, я не могу сказать наверняка, поскольку я не сделал достаточно тестирование. К сожалению, хотя редактор сценариев сохраняет файл пользовательских значков, тем не менее он, похоже, также увеличивает размерcom.apple.ResourceFork
расширенного атрибута .Чтобы уменьшить размер файла, удалив специально
com.apple.ResourceFork
расширенные атрибуты , используйте следующий синтаксис команды в Терминале:Затем повторно примените пользовательский значок к файлу.
Взгляните на справочную страницу для
xattr
терминала в терминале, набрав,xattr
а затем щелкните правой кнопкой мыши по ней, выбрав « Открыть справочную страницу» в контекстном меню.Вероятно, проблему со сбросом Script Debugger к значку по умолчанию придется решать разработчику, или использовать обходной путь, предложенный в ответе wch1zpink.
Поскольку
com.apple.ResourceFork
расширенный атрибут растет независимо от того, какое приложение вы используете, Script Editor или Script Debugger, это проблема, которую Apple должна решить.Я знаю, что вы используете OS X El Capitan 10.11.6, однако я протестировал это под macOS Sierra 10.12.5, и поведение, по-видимому, такое же, вероятно, не имеет значения, что я протестировал это в более позднем выпуске ОС. Я использовал Script Debugger 6.0.4.
Из-за повторяемости того, что вы делаете, решение с использованием сценариев позволяет уменьшить усилия, необходимые для поддержания небольшого размера файла, включая расширенные атрибуты , и настраиваемого значка.
Обновить:
Пройдя тем же путем, в OS X 10.8.5, с программной установкой значка файла и протестировав почти все решения, представленные в разделе Как я могу изменить значок файла или папки с помощью терминала , я решил использовать
setfileicon
из этого ответа : как это было сформулировано лучше всего для моих нужд в то время.Следующий код AppleScript является примером кода, который может программно удалить
com.apple.ResourceFork
расширенный атрибут целевого файла, чтобы уменьшить его накопительный размер и сбросить значок целевого файла. Он написан вокруг использования обходного пути, предложенного в ответе wch1zpink, ссылающегося на блокировку файла, чтобы сохранить иконку неповрежденной во время сохранения в Script Debugger.Основная цель этого примера кода - показать, как удалить
com.apple.ResourceFork
расширенный атрибут целевого файла и программно сбросить его пользовательский значок. Я добавил код, чтобы разблокировать / заблокировать целевой файл, если вы решите использовать этот метод, чтобы сохранить иконку без изменений между сохранениями, если нет, то ее можно удалить. Я думаю, это зависит только от того, как часто вы хотите сбросить размерcom.apple.ResourceFork
расширенного атрибута целевого файла .Примечания:
Для целей данного примера кода я поместил
setfileicon
утилиту командной строки и целевыеicon.icns
файлы в папку bin в корне моей домашней папки. Этотicon.icns
файл является файлом .icns того, который указан в вашем вопросе. Вы можете использовать файл PNG , однако я считаю, что файл .icns создает лучшее изображение.Сценарий может быть более жестким и не слишком подробным, однако я закодировал его таким образом по нескольким причинам, из которых я не буду вдаваться в подробности, если вам не понадобится его объяснение. Не стесняйтесь использовать пример кода для реализации рабочего решения по мере необходимости / необходимости в вашей среде.
Это было протестировано под macOS Sierra 10.12.5, однако оно также должно работать под OS X El Capitan 10.11.6.
источник
На самом деле есть решение. Я скачал файл .icns по указанной вами ссылке. Затем я перетащил весь файл .icns из окна Finder в изображение значка в окне «Информация» скрипта, который я создал в приложении Script Debugger. После того, как новый значок был установлен, я выбрал опцию «заблокировать файл» в окне «Информация».
После этого я снова открыл этот скрипт в приложении Script Debugger и внес несколько изменений в скрипт, перекомпилировал скрипт и заново сохранил его. Когда я попытался сохранить его снова, я получил это окно сообщения.
Я выбрал опцию «Сохранить Ayway» и БИНГО! Изменения были сохранены, но пользовательский значок остался без изменений.
Вот предположение, что, возможно, кто-то может схватить мяч и бежать с ним. Вместо того чтобы сохранять его как файл сценария в отладчике сценария, сохраните его как пакет сценариев (.scptd). После этого нажмите Ctrl + клик по этому файлу в Finder и выберите «Показать содержимое пакета». Добавьте ваш собственный файл .icns в папку «Ресурсы». Вы также заметите файл info.plist. Откройте файл info.plist в Xcode. Если вы нажмете кнопку «+» в строке списка свойств информации, вы сможете добавить файлы значков.
Это выходит за рамки моих знаний, но, возможно, каким-то образом здесь можно установить файл пользовательских значков.
источник
com.apple.ResourceFork
расширенный атрибут файла продолжает расти при каждом сохранении. Поэтому периодическиcom.apple.ResourceFork
расширенный атрибут необходимо будет удалять, а значок сбрасывать. Файл должен быть разблокирован, чтобы сделать это, так как даже использованиеsudo
не будет обходить блокировку.