いまさら調べてみる。まず Apple 公式。
* Lauchpad からアンインストールする
* Finder を使って
- ゴミ箱にいれる
- ⌘ ( command ) + ⌫ ( delete )
* アプリ同梱のアンインストールスクリプト
👉 Mac でアプリをアンインストールする - Apple サポート (日本)
コマンドラインで。
❯ sudo uninstall file://Applications/Pages.app
👉 How to completely uninstall an app on a Mac and delete all junk files
Homebrew のコマンドを使うなら。
❯ brew help uninstall
Usage: brew uninstall, remove, rm [options] installed_formula|installed_cask
[...]
Uninstall a formula or cask.
-f, --force Delete all installed versions of formula.
Uninstall even if cask is not installed,
overwrite existing files and ignore errors
when removing files.
--zap Remove all files associated with a cask.
May remove files which are shared between
applications.
--ignore-dependencies Don't fail uninstall, even if formula is a
dependency of any installed formulae.
--formula, --formulae Treat all named arguments as formulae.
--cask, --casks Treat all named arguments as casks.
-d, --debug Display any debugging information.
-q, --quiet Make some output more quiet.
-v, --verbose Make some output more verbose.
-h, --help Show this message.
実際、今現在、私も使っているが、このアプリがベストに思える。
サードパーティのアプリなのですが、
どのファイルを削除してるのだろうか
と思いました。
🤔 手動で完全にアンインストールする方法
実際にはやらないけども、アプリの構造やインストーラのしくみの理解にもつながるはず。
👉 t18n/uninstall-cli: Open-sourced CLI tool to uninstall application on MacOS
アプリ(.app)のパス
から
「アプリ名」と「アプリ識別子」
を取得してから、
可能性のあるディレクトリを走査して、
見つけたファイルが削除の対象。
キャッシュやテンポラリなディレクトリも操作しています。
❯ app=/Applications/Numbers.app
❯ /usr/libexec/PlistBuddy -c "Print CFBundleIdentifier" "$app/Contents/Info.plist"
com.apple.iWork.Numbers
❯ echo $(basename $app .app)
Numbers
❯ find "$HOME/Library/Application Scripts" -iname "*com.apple.iWork.Numbers*" -maxdepth 1 -prune
/Users/me/Library/Application Scripts/com.apple.iWork.Numbers
/Users/me/Application Scripts/com.apple.iWork.Numbers.NumbersNotificationServiceExtension
❯ find "$HOME/Library/Application Scripts" -iname "*Numbers*" -maxdepth 1 -prune
/Users/me/Library/Application Scripts/com.apple.iWork.Numbers
/Users/me/Library/Application Scripts/com.apple.iWork.Numbers.NumbersNotificationServiceExtension
❯ echo $(getconf DARWIN_USER_CACHE_DIR | sed "s/\/$//")
/var/folders/2_/860qd2ks5hg6hp26wg2tmtn40000gn/C
❯ echo $(getconf DARWIN_USER_TEMP_DIR | sed "s/\/$//")
/var/folders/2_/860qd2ks5hg6hp26wg2tmtn40000gn/T
このスクリプトもそうですが、すべてのこのへんの記事の元は以下であることが多いようです。
ということで、アプリに関連するファイルの位置は以下だと言えそうです。
locations=(
"$HOME/Library"
"$HOME/Library/Application Scripts"
"$HOME/Library/Application Support"
"$HOME/Library/Application Support/CrashReporter"
"$HOME/Library/Containers"
"$HOME/Library/Caches"
"$HOME/Library/HTTPStorages"
"$HOME/Library/Group Containers"
"$HOME/Library/Internet Plug-Ins"
"$HOME/Library/LaunchAgents"
"$HOME/Library/Logs"
"$HOME/Library/Preferences"
"$HOME/Library/Preferences/ByHost"
"$HOME/Library/Saved Application State"
"$HOME/Library/WebKit"
"/Library"
"/Library/Application Support"
"/Library/Application Support/CrashReporter"
"/Library/Caches"
"/Library/Extensions"
"/Library/Internet Plug-Ins"
"/Library/LaunchAgents"
"/Library/LaunchDaemons"
"/Library/Logs"
"/Library/Preferences"
"/Library/PrivilegedHelperTools"
"/private/var/db/receipts"
"/usr/local/bin"
"/usr/local/etc"
"/usr/local/opt"
"/usr/local/sbin"
"/usr/local/share"
"/usr/local/var"
$(getconf DARWIN_USER_CACHE_DIR | sed "s/\/$//")
$(getconf DARWIN_USER_TEMP_DIR | sed "s/\/$//")
)
アプリを特定するのは、上記スクリプトの
「basename」と「CFBundleIdentifier」
のようです。
🤔 おまけ
SwiftUI で書かれたアンインストールアプリがありました。
👉 Pearcleaner - Product Information, Latest Updates, and Reviews 2024 | Product Hunt
現在絶賛公開中の模様。
オープンソースです。
👉 alienator88/Pearcleaner: A free, source-available and fair-code licensed mac app cleaner