Все приложения, установленные под Mac OS X, зарегистрированы в базе данных Launch Services .
Платформа Launch Services содержит вспомогательную команду оболочки lsregister
, которая, помимо прочего, может выводитьинформация хранится в базе данных Launch Services.В Mac OS X 10.5 и 10.6 эта команда находится в следующей папке:
/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister
Используя несколько простых фильтров grep, можно извлечь полные пути всех зарегистрированных приложений:
lsregister -dump | grep --after-context 1 "^bundle" | grep --only-matching "/.*\.app"
Собрав все воедино, следующий AppleScript вычислит видимые пользователю имена всех зарегистрированных приложений, используя команду info for :
property pLSRegisterPath : "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister"
set theAppPaths to every paragraph of (do shell script pLSRegisterPath & " -dump | grep --after-context 1 \"^bundle\" | grep --only-matching \"/.*\\.app\"")
set theNames to {}
repeat with thePath in theAppPaths
try
copy displayed name of (info for (thePath as POSIX file)) to end of theNames
end try
end repeat
choose from list theNames