2011-09-09 15 views
9

Ho creato una semplice app di test in Delphi XE2 e ho compilato una versione dell'applicazione Win32 e OSX.
Ho zippato la versione di OSX, insieme a una copia del file di runtime libcgunwind dylib e ho copiato questi file su un Mac a cui ho accesso.
Quando ho decompresso il file, il mac ha riconosciuto la mia applicazione OSX e ho fatto doppio clic su di esso.Perché la mia app Firemonkey apre una finestra di terminale su OSX ma non su Win32?

Questo, a sua volta, ha aperto una finestra di terminale per qualche motivo sconosciuto insieme al modulo della mia semplice app.
L'applicazione stessa funzionava e si comportava bene, ma sono curioso del perché una finestra del terminale si aprirà sul Mac?

+0

Immagino che abbia qualcosa a che fare con il 'libcgindwind dylib runtime file' che è stato distribuito con esso. – Johan

+0

Prontamente ammetto di essere un newb completo per Mac OSX, per mancanza di una parola migliore. con il dylib, l'applicazione non funzionava. I file dylib devono essere inseriti in una directory speciale? Devo 'installare' l'applicazione da qualche parte specifica sul Mac affinché funzioni correttamente? Queste sono le cose di cui non ho idea. – Alan

+0

mia moglie ha un MacBook e per quanto riguarda la mia conoscenza del Mac, penso che potresti provare a mettere questo problema davanti alla gente all'indirizzo http://apple.stackexchange.com/ – Johan

risposta

2

IIRC questo accade se si esegue il binario direttamente invece tramite un bundle

apps Lazarus/FPC avuto lo stesso problema. IIRC anche il binario direttamente eseguito non ha ottenuto eventi in quelle circostanze, ma quelle app erano basate sul carbonio. Questo problema è andato via anche quando è in esecuzione tramite una configurazione di bundle (che è praticamente un manifest, poche dirs e un link simbolico)

3

C'è uno strumento gratuito disponibile per Delphi XE2 che creerà il pacchetto di app di distribuzione OSX per te, da Windows, senza necessità di PAServer.

http://enesce.com/delphiosx_bundler

Controllare il readme per le istruzioni.

0

L'applicazione deve essere eseguita dal pacchetto dell'applicazione. Se lo esegui direttamente, avrai l'effetto collaterale di vedere la finestra del terminale con la riga di comando che sta eseguendo l'applicazione.

Avrai voglia di leggere di più su Application Bundles.

Se stai usando PAServer, dopo aver eseguito il programma per la prima volta su Mac, cercare nella seguente cartella del Mac per il pacchetto di applicazione:

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

Se il progetto è denominato Project1 , vedrai un pacchetto di applicazioni in quella cartella denominata Project1.

Se leggi l'articolo wiki sopra, saprai che Project1 ha un'estensione "nascosta" di .app, e l'intera cosa è in realtà una cartella con tutti i file richiesti per eseguire l'applicazione.

Per l'utente Mac OS, il pacchetto di applicazioni viene visualizzato come un singolo file di programma, completo di un'icona. L'utente può fare doppio clic sul pacchetto di applicazioni per eseguire l'applicazione, trascinarla al loro bacino, ecc

Il bundle applicazione avrà l'icona di Delphi per impostazione predefinita, ma è possibile sostituirlo con il proprio simbolo. Su Mac, è sufficiente fare clic con il tasto destro del mouse sul pacchetto di applicazioni nel Finder e selezionare Mostra contenuto pacchetto. In là, guarda nella cartella Contents/Resources per il file .icns.

Utilizzare l'applicazione Icon Composer installata con XCode per creare il file di icona .icns dai file di immagine esistenti.

Sbirciare dentro al resto del contenuto. Vedrai il dylib richiesto, il tuo file di programma e il file Info.plist, che è un file di testo con cose come ID applicazione, firme e altre cose importanti.

Problemi correlati