Пользовательский значок для файла .pkg в Lion OSX - PullRequest
3 голосов
/ 20 декабря 2011

Я создал пакет с помощью PackageMaker и хочу изменить значок по умолчанию для файла .pkg. После некоторого поиска в Google утилита seticon отсюда http://sveinbjorn.org/osxutils_docs решила мою проблему для всех OSX-ов, кроме последнего Lion 10.7 (Kernel 11.0.0). Значок по умолчанию был заменен серым квадратом, нечувствительным к двойным щелчкам, похоже на нарушение связи файлов.

Дополнительные два дня поиска в Google дали мне некоторые знания о форке ресурсов, SetFile (1) и некоторых других полезных сотрудниках, таких как этот старый поток Изменение иконки пакета, созданного создателем пакета , но все равно не повезло.

Я пытаюсь сделать что-то вроде:

целевой = pack.pkg

icon_filename = "$ (perl -e 'print" Icon \ r "')"

коснитесь "$ target / .. namedfork / rsrc / $ icon_filename"

cp "Icon.icns" "$ target / .. namedfork / rsrc / $ icon_filename"

/ Разработчик / Инструменты / SetFile -a C "$ target"

и получение: build-Mac: pack.pkg / .. namedfork / не каталог.

Что я делаю не так? Кто-нибудь может подсказать разницу в ресурсном форке в Lion? Любое другое решение для сценариев?

Обратите внимание, я совершенно новичок в MAC и буду признателен за подробный ответ для чайников.

1 Ответ

2 голосов
/ 24 января 2012

Я наконец-то разобрался, если кому-то это понадобится, выложу сюда.Я использовал скрипт Apple:

set newIcon to (POSIX file "IconMac.icns") as alias
set theItem to (POSIX file "Installer.pkg") as alias

tell application "Preview"
activate
open newIcon
end tell
tell application "System Events"
tell process "Preview"
    keystroke "c" using command down
end tell
end tell
tell application "Preview" to quit

tell application "Finder"
set infoWindow to open information window of theItem
set infoWindowName to name of infoWindow
end tell

tell application "System Events"
tell application process "Finder"
    tell window infoWindowName
        keystroke tab
        delay 1
        keystroke "v" using command down
    end tell
end tell
end tell

tell application "Finder"
close infoWindow
end tell
...