Mac 上で Xcode Source Editor Extension などの機能拡張をお試しで作ってデバッグ実行すると、システム環境設定の機能拡張にそのお試しアプリが登録されてしまいます。いつまでも設定が一覧に残っているのでそのうちアンインストールしたくなるわけですが、アプリ単体の場合と違ってファイルが各所に散らばっていて簡単ではありません。
機能拡張をアンインストールする手順をまとめてみました。
- お試しアプリのエクステンションの方のバンドル名を控えておきます。(Xcode でプロジェクトの General から TARGETS でエクステンションを選択すると
Bundle Identifier
に表示されている値です。) - Xcode を終了します。
- ユーザーごとのライブラリフォルダを開きます。(Finder の
移動
メニューをシフトキーを押しながら開くとライブラリ
という項目があるのでそれを選択します。) -
Application Scripts
フォルダを開いて、控えておいたバンドル名と同じ名前のフォルダを削除します。 -
Containers
フォルダを開いて、控えておいたバンドル名と同じ名前のフォルダを削除します。 - アプリ本体とエクステンションで情報共有するなどのために App Groups を使用している場合は、
Group Containers
フォルダを開いてアプリで使っている App Groups の ID と同じ名前のフォルダを削除します。
ちなみに、Xcodeからエクスポートしたアプリを単独で実行した場合は、AppCleanerを使ってアプリをアンインストールするとついでに機能拡張もアンインストールされます。
以上です。
2021-05-06
手順が面倒なので、ユーザーライブラリにあるバンドルのフォルダ名をダンプするスクリプトを書いてみました。
# !/bin/sh
#
# List app's bundle folders in the user library
#
targets=($(xcodebuild -list | awk '/Targets:/,/^$/' | grep -Ev '(^$|:)' | sed -e 's/ //g'))
for target in ${targets[@]}
do
bundles=($(xcodebuild -showBuildSettings -target ${target} | awk '/PRODUCT_BUNDLE_IDENTIFIER/ {print $3}'))
for ((bundle_i = 0; bundle_i < ${#bundles[@]}; bundle_i++))
do
bundle=${bundles[$bundle_i]}
echo "# ${bundle}"
dirs=(
"Application Support"
"Containers"
"Group Containers"
)
for ((dir_i = 0; dir_i < ${#dirs[@]}; dir_i++))
do
dir=${dirs[$dir_i]}
path="${HOME}/Library/${dir}/${bundle}/"
if [ -d "${path}" ]
then
echo ${path}
fi
done
done
done