Warum kann ich im Dialogfeld „Öffnen mit“ standardmäßig keine .app-Bundles verwenden, die mit /Applications symbolisch verknüpft sind?

Ich habe emacs mit homebrew installiert , mit dem --cocoaFlag, das Homebrew dazu bringt, ein .app-Bundle in /usr/local/Cellar/emacs/<version>/Emacs.app. Ich habe das .app-Bundle in symbolisch verlinkt /Applications/, um es einfach zu öffnen. Das Problem ist, dass ich Emacs.app nicht als Standard festlegen kann, wenn ich versuche, Dateizuordnungen für Dateien festzulegen (die Schaltfläche Hinzufügen ist ausgegraut):

Öffnen mit Emacs kann nicht ausgewählt werden

Jetzt könnte ich das .app-Bundle einfach in .app kopieren oder verschieben /Applications/, aber das würde erfordern, dass ich es jedes Mal erneut kopieren muss, wenn emacs über Homebrew aktualisiert wird. Gibt es eine andere Möglichkeit, dies zu lösen?

Antworten (5)

Ich weiß nicht warum, aber ich habe herausgefunden, dass Assoziationen gut funktionieren, wenn ich den symbolischen Link zum Inhaltsverzeichnis mache.

Das heißt, ich mache Folgendes in einem Terminalfenster, wobei ich meinen persönlichen Anwendungsordner als Beispiel verwende:

% mkdir ~/Applications/Emacs.app
% ln -s /usr/local/Cellar/emacs/23.2/Emacs.app/Contents ~/Applications/Emacs.app

Etwas über das Einfügen des Symlinks in die Emacs.app führt dazu, dass das Bundle erkannt wird.

Seltsam. Ich habe gerade emacs über brew installiert und das Dialogfeld "Öffnen mit" wurde automatisch aktualisiert, um Emacs.app einzuschließen. Aber Sie sollten in der Lage sein, Folgendes zu tun: Drücken Sie direkt nach dem Öffnen des Dialogs "Wählen Sie eine Anwendung" "/", um ein "Gehe zum Ordner"-Fenster zu erhalten. Geben Sie den folgenden Pfad ein:

/usr/local/Cellar/emacs/

und navigieren Sie von dort zur Emacs.app (in der aktuellen Version sollte dies /usr/local/Cellar/emacs/23.2/Emacs.app sein) und wählen Sie sie als Standardanwendung aus.

========

Könnten Sie bitte den folgenden Befehl ausführen, um zu sehen, ob Emacs in Ihrer LaunchServices-DB registriert ist?

/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -dump | grep Emacs

Das habe ich schon vorgeschlagen. Aber es funktioniert nicht mehr, wenn Emacs aktualisiert wird (die Version ist im Pfad)
Funktioniert es tatsächlich, wenn Sie zum echten Pfad von Emacs navigieren? Sind Sie sicher, dass nur der Symlink/Alias ​​nicht funktioniert?
Ja, Sie könnten dies zum Beispiel versuchen, indem Sie TextEdit symbolisch verlinken: ln -s /Applications/TextEdit.app /Applications/Test.app - jetzt können Sie es nicht mehr im Dialogfeld "Anwendung auswählen" auswählen. Bitte sehen Sie sich meine ursprüngliche Antwort oben an, um eine andere Idee zu LaunchServices zu erhalten.
Es sieht so aus: pastie.org/pastes/1529411 (zumindest das Ziel des Links), zusammen mit einigen anderen Emacs.app-Paketen, die ich irgendwann gelöscht habe. Was bedeutet das?
Dieser LaunchServices-Befehl, den Sie ausgeführt haben, zeigte alle Emacs-Varianten, die Ihr Mac im Laufe der Zeit "kennengelernt" hat, selbst wenn Sie sie gelöscht haben. Möglicherweise möchten Sie entweder Ihre LaunchServices-DB neu erstellen und dann (nachdem Sie Emacs zum "ersten" Mal geöffnet haben) sollte sie sofort im Dialogfeld "Öffnen mit" verfügbar sein - aber dies könnte dazu führen, dass Ihr Mac die anderen benutzerdefinierten Dateizuweisungen vergisst, die Sie vorgenommen haben über Zeit. Oder Sie versuchen vielleicht die erste Lösung, die ich (und Loïc) vorgeschlagen habe: Emacs von /usr/local… im „Öffnen mit“-Dialog zuweisen

Wenn Sie dies nicht oft tun, können Sie zu dem Ort navigieren, an dem sich Emacs.app wirklich befindet, und es von dort aus zuweisen.

Haben Sie versucht, das Dropdown-Menü "Aktivieren: Empfohlene Anwendungen" zu ändern? Ich glaube, es gibt eine Option "Alle Anwendungen". Vielleicht können Sie hier Ihren Alias ​​auswählen.

Sie sagten, Sie hätten die .app symbolisch verlinkt. Hast du benutzt ln -s? Wenn ja, haben Sie stattdessen versucht, einen Alias ​​zu verwenden?

--
Ich kenne Homebrew nicht sehr gut, aber es sieht so aus, als ob Sie Homebrew mit externen Befehlen erweitern können .

Versuchen Sie nachzusehen, ob Sie die aktualisierte .appDatei erhalten können cp, und /Applications.

Ja, ich habe ln -svon der Befehlszeile aus verwendet. Ich habe auch versucht, einen Alias ​​zu verwenden, aber das hat auch nicht funktioniert. Die Auswahl von "Alle Anwendungen" hilft nicht, da ich Emacs.app bereits auswählen kann, ich kann nur nicht auf "Hinzufügen" klicken. Ich denke, ich könnte zum "echten" Emacs.app-Bundle navigieren, aber die Sache ist, dass die Versionsnummer Teil des Pfads ist, also würde sie sich ändern, wenn Emacs aktualisiert wird ...
@oyvindio hat eine neue Idee hinzugefügt

Meine Lösung besteht darin, einen Symlink von /usr/local/Cellarin zu erstellen /Applications. Dann finden Sie die emacs.app, die Sie verwenden müssen, mit dem Dialog "Öffnen mit" (in /Applications/Cellar).

Alternativ können Sie RCDefault (eine Freeware-App) verwenden, um die Dateierweiterungszuordnung zu konfigurieren.

Die genauen Pfade zu Ihren Anwendungen sollten keine Rolle spielen. Sobald Sie die Anwendung öffnen und einmal schließen, sollte sie Ihrer LaunchServices-Datenbank hinzugefügt werden.

Versuchen Sie, Ihre LaunchServices-Datenbank neu zu erstellen, indem Sie den folgenden Terminalbefehl eingeben:

/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/\
LaunchServices.framework/Versions/A/Support/lsregister -kill -r -domain\
local -domain system -domain user

Öffnen Sie danach MacVim. Es sollte dann die Optionen Öffnen mit... auffüllen. Beachten Sie, dass MacVim sich nicht automatisch vielen Dateitypen zuordnet (anders als beispielsweise BBEdit, das als Standardoption für fast alle Dateitypen angezeigt wird), nur Text-, Code- und HTML-Dateien tendieren dazu