Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos Mac OSX捆绑包的图标_Macos_Icons_Bundle_Finder - Fatal编程技术网

Macos Mac OSX捆绑包的图标

Macos Mac OSX捆绑包的图标,macos,icons,bundle,finder,Macos,Icons,Bundle,Finder,我编译了一个MacOSX包,名为MyBundle.bundle,它被用作另一个应用程序的插件。我希望捆绑包具有唯一的图标,因此我将Info.plist文件设置为: <key>CFBundleIconFile</key> <string>MyIcon.icns</string> 这是可行的,但真的很蹩脚。在Mac OS 10.8中启动SetFile需要永远执行 我的问题是:有没有办法强迫查找者在没有这些黑客的情况下显示捆绑包的图标 顺便说一句:有一

我编译了一个MacOSX包,名为MyBundle.bundle,它被用作另一个应用程序的插件。我希望捆绑包具有唯一的图标,因此我将Info.plist文件设置为:

<key>CFBundleIconFile</key>
<string>MyIcon.icns</string>
这是可行的,但真的很蹩脚。在Mac OS 10.8中启动SetFile需要永远执行

我的问题是:有没有办法强迫查找者在没有这些黑客的情况下显示捆绑包的图标


顺便说一句:有一个关于同一主题的问题:;但唯一的答案是如何创建图标,这对解决问题没有帮助

简易方法:打开一个图片文件,选择所有副本,单击该项目,apple-i获取信息,单击弹出窗口中的图标,然后单击apple-v


这很简单。

您可以使用NSWorkspace

[[NSWorkspace sharedWorkspace]设置图标:(NSImage*)文件的图像:(NSString*)完整路径选项:(NSWorkspace图标复制选项)选项]


此解决方案将为您的所有.bundle关联相同的图标。我不确定这是您需要的(或者您是否需要为每个.bundle指定一个特定/不同的图标)

如果可以修改应用程序包:可以定义与应用程序关联的文档类型。为此,您必须编辑应用程序包:

  • 将插件图标放在应用程序资源中:
    TheOtherApp.app/Contents/resources/MyIcon.icns
  • 编辑另一个app.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>
    
    CbundleDocumentTypes
    在developer.apple.com上


    您可能需要重新启动finder和/或应用程序以查看效果。

    请尝试在
    plist.info
    文件中不使用
    .icns
    部分:

    <key>CFBundleIconFile</key>
    <string>MyIcon.icns</string>
    
    cfbundleconfile
    MyIcon.icns
    
    将其更改为:

    <key>CFBundleIconFile</key>
    <string>MyIcon</string>
    
    cfbundleconfile
    麦肯
    

    我使用此技术成功地创建了一个带有自定义图标的捆绑包:

    您读过问题了吗?它说:我发现了一个模拟用户在捆绑包上复制和粘贴图标的变通方法,问题是:有没有办法强迫查找者在没有此类破解的情况下显示捆绑包的图标?我需要一种方法来为数百个捆绑包自动设置图标。这个解决方案需要编程一个实用程序来查找图像、加载图像并调用
    setIcon
    方法。我不确定它是否真的能工作,因为图标已经为包正确设置了。问题是查找器无法将其识别为set。这个代码能说服查找者显示图标吗?是的。它为文件夹设置图标,该文件夹是Finder识别的包。嗨@FruityGeek,我更改了我的包资源文件夹中的图标。它不会更新图标。所以我用它来强制更新,但是我使用了不在resources文件夹中的图像路径,这个函数确实立即进行了图像更新,但是它没有更改我的应用程序包中/Contents/resources/appicon.icns内的文件。即使我重新启动它,也会使用我设置的新图标,但我的旧图像仍保留在Resources文件夹中,这让我觉得除了简单的刷新之外,还有一些棘手的事情要做。你能分享一下你的想法吗。Thax是否有一个函数运行该jsutrefreshs@yairchu水果周,这段视频显示了我在图标改变后无法刷新的困境,我试图通过使用NSFileManager创建和删除文件来强制更新,但它不起作用,因此我找到了您的
    setIcon:forFile:options
    解决方案,但正如我之前的评论中所解释的那样,出现了一个有趣的难题。你可以发布一个捆绑目录的“ls-lR”吗?谢谢,但我确实需要每个目录都有一个特定的/不同的图标。bundleDown错误地投票了。请对答案做一些随机编辑,这样我就可以投票了。抱歉给你添麻烦了。
    <key>CFBundleIconFile</key>
    <string>MyIcon</string>