2012年9月12日水曜日

Finderの「このアプリケーションで開く」その2

その1の続き(でも別の話)です。
その1は自宅のMacの話ですが、会社で使っているMacも同じようにコンテクストメニューでThe Unarchiver.appが2個表示されるようになりました。なんで、The Unarchiverばかりなんでしょう?
その1と違い、The Unarchiver.appにバージョン番号がついていません。
前回の手順と同じように、システムプロファイラからThe Unarchiverを探したのですが、1個しかインストールされていませんでした。
ウェブで(このアプリケーションで開く 複数と)検索したらLaunch Servicesのデータベースを再構築すると解決するらしいことがわかりました。
http://tinasite.net/archives/2007/1104_181253.php     (一番最初に見つかったページ)
http://news.mynavi.jp/column/osx/180/     (少し調べた範囲では、一番古いページ)
データベースの再構築のコマンドは、lsregisterでターミナルから使用するようです。OSのバージョンによってパスが異なっているようです。一番目のサイトの人も困っていたみたいです。locateコマンドを使ってみます。(locateデータベースを作っておく必要があります)
$ locate lsregister
会社のMac (10.6.8)の場合は
/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister
にあることがわかりました。そのディレクトリに移動します。
$ cd `dirname \`locate lsregister\``
     # $ cd $(dirname $(locate lsregister)) でも同じです。
lsregisterコマンドのヘルプを見てみます。
$ ./lsregister -h


lsregister: [OPTIONS] [ <path>... ]
                      [ -apps <domain>[,domain]... ]
                      [ -libs <domain>[,domain]... ]
                      [ -all  <domain>[,domain]... ]

Paths are searched for applications to register with the Launch Service database.
Valid domains are "system", "local", "network" and "user". Domains can also
be specified using only the first letter.

  -kill     Reset the Launch Services database before doing anything else
  -seed     If database isn't seeded, scan default locations for applications and libraries to register
  -lint     Print information about plist errors while registering bundles
  -convert  Register apps found in older LS database files
  -lazy n   Sleep for n seconds before registering/scanning
  -r        Recursive directory scan, do not recurse into packages or invisible directories
  -R        Recursive directory scan, descending into packages and invisible directories
  -f        force-update registration even if mod date is unchanged
  -u        unregister instead of register
  -v        Display progress information
  -dump     Display full database contents after registration
  -h        Display this help

まず、コンテクストメニューに2個のThe Unarchiver.appが表示されるようになったのでデータベースもそうなっているか、-dump オプションで確認してみます。
$ ./lsregister -dump | less
...
--------------------------------------------------------------------------------
bundle  id:            189632
        path:          /Applications/The Unarchiver.app
        name:          The Unarchiver
        identifier:    cx.c3.theunarchiver (0x8001c2da)
こんな感じで見つかりました。2個同じ/Applications/The Unarchiver.app のパスで登録されていました。
また、調べたウェブページでは、みんな -kill でデータベースを再構築してるみたいですが、ヘルプをみると、-u オプションで特定のパスを削除できそうです。安易ですが、失敗したら再構築すればいいかなと思い、試してみました。
$ ./register -u "/Applications/The Unarchiver.app"
ThrottleProcessIO: throttling disk i/o
ThrottleProcessIO:のメッセージで一瞬ドキッとしましたが、ディスクI/Oを少し絞って実行したようで無事終わりました。
-dumpオプションで確認したら、The Unarchiver.appは1個だけ登録された状態になっていました。
Finderで確認してみます。

直ったみたいです。

0 件のコメント:

コメントを投稿