2

Es gibt ein paar Implementierungen von tragbaren Anwendungen in Linux, aber es scheint, dass alle Mac OS X-Anwendungen portabel sind. Da Mac OS X dieses Modell vollständig unterstützt, gehe ich davon aus, dass es bereits eine Lösung für dieses Problem gibt.Wie werden portable Apps bei Bedarf vom System aufgerufen (z. B. Dateizuordnung)?

Da Windows Apps "installiert", indem Dateien überall platziert und Dinge in der Registrierung geändert werden, können Dateizuordnungen leicht gemacht werden. Nehmen wir an, ich habe gerade MPlayer für Mac OS X (oder was auch immer) heruntergeladen. Ich möchte alle meine Filme in MPlayer öffnen. Dann entscheide ich mich, MPlayers App-Paket zu verschieben (hey, es ist tragbar, oder?). Wird der Verein brechen? Oder ist das unter OS X überhaupt nicht möglich?

Wie würde man portable Apps in Linux implementieren? Sollte es dem Modell von OS X ähnlich sein? Ich weiß, dass dies eine sehr offene Frage ist, aber alle Vorschläge werden geschätzt.

Antwort

2

Die Launch Services-Datenbank von OS X verfolgt die Dokumentbindungen auf verschiedene Arten - im Allgemeinen versucht sie, eine Anwendung zu vergleichen, selbst wenn Sie sie verschoben haben.

Sie können lsregister -dump (lsregister ist /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister) ausführen, um zu sehen, was die Launch Services-Datenbank über eine Bindung sagt. Zum Beispiel, wenn ich Textdateien binden mit TextWrangler zu öffnen, ich sehe:

handler id:   3124 
    content type: public.plain-text 
    options:  
    all roles:  com.barebones.textwrangler (0x3ea30180) 

public.plain-text ist ein Uniform Type Identifier (die Karten auf eine oder mehr Dateierweiterungen, MIME-Typen, usw. und kann Subtypen haben), die Ebene Text und com.barebones.textwrangler ist die Bundle-ID von TextWrangler.

Mir ist kein Linux-Standard bekannt, der so robust ist, um Dokumente zu binden - um so etwas wie den Mac zu machen, müsste zuerst eine Standardmethode zum Identifizieren von Anwendungen unabhängig von ihrer Position oder ihrem Namen existieren Java-Paket-ähnliche/Reverse-DNS-Methode auf dem Mac), dann eine Registrierung für Typ-Zuordnungen und Bindungen, gefolgt von genügend Desktop-Umgebungen, um nützlich zu sein, und eine Möglichkeit zur Registrierung von Anwendungen, wie sie installiert sind.

Sie benötigen nicht unbedingt separate Dateien, wie Info.plist in Mac-Anwendungspaketen, um diese Informationen zu speichern; Selbst unter Mac OS X können Sie Informationen in einen Binary-Bereich einbetten, den Launch Services sehr gut indiziert (beachten Sie, dass es sich nicht um ein separates "fork" oder erweitertes Attribut handelt, sondern Debug-Informationen in eine ausführbare Datei eingebettet werden). So könnte vielleicht eine Ableitung der .desktop Dateien eingebettet werden. Auf der anderen Seite benötigen Sie eine Möglichkeit, Inhalte zu erkennen.Idealerweise können Sie sogar Content-Sniffing wie den file(1)-Befehl ausführen, um einen Dokumenttyp zu identifizieren. klassisches Mac OS tat dies mit der Translation Manager (die Registrierung von Konvertern von einem Format zu einem anderen, sowie Sniffer erlaubt).

UTIs und der Translation-Manager behandeln (d) Zwischenablage und ziehen & Drop-Inhalt sowie Dateien auf der Festplatte; Die Vereinheitlichung dieser Formatdarstellungen ist ziemlich nützlich, wenn Sie gerade dabei sind.

2

Jeder Dateibrowser (z. B. Nautilus, Konqueror) müsste für die Verwendung eigener Dateizuordnungen konfiguriert werden. Glücklicherweise hat das Free Desktop-Projekt an der Standardisierung von Dateizuordnungen gearbeitet (neben vielen anderen Dingen). Gemäß der shared MIME database Beschreibung wurde noch keine formale Spezifikation geschrieben, aber das Format ist ziemlich standardisiert.

Das kostenlose Desktop-Projekt verwendet auch .desktop Dateien, um "Portabilität" bereitzustellen (vielleicht sollten Sie ein anderes Wort dafür verwenden ... vielleicht "beweglich"?). Wenn Sie die ausführbare Datei außerhalb von PATH verschieben, können Sie die .desktop aktualisieren, um auf den richtigen Speicherort zu verweisen.

Im Allgemeinen gibt es eine Menge fortlaufender Arbeit in der Linux-Gemeinschaft, die in Richtung benutzerfreundlicherer und entwicklerfreundlicher (d. H. Standardisierter) Wege geht, diese Ziele zu erreichen. Aber die Dinge sind noch nicht fertig.

Verwandte Themen