Подтвердить что ты не робот

Иконка для Mac OSX

Я компилирую пакет Mac OSX под названием MyBundle.bundle, который используется в качестве плагина для другого приложения. Я хочу, чтобы у пакета был уникальный значок, поэтому я установил файл Info.plist, чтобы сказать:

<key>CFBundleIconFile</key>
<string>MyIcon.icns</string>

и поместите файл MyIcon.icns в папку MyBundle.bundle/Contents/Resources пакета.

Это не работает, искатель показывает общий значок для пакета и игнорирует указанный файл MyIcon.icns. Если я изменил расширение пакета с .bundle на .app, значок сразу отобразится - так что я знаю, что Info.plist верен.

Я нашел работу, которая имитирует пользователя, делающего копию и вставку значка на комплекте:

Я добавляю значок в качестве ресурса типа "icns" и id -16455 в файл .rsrc для пакета.

I чем вызов

/Developer/Tools/SetFile -a BC MyBundle.bundle

Это работает, но на самом деле хромает. Начиная с Mac OS 10.8 SetFile выполняется навсегда.

Мой вопрос: есть ли прочь заставить Finder показать значок пакета без таких хаков?

BTW: есть вопрос по одному и тому же вопросу: Установить значок пакета non app mac os x; но единственный ответ там инструктирует о том, как создать значок, и не помогает с проблемой.

4b9b3361

Ответ 2

Это решение будет ассоциировать один и тот же значок для всего вашего .bundle. Я не уверен, что вам нужно (или вам нужен конкретный/другой значок для каждого вашего .bundle).

Если вы можете изменить набор приложений: вы можете определить тип документа для связи с приложением. Для этого вам нужно отредактировать пакет приложения:

  • поместите значок плагина в ресурсы приложения: TheOtherApp.app/Contents/Resources/MyIcon.icns
  • отредактируйте TheOtherApp.app/Contents/Info.plist и добавьте что-то вроде этого:

     <key>CFBundleDocumentTypes</key> 
     <array>
      <dict>
        <key>CFBundleTypeName</key>
        <string>TheOtherApp Plugin</string>
        <key>CFBundleTypeRole</key>
        <string>None</string>
        <key>CFBundleTypeIconFile</key>
        <string>FlexoDocument.icns</string>
        <key>CFBundleTypeExtensions</key>
        <array>
          <string>bundle</string>
        </array>
        <key>LSTypeIsPackage</key>
        <string>true</string>
      </dict>
    </array>
    

Дополнительная информация о CFBundleDocumentTypes на сайте developer.apple.com

Вам может потребоваться перезапустить искатель и/или приложение, чтобы увидеть эффект.

Ответ 3

Попробуйте без .icns в файле plist.info:

<key>CFBundleIconFile</key>
<string>MyIcon.icns</string>

измените его на:

<key>CFBundleIconFile</key>
<string>MyIcon</string>

Я с удовольствием создаю пакет с пользовательским значком здесь с помощью этой техники: https://gist.github.com/Noitidart/6a2cbe0b4c74499765be

Ответ 4

Простой способ: откройте файл с фотографией, выберите все копии, щелкните элемент, apple-i, чтобы получить информацию, щелкните по значку во всплывающем окне и apple-v.

Это так же просто, как и получается.