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

时间:2010-06-03 21:31:32

标签: macos file file-association

我正在尝试让我的程序自动关联某些文件扩展名,但是我不确定如何在MacOSX中执行此操作。我不是问如何将程序与GUI中的文件扩展名相关联,我希望能够将它编程到我的程序中。

4 个答案:

答案 0 :(得分:11)

要使用应用程序注册新的文件扩展名,请使用以下默认命令 将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

答案 1 :(得分:7)

答案 2 :(得分:2)

如果右键单击您的.app文件并选择“显示软件包内容”,将有一个名为Contents的文件夹,并且在该文件夹中将有一个名为info.plist的文件和一个名为Resources的文件夹(如果其中不存在,请创建它们)。如果要将文件扩展名.myfileextension与程序相关联,并且希望将具有该扩展名的文件的图标包含在名为icon.icns的文件中,请将文件icon.icns复制到{{ 1}}文件夹,并将以下代码添加到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应该更改为您想要文件扩展名的描述(例如,对于.doc文件,它将是“ Microsoft Word文档”)。

此外,您可以检查here来查看其他值的含义以及是否需要更改它们。如果需要,您还可以在其中列出其他值。

答案 3 :(得分:0)

我在https://moosystems.com/articles/8-double-click-on-files-in-finder-to-open-them-in-your-python-and-tk-application.html详细描述了整个事情。

这涉及通过py2app捆绑您的应用程序,将某些密钥添加到您的Info.plist文件并在您的应用程序中安装事件处理程序。