MacOS Anwendung nutzen?

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Rawi
Beiträge: 14
Registriert: Sa 31. Mär 2018, 17:39

MacOS Anwendung nutzen?

Beitrag von Rawi »

Hi zusammen,

ich habe bisher immer unter Windows mit Lazarus programmiert. Wenn ich ein Programm fertig hatte, dann habe ich einfach die .exe Datei aus dem gespeicherten Ordner kopiert und fertig war mein Programm, dass ich auch an Freunde verschicken konnte.
Nun habe ich Lazarus auf meinem Mac installiert. Es läuft einwandfrei. Das Starten innerhalb von Lazarus funktioniert einwandfrei. Auch wenn ich die Anwendungsdatei im Ordner anklicke startet mein Programm fehlerfrei.
Mein Problem: Ich kann die Anwendung aber nicht einfach aus dem Ordner heraus kopieren. Wenn ich dies tue und sie woanders ablege, dann erhalte ich ein Fehler ("Kann nicht ausgeführt werden, da unvollständig oder defekt" so ähnlich halt).

Muss ich etwas Spezielles tun, damit das möglich ist? Oder brauche ich ein extra Program?

Danke
Rawi

mintpc
Beiträge: 124
Registriert: Mo 6. Sep 2010, 18:39
OS, Lazarus, FPC: Win 7 (L 1.6 FPC 3.0.0)
CPU-Target: Win 7
Wohnort: Mailand

Re: MacOS Anwendung nutzen?

Beitrag von mintpc »

Hi, du brauchst 2 Dateien. Die eine klickst du an, und in der anderen steht alles andere.
Ich weiß leider nicht, welche Endung die beiden Dateien haben.

Du bekommst da aber raus, indem du aus dem Ordner mit dem Lazarus-Projekt nacheinander
eine Datei nach der anderen löscht und testest, ob dein Programm noch funktioniert.
Wenn nicht mehr geht, hast du die richtige Datei gelöscht.

So hatte ich das mal für einen Schüler rausbekommen.

Kannst ja hier mal reinschreiben, welche Dateien das dann sind.

shokwave
Beiträge: 470
Registriert: Do 15. Nov 2007, 16:58
OS, Lazarus, FPC: Win11/Ubuntu Budgie (L 3.0 FPC 3.2.2)
CPU-Target: i386, x64
Wohnort: Gera

Re: MacOS Anwendung nutzen?

Beitrag von shokwave »

Wenn ich mich Recht entsinne liegt das eigentliche Binary (schwarzes Icon, ohne Endung) direkt im Projektverzeichnis zusammen mit dem "AppBundle" (helles Icon, .app, wird aber nicht angezeigt, sieht man aber im Terminal). Letzteres ist ein Verzeichnis welches nur speziell von MacOS behandelt wird. Darin befinden sich die ganzen Metadaten, wie das Icon, und normalerweise auch das Binary. Doch statt dem Binary haben Lazarusprogramm eine Verknüpfung zum Binary im AppBundle.

Das AppBundle lässt sich im Finder mit RMT->"Paketinhalt zeigen" öffnen und in Contents/MacOS kannst du die Verknüpfung mit dem Binary ersetzten und anschließend das AppBundle verteilen.

Hoffe das hilft dir weiter.
mfg Ingo

Rawi
Beiträge: 14
Registriert: Sa 31. Mär 2018, 17:39

Re: MacOS Anwendung nutzen?

Beitrag von Rawi »

shokwave hat geschrieben:Wenn ich mich Recht entsinne liegt das eigentliche Binary (schwarzes Icon, ohne Endung) direkt im Projektverzeichnis zusammen mit dem "AppBundle" (helles Icon, .app, wird aber nicht angezeigt, sieht man aber im Terminal). Letzteres ist ein Verzeichnis welches nur speziell von MacOS behandelt wird. Darin befinden sich die ganzen Metadaten, wie das Icon, und normalerweise auch das Binary. Doch statt dem Binary haben Lazarusprogramm eine Verknüpfung zum Binary im AppBundle.

Das AppBundle lässt sich im Finder mit RMT->"Paketinhalt zeigen" öffnen und in Contents/MacOS kannst du die Verknüpfung mit dem Binary ersetzten und anschließend das AppBundle verteilen.

Hoffe das hilft dir weiter.


Erstmal vielen Dank.
Es ist mir ein bisschen unangenehm nochmal zu fragen, aber ich hab leider nicht so viel verstanden. Wie genau kann ich dieses AppBundle finden und was ist das Binary? Was sind die Contents und wie soll ich das Binary ersetzen?
Tut mir wirklich leid... Ich hab dem Mac noch so meine Schwierigkeiten.

shokwave
Beiträge: 470
Registriert: Do 15. Nov 2007, 16:58
OS, Lazarus, FPC: Win11/Ubuntu Budgie (L 3.0 FPC 3.2.2)
CPU-Target: i386, x64
Wohnort: Gera

Re: MacOS Anwendung nutzen?

Beitrag von shokwave »

Rawi hat geschrieben:Erstmal vielen Dank.
Es ist mir ein bisschen unangenehm nochmal zu fragen, aber ich hab leider nicht so viel verstanden.


Ich hab es auch nicht wirklich gut erklärt. :mrgreen:

Also, in deinem Projektverzeichnis hast du 2 "Dateien" ohne Endung.
1. das Binary - das eigentliche Programm, zu erkennen an dem schwarzen Icon und hat wirklich keine Dateiendung
2. das AppBundle - ein spezielles Verzeichnis wo das Binary hineingehört, zu erkennen an dem hellen Icon und hat die Dateiendung ".app" welche aber vom Finder ausgeblendet wird

Wenn du dein Programm weitergeben möchtest, solltest du wie folgt vorgehen:
1. RMT(rechte Maustaste) auf das Binary und "xxx kopieren" auswählen
2. RMT auf das AppBundle und "Paketinhalt zeigen" wählen
3. Daraufhin wird der Inhalt des AppBundle angezeigt, da gibt es einen Ordner "Contents" und darin wiederum einen Ordner "MacOS"
4. RMT auf den Ordner "MacOS" und "Objekt einsetzen" wählen und den folgenden Dialog mit "ersetzen" beantworten

Jetzt kannst du das AppBundle weitergeben.

Ich hoffe es ist jetzt verständlicher was ich meinte.
mfg Ingo

Warf
Beiträge: 1908
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: MacOS Anwendung nutzen?

Beitrag von Warf »

Ein App Bundle ist ein Ordner mit Dateiendung .app. Eine ELF Executeable unter unix hat i.d.r. keine Endung. Wenn du ein Projekt kompilierst erstellt Lazarus unter OSX (für GUI Anwendungen) für gewöhnlich sowohl das APP Bundle als auch die executable. Wenn du im Finder die Dateien anzeigen lässt heißen beide so wie dein Projekt (z.B. Projekt1) denn der Finder in OSX blendet die Endung .app automatisch aus. Im Terminal via ls würdest du die .app Endung allerdings sehen. Die executable hat dabei ein schwarzes icon bei dem links oben grün in der ecke exec steht, das App bundle hat das Icon das du in lazarus eingestellt hast (oder das leere icon was ein weißes Rechteck mit einem A aus Stift Pinsel und Lineal ist).

Die Executeable ist dein eigentliches Program, allerdings ohne App bundle wird es immer in einem Terminal ausgeführt, selbst wenn es eine gui Anwendung ist (für manche Anwendungen eventuell gewollt). Das App Bundle hingegen bildet eine Ordnerstruktur mit allen erforderlichen Informationen z.B. sagt es dem Betriebsystem das kein Terminal angezeigt werden muss. Gleichzeitig kannst du in diesem App bundle diverse Ressourcen (Bilder, Bibliotheken, etc.) unterbringen, und ist Apples Ansatz um die DLL Hell von Windows zu umgehen. In dem App Bundle (es ist ja nach wie vor nur ein Ordner mit Dateiendung) ist ein Ordner Contents und in dem ist ein Ordner MacOS. Dort befindet sich ein SYMLink auf die executeable drin. Der ist der Grund warum es nur funktioniert wenn das Bundle und die Exec im selben Ordner sind. Während dem testen solltest du das auch so lassen. Wenn du deine Anwendung jetzt verwenden willst musst du einfach den SymLink durch die echte Exec ersetzen und du kannst das App Bundle wie jedes andere auf deinem Mac verwenden.

Etwas umständlich in lazarus umgesetzt, aber an sich hat das Bundle System einige Vorteile (und ist im Gegensatz zu windows .exe Format deutlich zugänglicher)

Rawi
Beiträge: 14
Registriert: Sa 31. Mär 2018, 17:39

Re: MacOS Anwendung nutzen?

Beitrag von Rawi »

Jetzt hats geklappt. :)
Dankeschön.

Antworten