Launchpadからアプリを削除するだけでApplication Support以下のファイルを全消ししてしまうバグが見つかる
2014/11/01 23:47 追記:Yosemiteとタイトルに入れてしまいましたがYosemiteだけとは限らないのでタイトルと本文修正。
Twitterで話題になっていて知ったのですが、Launchpadからのアプリケーションのアンインストールは深刻なバグがあるようで、Mac App Storeからインストールした特定のアプリ(今回判明した例ではCoffitivityですが他にもある可能性あり)をLaunchpad経由で削除すると「Application Support」以下のファイルを全部消してしまいます。
「Application Support」フォルダは各種アプリの設定ファイルを保存しておく所で、ここが消えてしまうと大部分のアプリの設定が吹き飛ぶという大惨事が起こります。
Launchpadから何かアプリを削除したら、~/Library/Application\ Support/の中身がごっそり消えたぽい…
— Norio Nomura (@norio_nomura) 2014, 11月 1
.@norio_nomura どうやら原因は Info.plist の CFBundleDisplayName に空の string が設定されていること。これを任意の文字列にしたら消えなくなった。また、他のアプリに空の string を設定するとアンインストールで消えた。
— hetima (@hetima) 2014, 11月 1
アンインストール時 Application Support/アプリ名 というフォルダがあったら消す仕様だが、CFBundleDisplayName が空のためひとつ上の階層をつかまえてしまって事故ると推測。
— hetima (@hetima) 2014, 11月 1
LaunchpadからのアプリのアンインストールはApplication Supportフォルダ以下の関連フォルダも消す仕様ですが、アンインストールしたいアプリとの関連性はCFBundleDisplayNameという属性から判断されます。
ですがCFBundleDisplayNameが空の場合、関連フォルダが特定できずその上の階層から消してしまうというバグのようです。
CFBundleDisplayNameはアプリ開発者が付けるもので、うっかり付け忘れることは他のアプリでもあり得るので、セキュリティアップデートが来るまでLaunchpad経由でのアプリのアンインストールは控えたほうが良さそうです。