我正在尝试让我的程序自动关联某些文件扩展名,但是我不确定如何在MacOSX中执行此操作。我不是问如何将程序与GUI中的文件扩展名相关联,我希望能够将它编程到我的程序中。
答案 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)
在此处查看CFBundleDocumentTypes Info.plist键的说明:
-K
答案 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)
这涉及通过py2app捆绑您的应用程序,将某些密钥添加到您的Info.plist文件并在您的应用程序中安装事件处理程序。