Frage

Ich mag die zuletzt installiert Version meines Mac OS X-Anwendung mit einer bestimmten Art von Datei verknüpfen. Ein wenig Experimentieren zeigt, dass die info.plist Datei durch das Betriebssystem zu lesen und zu interpretieren scheint, wenn das Programm gestartet ist, nicht, wenn das Anwendungspaket auf die Festplatte ziehen. Apples Dokumentation Laufzeit Konfiguration nicht viel sagen zu diesem Thema.

Gibt es eine Möglichkeit, ein einfaches .dmg Bild als Installationsmedium verwendet wird, dass das System Mitarbeiter, dass bestimmte Dateitypen mit meinem neu installierten App zu machen, ohne dass es starten zuerst?

Ich möchte klarstellen, dass ich das will während der Installation automatisch durchgeführt werden (ich will nicht meine Benutzer, es selbst zu tun haben).

War es hilfreich?

Lösung

Wenn ein Benutzer eine Anwendung in den Ordner zieht, soll das System registriert es mit Launch Service automatisch. Siehe Anwendungsregistrierung im Launch Services Guide.

Andere Tipps

Sie können tun, dass Apple-I auf die Datei, indem Sie Sie die Anwendung mit, verwenden Sie die kleine Box namens „Öffnen mit ...“ und wählen Sie Ihre App verknüpfen möchten. Sie können das kleine Kästchen unter „Alle ändern ...“, um die Änderung für alle ähnlichen Dateien zu machen.

Obwohl Tonys Informationen korrekt sind - auch hier erklärt - (dh die MyApp.app Ziehen mit Launch Services Applications registrieren automatisch Verwendung von Informationen aus Info.plist xML-Datei und Setup-Dateizuordnungen), ist es nicht vollständig die Frage nach Dateizuordnung nicht beantworten.

Wenn die Menschen diese Anweisungen befolgen, werden sie ihre Anwendung geöffnet haben, aber keine bestimmte Datei geöffnet wird.

  

[...] sicherstellen, dass die Systempartner, dass bestimmten Dateityp mit meinen neu installierten App

Dateizuordnung ist ein bisschen anders auf Mac als im Vergleich zu anderen Plattformen. Die meisten Plattformen, wenn *.foo mit myapp registriert ist, wenn MyFile.foo doppelt geklickt wird, löst es etwas entlang der Linien von:

/path/to/myapp MyFile.foo

Und obwohl du frei bist auf der Kommandozeile, diese Technik zu verwenden, auf einem Mac mit Erfolg, es ist einfach wird durch Finder nicht funktionieren und auch nicht durch Arbeit eines Doppelklick auf die zugehörige Datei auf dem Desktop.

Frage gestellt und beantwortet hier:

https://stackoverflow.com/a/19702342/3196753

Einige behaupten, ist dieser Ansatz ist vorteilhaft gegenüber konservativen Dokument-Open-File-Handling in main(), weil es „öffnet nur eine Instanz der Anwendung“. Unabhängig von der Grund für diese Entscheidung ist es noch komplizierter Fragen aus einer C ++ Perspektive.

  • Die 108 Seite PDF verfügbar hier (Warnung, wird dies als "Legacy" markiert, linkrot auftreten können).
  • Relevante Dokumentation von Apples Entwickler-Portal verfügbar hier .
  • Qt Ansatz wird dokumentiert hier .

Von qt.io:

  

Wenn ein Benutzer doppelklickt auf einer Datei im Finder, sendet Finder ein Apple-Event für die Anwendung mit der Datei verknüpft und fordert sie auf, die Datei zu öffnen. Wenn die Anwendung nicht läuft, wird es gestartet und dann wird der Antrag gestellt. Der Vorteil dieses Ansatzes besteht darin, dass es nur eine Instanz der Anwendung ausgeführt wird.

     

Unter Windows dies in der Regel durch Starten der Anwendung durchgeführt und dabei den Namen der Datei als Befehlszeilenargument. Mit Blick auf viele Dateien Ergebnisse in vielen Fällen von der gleichen Anwendung zu starten. (Die QtSingleApplication Komponente, erhältlich als Qt-Lösung, befasst sich mit diesem Thema.)

     

Qt 3 bieten keine Abstraktion für den Umgang mit Apple-Event, aber es ist einfach Unterstützung für sie in Ihrer Anwendung mit Mac Carbon API hinzuzufügen. Nehmen wir an, wir haben eine Anwendung namens XpmViewer die XPM-Dateien anzeigt (ein X11-Bildformat). Das Hauptfenster Klassendeklaration folgt: [Code-Schnipsel entfernt]

(BOOL)application:(NSApplication *)theApplication
       openFile:(NSString *)filename

Umgang mit Mac OS X-Datei geöffnet Ereignisse vor C ++ main () führt AEInstallEventHandler Handler beim Start nicht genannt wird

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top