任意の拡張子に対しての「このアプリケーションで開く」をdefaults writeコマンドで変更する方法を知りたい

defaults writeコマンドで特定のファイルの拡張子に対しての「このアプリケーションで開く」を設定することは可能でしょうか。調べても出て来ませんでした。


コードのファイルがデフォルトでXcodeで開くようになっていて、使っているエディタと違うので毎回変更するのが大変です。


よろしくおねがいします。


バージョンは以下です。

ProductName: Mac OS X

ProductVersion: 10.15.6

MacBook Pro 15″, macOS 10.12

投稿日 2020/07/21 17:28

返信
返信: 6

2020/07/22 01:08 ohkubo への返信

> defaults writeコマンドで特定のファイルの拡張子に対しての「このアプリケーションで開く」を設定することは可能でしょうか。


不可能です。


拡張子とアプリケーションとの紐付けは、アプリケーションがインストールされたとき若しくは初回起動時に、内包するInfo.plistの内容が読み込まれ、自動的にLaunchServicesデータベースに登録されます。


その内容を表示するコマンドはありますが、登録はできないようです。


/System/Library/Frameworks/CoreServices.framework/Versions/Current/Frameworks/LaunchServices.framework/Versions/Current/Support/lsregister -h


/System/Library/Frameworks/CoreServices.framework/Versions/Current/Frameworks/LaunchServices.framework/Versions/Current/Support/lsregister -dump



2020/07/27 03:02 hohokihai への返信

LSIsAppleDefaultForTypeなんですね。

なるほど、確かにXcodeだとDocument typesのLSIsAppleDefaultForTypeはtrueに設定されています。


現在、Xcodeで開かれるように設定される各種のコードのファイルをVSCodeで開かれるように設定しようとしています。

公式でないアプリ(VSCode)は,Document typesにLSIsAppleDefaultForType自体がないので、気づきませんでした。


①開かせたいアプリのDocument typesの拡張子の設定とともに、LSIsAppleDefaultForTypeをtrueに設定する。

②競合するapple-internalアプリ(Xcode)のDocument typesの該当する拡張子のLSIsAppleDefaultForTypeを消去する。


は最低限必要ってことですね。

VSCodeとXcodeの設定変更がそれだけでいいのかは、info.plistの変更前、変更後のdiffを確認しないとわからないということだとは思いますが。


lifo.plistの見方含めて、すごく勉強になりました。ありがとうございます。

このスレッドはシステム、またはAppleコミュニティチームによってロックされました。 問題解決の参考になる情報であれば、どの投稿にでも投票いただけます。またコミュニティで他の回答を検索することもできます。

任意の拡張子に対しての「このアプリケーションで開く」をdefaults writeコマンドで変更する方法を知りたい

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple Account を使ってご参加ください。