Question

Je souhaite associer la dernière version de mon application Mac OS X à un certain type de fichier. Un peu d’expérimentation montre que le fichier info.plist semble être lu et interprété par le système d’exploitation lors du lancement de l’application, et non lors du déplacement de son lot sur le disque. Documentation d'Apple en cours d'exécution configuration ne dit pas grand chose à ce sujet.

Utilisez-vous une simple image .dmg comme support d'installation pour vous assurer que le système associe ce type de fichier à l'application que je viens d'installer sans avoir à la lancer premier?

Je dois préciser que je souhaite que cela se fasse automatiquement lors de l'installation (je ne veux pas que mes utilisateurs soient obligés de le faire eux-mêmes).

Était-ce utile?

La solution

Lorsqu'un utilisateur fait glisser une application dans le dossier Applications, le système doit l'enregistrer avec Launch Services automatiquement. Voir Enregistrement d'application dans le guide des services de lancement.

Autres conseils

Vous pouvez le faire en tapant apple-I sur le fichier auquel vous souhaitez associer l'application, utilisez la petite boîte intitulée "Ouvrir avec ...". et sélectionnez votre application. Vous pouvez cocher la petite case ci-dessous " Changer tout ... " effectuer la modification pour tous les fichiers similaires.

Bien que les informations de Tony soient correctes - a également expliqué ici - (en faisant glisser le MyApp.app to Applications s'enregistrera dans Launch Services automatiquement à l'aide des informations provenant du fichier xml Info.plist et du fichier d'installation), il ne répond pas complètement à la question relative à l'association de fichier.

Si les utilisateurs suivent ces instructions, leur application sera ouverte, mais aucun fichier spécifique ne sera ouvert.

  

[...] assurez-vous que le système associe ce type de fichier particulier à mon application nouvellement installée

L'association de fichiers est un peu différente sur Mac par rapport aux autres plates-formes. La plupart des plateformes, lorsque *. Foo est enregistré auprès de myapp , lorsque vous double-cliquez sur MonFichier.foo , le message suivant est affiché:

/path/to/myapp MyFile.foo

Et bien que vous puissiez utiliser cette technique en ligne de commande avec succès sur un Mac, ne fonctionnera tout simplement pas dans le Finder et ne fonctionnera pas non plus en double-cliquant sur le fichier associé. sur le bureau.

Demandé et répondu ici:

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

Certains prétendent que cette approche est avantageuse par rapport à la gestion conservatrice de document ouvert de fichier dans main () car elle "n'ouvre qu'une instance de l'application". Indépendamment du raisonnement derrière cette décision, cela complique encore les choses du point de vue de C ++.

À partir de qt.io:

  

Lorsqu'un utilisateur double-clique sur un fichier dans le Finder, celui-ci envoie un événement Apple à l'application associée au fichier et lui demande d'ouvrir le fichier. Si l'application n'est pas en cours d'exécution, elle est lancée puis la demande est faite. L'avantage de cette approche est qu'il n'y a qu'une seule instance de l'application en cours d'exécution.

     

Sous Windows, cela se fait généralement en lançant l'application et en transmettant le nom du fichier en tant qu'argument de ligne de commande. L'examen de nombreux fichiers entraîne le lancement de nombreuses instances de la même application. (Le composant QtSingleApplication, disponible en tant que solution Qt, résout ce problème.)

     

Qt 3 ne fournit pas d’abstraction pour la gestion des événements Apple, mais il est simple d’ajouter leur prise en charge dans votre application à l’aide de l’API Carbon de Mac. Supposons que nous ayons une application appelée XpmViewer qui affiche les fichiers XPM (format d'image X11). La déclaration de classe de la fenêtre principale est la suivante: [extrait de code supprimé]

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

Gestion de l'événement d'ouverture de fichier Mac OS X AVANT que C ++ main () s'exécute gestionnaire AEInstallEventHandler non appelé au démarrage

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top