OS X Installationspakete erzeugen


Hier wird gezeigt wie einfach es ist mit dem Mac Installationspakete zu erzeugen.

Advertisements

Für Anwender ist es immer angenehmer ein Installationspaket zu haben. Das ist immer ein besseres Gefühl als irgendetwas irgendwohin zu kopieren.

Üblicherweise werden die Programme für den Mac als DMG angeboten. In diesen Disk Images sind dann die APPS versteckt. Die Installation des Programms ist dann auch ganz einfach. Mit der linken Maustaste das Programm-Icon packen und über dem Programm Ordner loslassen. Dadurch wird die Anwendung in das Programmverzeichnis kopiert und kann dort ab sofort gestartet werden. In vielen der DMG’s ist zusätzlich zu den Programmen auch eine Verknüpfung zu dem Programm-Verzeichnis vorhanden.

Wenn man selbst Programme schreibt muss man also einfach ein Disk Image erzeugen und kann dieses zum Download zur Verfügung stellen. Das ist recht einfach.

Hier die Anleitung

  1. Ein Diskimage erstellen.
    Das kann am einfachsten mit dem GUI-Tool „Festplattendienstprogramm“ aus dem Ordner „Dienstprogramme“ bewerkstelligt werden.
    Einfach dieses Programm starten und aus der Toolbar „Neues Image“ wählen…
    Alternativ kann das Image auch mit dem Kommandozeilenwerkzeug „hdiutil“ erzeugt werden. Im dem geöffnetem Terminal erzeugt der Befehl „hdiutil create -size 10m /tmp/tmp.dmg -ov -fs HFS+“ ein neues Image mit dem Namen „tmp.dmg“ in dem „/tmp“ Ordner. Die maximale Größe ist in diesem Beispiel 10MB.
  2. Das Image mounten (anklicken)
    Das klingt kompliziert ist aber einfach. Ich hier davon aus das Image ist in dem „/tmp“ Ordner. Im Finder mit „Gehe zu“ in den „/tmp“ Ordner wechseln und mit einem Doppelklick das Diskimage öffnen. Dadurch wird das Laufwerkssymbol auf dem Desktop angezeigt und lässt sich in dem Finder Fenster direkt anwählen.
  3. Mit Xcode ein install generieren lassen.
    XCode hat auch ein Kommandozeilenwerkzeug. Dieses wird jetzt benötigt. Mit „xcodebuild“ erzeugen wir jetzt ein zur Installation vorgesehene Version unseres Projektes. Dafür brauchen wir das Terminal und müssen in das Verzeichnis wechseln in dem unser Projekt zu Hause ist. Mit dem Befehl „xcodebuild clean install“ räumen wir zuerst auf, danach wir ein neues komplettes Build durchgeführt. Das Ergebnis landet aber diesesmal nicht in den tiefen des Library-Verzeichnisses sondern in „/tmp“. Da sind wir bereits im Finder. Durch den Aufruf von xcodebuild wurde hier ein neues Verzeichnis erzeugt. Dieses Verzeichnis trägt den Namen des Projekts mit dem Anhang „.dst“. In diesem Verzeichnis finden wir unsere für den nächsten Schritt benötigten Dateien.
  4. Das Programm in das Image kopieren.
    In dem oben genannten Verzeichnis existiert ein Unterordner. Dieser hat den nicht sehr überraschenden Namen „Applications“. Alles was hier zu finden ist muss in das neue Diskimage kopiert werden. Zusätzlich könnten hierher noch eine Versionshistorie und die Lizenzinformationen landen.
  5. Einen symbolischen Link auf das Programmverzeichnis generieren.
    Da wir die Vorgänge für unsere Anwender so einfach wie möglich gestalten wollen stellen wir noch einen Link zu dem Anwendungen Verzeichnis zur Verfügung. Jetzt kommen wir aber ohne die  Kommandozeile nicht mehr weiter. Zuerst müssen wir in das Diskimage wechseln. Da funktioniert über den Befehl „cd /Volumes/„. Da wir keinen Namen vergeben hatten lautet dieser bei uns „untitled“. Jetzt könnten wir kurz und knackig den symbolischen Link erzeugen. Dafür geben wir in die Befehlszeile: „ln -s /Applications Applications“ ein.
  6. Kopieren ins Projektverzeichnis
    Alles was in dem Verzeichnis „/tmp“ steht lebt nur bis zum nächsten Reboot. Deswegen müssen wir unser neues Werk als letzten Schritt noch in das Projektverzeichnis oder anders Verzeichnis unserer Wahl kopieren.
  7. Abschluß
    Das war alles. Jetzt haben wir ein fertiges professionell aussehenden Paket zur Installation unseres Programms erzeugt. Dieses Paket können wir schön verbreiten.

CMake und OS X


CMake ist ein sehr nützliches Werkzeug. Mit diesem Tool wird die Entwicklung von Programmen sehr erleichtert.
Dieses Werkzeug wird von Kitware als Opensource vertrieben und steht über diese Adresse  http://www.cmake.org/cmake/resources/software.html zum Download bereit. Ursprünglich kommt das Werkzeug aus der Linux-Ecke. Allerdings steht es auch für Windows und für den OS X zur Verfügung. Wobei Mac OS X der interessante Teil für mich ist.

Installation

Nach dem Download steht auf dem Mac ein DMG in dem Download Ordner bereit. Nach dem dieses Disk-Image durch einen Doppelklick geöffnet wurde kann man es einfach installieren. Bei der Installation wird angeboten einen symbolischen Link für die Kommando-Zeile zur Verfügung zu stellen. Das macht absolut Sinn. Außer man ist geneigt für jeden Kommandozeilen Aufruf richtig viel zu tippen. Die Eingabe würde ohne den symbolischen Link auch den kompletten Pfad, einschließlich den Pfad in der App erfordern.

Nutzung

Am leichtesten lässt sich CMake mit der Hilfe des mitgelieferten GUI-Tools nutzen. Damit ist schnell und einfach die notwendige Datei CListMake.txt zu erzeugen. Diese Datei ist notwendig um das Makefile zu generieren. So lassen sich mit ein paar einfachen leicht zu verstehenden Befehlen komplizierte Projekte erstellen. Das geht sogar so weit dass ein Zusatzmodul dabei ist mit dem sich die Paketskript erzeugen lassen. Also kann man aus der CListMake.txt Datei erzeugte Programme gleich in die folgenden Pakete zusammenpacken:
  • TGZ
  • STGZ
  • TBZ2
  • TZ
  • ZIP
  • NSIS
  • DragNDrop (OSX)
  • PackageMaker (OSX)
  • OSXX1 (OSX)
  • Bundle (OSX)
  • CygwinBinary und CygwinSource
  • DEB (Linux)
  • RPM (Linux) 
Ich gebe zu das ist sehr beeindruckend. Allerdings werde ich trotzdem nicht damit arbeiten. Warum ist im nächsten Abschnitt zu lesen.

Fazit

Nach dem die „großen“ Qt und Xcodehttps://developer.apple.com/xcode/ ein durchdachtes Konzept für die IDE’s zur Programm Kompilierung eingesetzt haben macht CMake nicht mehr richtig Sinn. In der Umgebung in der ich arbeite schon einmal gar nicht. CMake macht hier aus einem „freien“ Projekt ein Xcode Projekt. Da kann man sein Projekt doch gleich in der richtigen Umgebung starten. Ich glaube es würde niemand auf die Idee kommen sein Projekt frei aufzusetzen. Zumal die aktuellen Projekte, die mit GUI, sehr aufwändig sind. 

Mono die ersten Schritte


Da ich bereits eine paar Erfahrungen in Java gesammelt hatte dachte ich eigentlich Mono sollte kein Problem darstellen. Doch das ist weit gefehlt. Da besteht doch ein weiter unterschied. Das sehr verschiedene Dialekte.

IDE’s


Die Standard IDE für Mono ist im Linux und Mac Umfeld MonoDevelop. Es gibt diese IDE auch für Windows. Trotzdem gehe ich davon aus dass für Windows SharpDevelop der Standard ist. Das ist aber bei Windows nicht eindeutig festzulegen weil Microsoft die ganze .NET Welt erschaffen hat. Selbstverständlich wird von Microsoft hier auch eine IDE angeboten. VisualStudio gibt es in einer freien hier „Express“ genannten Version und zu kaufen.

Monodevelop


Im Windows Umfeld bewege ich mich nur noch an meinem Arbeitsplatz. Zu Hause sitze ich vor meinem Mac. Auf dem läuft in der VirtualBox auch Linux. Also gehe ich jetzt nur noch auf MonoDevelop ein. Obwohl ich auf meinem Arbeitsplatz PC SharpDevelop installiert habe. MonoDevelop ist einfach zu installieren. Das trifft sowohl auf die Linux Umgebung zu, wie auch auf dem Mac. Bei Linux ist das einfach ein Paket in der Paketverwaltung für den Mac ist auf der Mono-Projekt-Seite ein Paket mit der Runtime und dem SDK vorhanden das alles was das Herz begehrt enthält. Die MonoDevelop muss extra heruntergeladen und installiert werden. Dieses Programm  prüft hier sogar ob eine neuere Version der IDE zur Verfügung steht. Wenn dies der Fall ist so wird angeboten diese herunter zuladen und anschließend zu installieren.
Für Windows gibt es eine GTK-Spezial Version für .NET.

Der Beginn


Wenn die Laufzeitumgebung von Mono und die IDE installiert sind kann es direkt losgehen. Die Laufzeitumgebung ist komplett. Das bedeutet es ist eine Kommandozeilen Schnittstelle vorhanden. Für die Darstellung grafischer Elemente, das GUI, sind für jede Plattform die GTK Bibliotheken vorhanden. Das ist besonders praktisch wenn man Programme einwickeln will die überall laufen. Sollte man bei Windows den Wunsch verspüren anstelle von GTK das Original .NET-Paket zu verwenden kann man die leichte Version von Mono installieren. Außerdem ist es sinnvoll Programme die rein in der Windows Umgebung laufen soll mit der SharpDevelop IDE zu entwickeln. SharpDevelop erlaubt es die WinForms zu verwenden.

Die Möglichkeiten


Für den Mac stehen diese Projektvorlagen bereit:

Bei Linux fehlen die Einträge „Mono für Android“, „MonoMac“ und „Mono Touch“. Selbstverständlich stehen unter Linux Pakete bereit um die Möglichkeiten hier zu erhöhen.

Das erste Projekt


Zum Testen und probieren gibt es zu Glück auf der Mono-Prejekt-Seite ein GTK Projekt. Das habe ich versucht mit der Mac IDE nachzubauen. Dabei musste ich leider feststellen dass die IDE wackelt. Sie stürzt leider bei dem Zusammenflicken der GUI ab. Ich habe dann die GUI in der VirtualBox gebastelt dann hat alles funktioniert. Allerdings sind bei meiner realen Maschine (Mac) und der Virtuellen Maschine (Linux) die SDK Versionen nicht gleich. Deswegen kann man zwar Projekt in beiden Systemen abwechselnd bearbeitet aber nur beim Mac bauen.

Fazit
Es macht sogar Spaß etwas mit Mono zu machen. Und das obwohl ich mich eigentlich immer gegen .NET gewehrt hatte. Vielleicht hat mich der Umstieg zum Mac in dieser Richtung geläutert. Ein kleiner Zwang besteht natürlich auch hier, Microsoft lässt die alten Programmsprachen für die Systemverwaltung sterben. Also habe ich keine Lust mehr mich mit „CMD“ und „VBS“ auseinanderzusetzen. Mein primäres System ist der Mac. Trotzdem möchte ich ein SDK nutzen das es mir ermöglicht für alle Plattformen etwas zu machen. Java scheint mir im Moment etwas halbherzig vorangebracht zu werden. Was soll ich sagen, Mono fängt bereits an ein wenig Spaß zu machen.