如何在Mac OS X中为特定文件类型设置默认应用程序?

时间:2012-02-07 07:02:03

标签: objective-c macos filesystems applescript

在Mac OSX Lion中,我正在尝试为特定文件类型设置默认应用程序。 使用下面的Apple脚本,我们可以为特定的“file.abc”设置默认应用程序。

tell application "System Events"
set default application of file "/Users/test/Desktop/file.abc" to "/Applications/TextEdit.app"
end tell

但我想为所有文件类型或扩展名为“abc”的文件设置相同的默认应用程序。

我已尝试以下方法来完成它。它在<HOME>/Library/Preferences/com.apple.LaunchServices.plist中添加了一个条目。但是文件不会使用指定的应用程序打开。

defaults write com.apple.LaunchServices LSHandlers -array-add "<dict><key>LSHandlerContentTag</key><string>abc</string><key>LSHandlerContentTagClass</key><string>public.abc</string><key>LSHandlerRoleAll</key><string>com.apple.textedit</string></dict>"

希望有人知道我失去了什么才能实现它。


发现答案:

defaults write com.apple.LaunchServices LSHandlers -array-add "<dict><key>LSHandlerContentTag</key><string>ugurugu</string><key>LSHandlerContentTagClass</key><string>public.filename-extension</string><key>LSHandlerRoleAll</key<string>org.videolan.vlc</string></dict>"
/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -kill -r -domain local -domain system -domain user

3 个答案:

答案 0 :(得分:5)

也许你没有做错什么,但是需要重新加载com.apple.launchservices文件。您可以注销,等待几分钟或强制启动服务重新启动。在下面的示例中,我说public.comma-separated-values-text文件(注意:这并不意味着每个CSV文件都是此内容类型)必须使用TextEdit而不是Excel打开。

do shell script "defaults write com.apple.LaunchServices LSHandlers -array-add '{ LSHandlerContentType = \"public.comma-separated-values-text\"; LSHandlerRoleAll = \"com.apple.TextEdit\"; }'"

do shell script "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -kill -r -domain local -domain system -domain user"

答案 1 :(得分:1)

我不确定您是否只是尝试以编程方式执行此操作。你呢?

否则:

在文件上,选择“获取信息”,然后在“打开方式”下选择应用程序的名称。 单击“全部更改”按钮

答案 2 :(得分:0)

您可能需要查看RCDefaultApp及其源代码。这是一个程序,可让您设置启动服务中的哪些应用程序打开哪些文件类型。