Podstawowym problemem
szukam rozwiązania wyliczyć wszystkie zainstalowane na (Mac) OS X aplikacji systemu, to znaczy wszystkie pakiety aplikacji zarejestrowanych z LaunchServices.Wyliczanie wszystkich zainstalowanych aplikacji na OS X
Proste podejście, które nie działa
(Uwaga: lsregister
można znaleźć pod /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister
).
Obecnie używam wyjście lsregister -dump | grep -E '^.*[ \\t]*path:[ \\t]+(\/.*)$' | grep -Eo '\/.*'
, która ma kilka problemów:
.app
wiązek z nowymi liniami (\n
, co jest ważne w systemie UNIX) nie są obsługiwane poprawnie (Ten problem będzie naprawić przez piśmie odpowiedni analizator składni)lsregister
nie obsługuje poprawnie dziwnej nazwy pliku (np. zawierającej RTL mark).lsregister
wydaje się ignorować pliki ze znakiem RTL w ich nazwie. Jeśli chcesz, możesz utworzyć plik z RTL w jego nazwie, uruchamiając następujące polecenie.python -c 'import shutil; shutil.copytree(u"/Applications/TextEdit.app", u"/Applications/ThisIsAWeird\u202EApp.app")'
Po wykonaniu tej czynności,
lsregister -dump | grep ThisIsAWeird
będzie nie ujawniać go. Ale kiedy klikniesz prawym przyciskiem myszy plik tekstowy i klikniesz "Otwórz za pomocą", to LaunchServices i Finder nadal będą obsługiwać ten plik.
Wystarczy wyliczanie wszystkich plików w /Applications
i inne katalogi nie działa, ponieważ jest świadoma LaunchServices wiązek zastosowania w dowolnych folderów i ja też trzeba te aplikacje.
Inne approch że nie dostać się do pracy
Najwyraźniej istnieje prywatna funkcja API o nazwie _LSFindApplications
który robi dokładnie to, co trzeba zrobić, ale nie mogę zmusić go do pracy i nie znaleźliśmy żadnych nieoficjalna dokumentacja w Internecie. (Dowód istnieje: nm /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/LaunchServices | grep __LSFindApplications$
)
UPDATE: metoda system_profiler również nie wydają się działać
Do tej pory I chociaż metoda system_profiler
jak sugeruje @Anoop prace ale dziś okazało się, że lsregister
jeszcze bardziej podnosi pliki binarne. Niektóre lub brakujące na wszystkich komputerach, niektóre wydają się być nieobecne tylko w system_profiler
po zamontowaniu zewnętrznego woluminu z inną instalacją OS X. Oto lista, której brakuje na wyjściu system_profiler
(ale jest obecna w lsregister
) na jednym z moich maszyny:
/Applications/Automator.app/Contents/Resources/Application Stub.app
/Applications/Google Chrome.app/Contents/Versions/30.0.1599.69/Google Chrome Framework.framework/Resources/app_mode_loader.app
/Applications/Google Chrome.app/Contents/Versions/30.0.1599.69/Google Chrome Framework.framework/Resources/crash_report_sender.app
/Applications/Google Chrome.app/Contents/Versions/30.0.1599.69/Google Chrome Helper EH.app
/Applications/Google Chrome.app/Contents/Versions/30.0.1599.69/Google Chrome Helper NP.app
/Applications/Google Chrome.app/Contents/Versions/30.0.1599.69/Google Chrome Helper.app
/System/Library/CoreServices/AddPrinter.app
/System/Library/CoreServices/AirPlayUIAgent.app
/System/Library/CoreServices/AppleFileServer.app
/System/Library/CoreServices/AppleGraphicsWarning.app
/System/Library/CoreServices/AppleScript Runner.app
/System/Library/CoreServices/AppleScript Utility.app
/System/Library/CoreServices/CalendarFileHandler.app
/System/Library/CoreServices/Certificate Assistant.app
/System/Library/CoreServices/CoreLocationAgent.app
/System/Library/CoreServices/CoreServicesUIAgent.app
/System/Library/CoreServices/CoreTypes.bundle
/System/Library/CoreServices/Database Events.app
/System/Library/CoreServices/DiskImageMounter.app
/System/Library/CoreServices/Expansion Slot Utility.app
/System/Library/CoreServices/File Sync.app
/System/Library/CoreServices/FileSyncAgent.app
/System/Library/CoreServices/Folder Actions Dispatcher.app
/System/Library/CoreServices/Folder Actions Setup.app
/System/Library/CoreServices/HelpViewer.app
/System/Library/CoreServices/Image Events.app
/System/Library/CoreServices/Install in Progress.app
/System/Library/CoreServices/Jar Launcher.app
/System/Library/CoreServices/Java Web Start.app
/System/Library/CoreServices/KeyboardSetupAssistant.app
/System/Library/CoreServices/Language Chooser.app
/System/Library/CoreServices/LocationMenu.app
/System/Library/CoreServices/MRTAgent.app
/System/Library/CoreServices/Memory Slot Utility.app
/System/Library/CoreServices/NetAuthAgent.app
/System/Library/CoreServices/Network Diagnostics.app
/System/Library/CoreServices/Network Setup Assistant.app
/System/Library/CoreServices/ODSAgent.app
/System/Library/CoreServices/Pass Viewer.app
/System/Library/CoreServices/Printer Setup Utility.app
/System/Library/CoreServices/RegisterPluginIMApp.app
/System/Library/CoreServices/Screen Sharing.app
/System/Library/CoreServices/SecurityAgent.app
/System/Library/CoreServices/SecurityFixer.app
/System/Library/CoreServices/SocialPushAgent.app
/System/Library/CoreServices/System Events.app
/System/Library/CoreServices/System Image Utility.app
/System/Library/CoreServices/SystemUIServer.app
/System/Library/CoreServices/Ticket Viewer.app
/System/Library/CoreServices/UniversalAccessControl.app
/System/Library/CoreServices/UnmountAssistantAgent.app
/System/Library/CoreServices/UserNotificationCenter.app
/System/Library/CoreServices/VoiceOver.app
/System/Library/CoreServices/ZoomWindow.app
/System/Library/CoreServices/backupd.bundle/Contents/Resources/TMLaunchAgent.app
/System/Library/CoreServices/loginwindow.app
/System/Library/CoreServices/rcd.app
/System/Library/Frameworks/PubSub.framework/Versions/A/Resources/PubSubAgent.app
/System/Library/Frameworks/Quartz.framework/Versions/A/Frameworks/QuickLookUI.framework/Versions/A/Resources/QuickLookUIHelper.app
/System/Library/Frameworks/QuickLook.framework/Versions/A/Resources/quicklookd.app
/System/Library/PrivateFrameworks/DiskImages.framework/Versions/A/Resources/DiskImages UI Agent.app
/System/Library/Services/AppleSpell.service
/System/Library/Services/ChineseTextConverterService.app
/System/Library/Services/ImageCaptureService.app
/System/Library/Services/OpenSpell.service
/System/Library/Services/SpeechService.service
/System/Library/SocialServices/Facebook.socialplugin
/System/Library/SocialServices/Twitter.socialplugin
/System/Library/SocialServices/Weibo.socialplugin
Wiem, że jest to możliwe, ponieważ RCDefaultApp robi to, ale ja też nie wiem jak. – zneak