2010-08-09 8 views

Répondre

3

Toutes les applications installées sous Mac OS X sont enregistrées dans la base de données Launch Services.

L'infrastructure de services de lancement contient une commande de shell d'assistance lsregister qui, entre autres utilisations, peut vider les informations stockées dans la base de données des services de lancement. Sous Mac OS X 10.5 et 10.6 cette commande est situé dans le dossier suivant:

/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister 

En utilisant quelques filtres de grep simples, on peut extraire les chemins complets de toutes les applications enregistrées:

lsregister -dump | grep --after-context 1 "^bundle" | grep --only-matching "/.*\.app" 

Putting tout ce qu'il ensemble, le AppleScript suivant calcule les noms d'utilisateurs visibles de toutes les applications enregistrées en utilisant la commande 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 
+0

est là de toute façon pour faire cela afin qu'il ne me donne pas les chemins complets, il me donne juste le nom de l'application? Merci pour votre réponse, –

+0

@Taylor: J'ai mis à jour le script. Maintenant, il calcule le nom visible de l'utilisateur de chaque application enregistrée. – sakra

1

Il existe quelques méthodes dans this post, en fonction de la profondeur de votre recherche. Vous ne savez pas si c'est exactement le format de sortie que vous voulez, mais vous pouvez probablement le modifier pour vos besoins spécifiques.

1

J'utilise le system_profiler com demander d'obtenir mon texte. Ensuite, vous pouvez analyser au besoin.

system_profiler SPApplicationsDataType 

...

AppleScript Utility: 

    Version: 1.1.1 
    Last Modified: 5/18/09 10:34 PM 
    Kind: Intel 
    64-Bit (Intel): Yes 
    Location: /System/Library/CoreServices/AppleScript Utility.app 

tuyau peut-être dans un fichier texte, puis utilisez sed ....

commandes Bash peuvent être appelés par AppleScript si vous voulez avoir une application ou vous pouvez enregistrer le script avec une extension .command et l'utilisateur sera en mesure de double-cliquer dessus.

+0

Cela semble beaucoup plus propre que l'approche 'lsregister', mais c'est un peu plus lent. – tresf

0

Pour poeple comme moi à l'aide de scripts bash pour atteindre leurs objectifs ici est une variante de bash du script:

#!/usr/bin/env bash 

path='/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support' 
$path/lsregister -dump | grep -A 1 "^bundle" | grep --only-matching "/.*\.app" | awk -F "/" '{ print $NF }' | awk -F "." '{ print $1 }' 

Cela donne une liste de toutes les applications sans l'extension .app.

Questions connexes