MacOSX - 与应用程序相关联的文件扩展名 - 编程方式

16

我正在尝试让我的程序自动将某些文件扩展名与它关联,但是我不确定如何在MacOSX中实现。我不是要问如何在GUI中将程序与文件扩展名相关联,而是想将其编程到我的程序中。


这个问题应该发布在我们的姊妹网站Stack Overflow上。它很快就会被迁移过去。 - quack quixote
4个回答

14

要将新的文件扩展名与应用程序注册,请使用以下默认命令。
将PUT_FILE_EXTENSION_HERE_WITHOUT_PERIOD替换为文件扩展名,例如txt。
将org.category.program替换为您的程序的com/org名称,例如com.apple.itunes。

$ defaults write com.apple.LaunchServices LSHandlers -array-add \
"<dict><key>LSHandlerContentTag</key>
<string>PUT_FILE_EXTENSION_HERE_WITHOUT_PERIOD</string><key>LSHandlerContentTagClass</key>
<string>public.filename-extension</string><key>LSHandlerRoleAll</key>
<string>org.category.program</string></dict>"

一旦您已将文件扩展名添加到启动服务中,必须重新启动启动服务守护程序,以便它会重新读取配置文件。

您可以运行下面的命令来重新启动启动服务,或者只需重新启动计算机。登录/注销也可能有效,但我没有尝试过。

$ /System/Library/Frameworks/CoreServices.framework/Versions/A/Framework/LaunchServices.framework/Versions/A/Support/lsregister -kill -domain local -domain system -domain user

7

2
坏链接。可能现在应该去这里:https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/20001431-101685 - Tom Bogle
虽然这个链接可能回答了问题,但最好在此处包含答案的基本部分并提供参考链接。如果链接页面更改,仅有链接的答案可能会变得无效。 - Donald Duck

2
如果您右键点击您的 .app 文件并选择“显示包内容”,那么将会有一个名为 Contents 的文件夹,在该文件夹中,将会有一个名为 info.plist 的文件和一个名为 Resources 的文件夹(如果其中任何一个不存在,请创建它们)。如果您想要将文件扩展名 .myfileextension 与您的程序关联,并且您希望具有该扩展名的文件拥有包含在名为 icon.icns 的文件中的图标,则将文件 icon.icns 复制到 Resources 文件夹中,并在 info.plist 文件中在 </dict> 标签之前添加以下代码:
<array>
    <dict>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>CFBundleTypeIconFile</key>
        <string>icon.icns</string>                    <!-- change this -->
        <key>CFBundleTypeExtensions</key>
        <array>
            <string>myfileextension</string>          <!-- change this -->
        </array>
        <key>CFBundleTypeName</key>
        <string>File extension description</string>   <!-- change this -->
        <key>LSHandlerRank</key>
        <string>Owner</string>
    </dict>
</array>

上述代码中标记为 <!-- change this --> 的行应根据您希望扩展具有的属性进行更改。将 icon.icns 更改为您放置在 Resources 文件夹中并且您希望文件扩展名拥有的图标名称,将 myfileextension 更改为您想要与程序关联的文件扩展名(不含点),将 File extension description 更改为您想要文件扩展名具有的描述(例如对于 .doc 文件,它将是“Microsoft Word 文档”)。
此外,您可以查看此处了解其他值的含义以及是否需要更改它们。那里还列出了其他您可能需要添加的值。

0

这篇文章是关于一个Python应用程序(将其打包为Mac应用程序)。它可能包含所需的信息,但似乎不能直接解决问题。 - Tom Bogle
上面接受的答案中提到的defaults命令可以正常工作,但是您需要在安装应用程序后调用此命令,而将应用程序链接到文件后缀时,就像在我的文章中描述的那样,每当您将应用程序复制到Mac时会自动处理。 但是,是的,我的文章还描述了更大的Python构建过程。 另一方面,对于您为macOS构建的任何应用程序,该过程都将是相同的。 - André Aulich

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接