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?
Pourquoi mon application Firemonkey ouvre-t-elle une fenêtre de terminal sur OSX mais pas sur Win32?
Répondre
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)
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.
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.
- 1. "DateWithFormat" fonctionne sur le terminal mais pas sur iOS?
- 2. Mac/Cocoa: Incorporer une fenêtre de terminal dans mon application
- 3. Pourquoi mon programme s'exécute-t-il sur Ubuntu gcc mais pas sur OSX gcc?
- 4. OpenGL à partir de l'application de terminal sur OSX
- 5. OSX Terminal Tabs/Windows
- 6. Pourquoi mon application n'apparaît-elle pas sur mon émulateur?
- 7. Comment lancer une application mac sans une fenêtre de terminal
- 8. Portage de mon application PyGtk 3 sur Win32
- 9. Pourquoi mon application fonctionne-t-elle sur ma tablette mais pas sur un téléphone?
- 10. Problèmes de validation SVN sur Mac OSX Terminal
- 11. Pourquoi mon application graphique basée sur Swing ne répond pas?
- 12. android osx mon droid n'apparaît pas sur mon mac
- 13. Pourquoi une application FaceBook "fonctionnerait" sur un profil, mais pas sur une page?
- 14. Pourquoi est-ce que j'obtiens une exception de gonflement sur l'émulateur mais pas sur mon Droid?
- 15. Comment régler le texte sur "une autre" application win32
- 16. Comment masquer une application Mono sur la station d'accueil OSX
- 17. Impression de Firemonkey sous Mac OSX
- 18. Pourquoi mon application plante sur applicationDidEnterBackground?
- 19. NSNotifier sur Mac OSX
- 20. Exception lors de l'exécution Grails du terminal sur OSX
- 21. Emulateur ne fonctionne pas mon application sur Eclipse .. pourquoi?
- 22. Pourquoi mon tableau SESSION est-il OK sur une page mais vide sur une autre?
- 23. Pourquoi mon application intel xdk ne fonctionne pas sur Android?
- 24. Pourquoi mon JTable s'affichera-t-il sur un nouveau JFrame mais pas sur mon JPanel existant?
- 25. Pourquoi mon application zend fonctionne-t-elle sur mon hôte local mais échoue sur mon serveur avec 'Zend_Loader_PluginLoader_Exception'?
- 26. Application ReportMemoryLeaksOnShutdown et FireMonkey
- 27. Raisons pour lesquelles mon application Android planterait sur mon téléphone de manière cohérente, mais pas sur mon émulateur
- 28. Script de terminal sous OSX
- 29. Pourquoi mon application s'exécute-t-elle correctement sur l'émulateur mais échoue sur le téléphone?
- 30. Comment démarrer Terminal sur OSX pour démarrer clairement?
Je suppose que cela a quelque chose à voir avec le 'libcgunwind dylib runtime file' que vous avez déployé avec. – Johan
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
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