2011-09-09 4 views
9

J'ai créé une application test simple dans Delphi XE2, et compilé à la fois une version Win32 et OSX de l'application.
J'ai compressé la version OSX, avec une copie du fichier d'exécution libylgunwind dylib et j'ai copié ces fichiers sur un Mac auquel j'ai accès.
Lorsque j'ai décompressé le fichier, le mac a reconnu mon application OSX et j'ai double-cliqué dessus. Ceci, à son tour, a ouvert une fenêtre de terminal pour une raison inconnue avec la forme de mon application simple.
L'application elle-même fonctionnait et se comportait très bien, mais je suis curieux de savoir pourquoi une fenêtre de terminal s'ouvrirait sur le Mac?Pourquoi mon application Firemonkey ouvre-t-elle une fenêtre de terminal sur OSX mais pas sur Win32?

+0

Je suppose que cela a quelque chose à voir avec le 'libcgunwind dylib runtime file' que vous avez déployé avec. – Johan

+0

J'admets volontiers que je suis un newb Mac OSX complet, faute d'un meilleur mot. avec le dylib, l'application ne s'exécuterait pas. Est-ce que les fichiers dylib doivent aller dans un répertoire spécial? Dois-je 'installer' l'application quelque part sur le mac pour qu'elle fonctionne correctement? Ce sont les choses que je ne sais quoi. – Alan

+0

ma femme a un MacBook et c'est aussi loin que mon savoir Mac va, je pense que vous pourriez essayer de mettre ce problème avant les gens à http://apple.stackexchange.com/ – Johan

Répondre

2

IIRC cela se produit si vous exécutez le fichier binaire directement au lieu via un bundle

applications Lazarus/FPC avait le même problème. IIRC le binaire directement exécuté n'a pas eu d'événements dans ces circonstances, mais ces applications étaient basées sur le carbone. Ce problème a également disparu lors de l'exécution via une configuration de bundle (qui est à peu près un manifeste, quelques dirs et un lien symbolique)

3

Il existe un outil gratuit disponible pour Delphi XE2 qui va créer le bundle d'application de déploiement OSX pour vous, à partir de Windows, sans avoir besoin de PAServer.

http://enesce.com/delphiosx_bundler

Vérifiez le readme pour obtenir des instructions.

0

Votre application doit être exécutée à partir de l'ensemble d'applications. Si vous l'exécutez directement, vous aurez l'effet secondaire de voir la fenêtre du terminal avec la ligne de commande qui exécute l'application.

Vous voudrez en savoir plus sur Application Bundles.

Si vous utilisez PAServer, après avoir exécuté le programme pour la première fois sur le Mac, regardez dans le dossier suivant sur le Mac pour le faisceau d'application:

/Users/[username]/Applications/Embarcadero/PAServer/scratch-dir/[profilename] 

Si votre projet est nommé Projet1 , vous verrez un ensemble d'applications dans ce dossier nommé Project1. Si vous lisez l'article wiki ci-dessus, vous savez que Project1 a une extension "cachée" de .app, et le tout est vraiment un dossier avec tous les fichiers requis pour exécuter l'application.

Pour l'utilisateur Mac OS, l'ensemble d'applications apparaît sous la forme d'un fichier programme unique, complété par une icône. L'utilisateur peut double-cliquer sur l'ensemble d'applications pour exécuter l'application, le faire glisser vers son dock, etc.

Le lot d'applications aura l'icône Delphi par défaut, mais vous pouvez le remplacer par votre propre icône. Sur le Mac, faites un clic droit sur le groupe d'applications dans le Finder, puis sélectionnez Afficher le contenu du paquet. Dans là, recherchez dans le dossier Contents/Resources pour le fichier .icns.

Utilisez l'application Icon Composer installée avec XCode pour créer votre fichier d'icône .icns à partir de fichiers image existants.

Jetez un coup d'œil à l'intérieur du reste du contenu. Vous verrez le dylib requis, votre fichier de programme, et le fichier Info.plist, qui est un fichier texte avec des choses comme les identifiants d'application, les signatures, et d'autres choses importantes.

Questions connexes