You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置macOS Swift应用使其出现在所有文件的「Open With」菜单?

如何让Swift macOS应用出现在所有文件的「Open With」右键菜单中

首先明确:通过配置UTI(Uniform Type Identifier)实现目标是可行的,你的当前配置存在几个需要调整的地方,同时需要处理系统缓存问题,以下是具体解决方案:

1. 修正Info.plist配置

public.item是涵盖所有文件、文件夹等项目的顶层UTI,但仅配置它还不够,需要补充相关参数确保系统识别:

替换你的现有配置为以下内容(注意替换YourDocumentClass为你实际的NSDocument子类):

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeName</key>
        <string>Any File</string>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>LSHandlerRank</key>
        <string>Alternate</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>public.item</string>
            <string>public.data</string>
        </array>
        <key>NSDocumentClass</key>
        <string>$(PRODUCT_MODULE_NAME).YourDocumentClass</string>
        <key>LSSupportsOpeningDocumentsInPlace</key>
        <true/>
    </dict>
</array>

关键调整说明:

  • LSHandlerRank设为Alternate:避免将应用设为所有文件的默认打开方式,仅作为可选选项出现在「Open With」菜单中,符合需求。
  • 添加public.data:覆盖所有文件数据类型,与public.item配合确保所有文件都能识别你的应用。
  • NSDocumentClass:必须指定正确的文档类(如果使用系统默认NSDocument,可写为$(PRODUCT_MODULE_NAME).NSDocument),否则系统会忽略该配置。
  • LSSupportsOpeningDocumentsInPlace:启用后允许应用直接打开原位置文件,是「Open With」菜单识别应用的关键标识。

2. 重置Launch Services缓存

系统的Launch Services缓存可能导致新配置不生效,执行以下命令重置缓存:

/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user

执行完成后,重启应用或系统。

3. 测试注意事项

  • 不要直接从Xcode启动测试:建议从Build文件夹的.app包右键选择「打开」,或归档导出应用后测试,避免Xcode调试环境干扰配置识别。
  • 查看完整菜单:右键文件时按住Option键,可显示完整的「Open With」列表,确认应用是否出现。

内容的提问来源于stack exchange,提问作者Stephan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 08:26:25