Пользовательский значок для файла .pkg на Lion OSX

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

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

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

цель=pack.pkg

icon_filename=$(perl -e 'напечатать значок\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 и буду признателен за подробный ответ для чайников.


person Cyril    schedule 20.12.2011    source источник


Ответы (1)


Я, наконец, понял это, если кому-то это нужно, выкладываю здесь. Я использовал сценарий 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
person Cyril    schedule 24.01.2012
comment
Этот подход не работает в macOS 10.13.6. Я смог заставить его работать для Мохаве, добавив osascript в приложения «Настройки» / «Конфиденциальность» / «A11Y». - person gamma; 11.04.2019
comment
@gamma Скрипт у меня не работает в Мохаве. Вам пришлось изменить его вообще сверху? Мне отказывают в доступе от com.apple.Preview/com.apple.Preview.PasteboardItems - person spartygw; 16.05.2019
comment
Думаю, я оставил сценарий как есть. Но мне пришлось добавить команду osascript в Preferences/Privacy/A11Y Apps, если я правильно помню. - person gamma; 17.05.2019