Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Software>Disk Image per Script erzeugen

Disk Image per Script erzeugen

Metti
Metti17.09.2210:23
Ich habe seinerzeit mal einen Tipp für ein Script zum Erzeugen von Disk Images erhalten:
Duck Dodgers 29.01.18 11:03Uhr
Für (Apple-)Script gibt es hier eine gute Beschreibung:
https://www.asmaloney.com/2013/07/howto/packaging-a-mac-os-x -application-using-a-dmg/

Ich habe das mal wieder rausgekramt und ausprobiert. Leider funktioniert das offenbar nicht mit aktuellem macOS. Zumindest gibt es bei mir Probleme beim Kopieren der ARM-Version meines Programs und beim anschließendem Komprimieren. Im Ergebnis ließ sich das Programm nicht starten und hatte eine von der Ursprungsdatei abweichende Größe.

Ich habe das Script dann mal mit zusätzlichen Pausen versehen und die Kopieraktionen von Hand im Finder durchgeführt. Funktionierte dann wie gewünscht. Danach konnte ich das Disk Image auch im Festplattendienstprogramm komprimieren ohne dass sich die Dateigröße der App verändert hat.

Leider habe ich von den Scriptbefehlen und den zugehörigen Parametern keine Ahnung.

Probleme bereitet vermutlich das:
# copy over the stuff we want in the final disk image to our staging dir
mkdir -p "${STAGING_DIR}"
cp -rpf "${APP_NAME}.app" "${STAGING_DIR}"
# ... cp anything else you want in the DMG - documentation, etc.

und abschließend beim Komprimieren der dmg Datei das:
# now make the final image a compressed disk image
echo "Creating compressed image"
hdiutil convert "${DMG_TMP}" -format UDZO -imagekey zlib-level=9 -o "${DMG_FINAL}"

Hat jemand eine Idee, was das Problem ist und eine Lösung dafür?
0

Kommentare

Marcel Bresink17.09.2210:50
Da Du außer "funktioniert offenbar nicht" kaum etwas über das Problem verrätst, kann man nichts dazu sagen.

Warum lässt sich das Programm nicht starten? Gibt es eine Fehlermeldung? Wenn ja, welche? Vielleicht ist die vorreservierte Größe der DMG-Datei einfach nur zu klein für das Programm.

Dass Programme auf verschiedenen Datenträgern verschiedene Größen haben, ist völlig normal. Die Art des Codes in den Dateien und die Betriebssystemversion können nichts mit dem Problem zu tun haben.

Das ist übrigens kein AppleScript, sondern ein richtiges Unix-Script. Das einzige, was man an dem Script bemängeln könnte, ist, dass die Aufrufe der Programme sich auf den eingestellten Suchpfad verlassen. Ein Hacker könnte den Ablauf angreifen, indem er Schadprogramme mit gleichlautenden Namen in Ordner legt, die sich im Suchpfad befinden. Eigentlich sollte es zum Beispiel "/bin/mkdir" statt "mkdir" heißen, oder "/usr/bin/hdiutil" statt "hdiutil". Aber das ist eher von akademischem Interesse.
+1
Der Schorsch17.09.2212:29
Man kann sich ganz viel Arbeit sparen, wenn man sich dazu ein Tool wie DMG Canvas https://www.araelium.com/dmgcanvas anschafft.

Das hat auch eine Kommandozeile.
+1
ffffummpp17.09.2213:32
Einige Finder-Alternativen haben das auch als Funktion eingebaut.
+1
Metti
Metti17.09.2216:07
Vielen Dank für die Antworten.

Das Problem mit zu kleinem Disk Image hatte ich zu Anfang schnell bemerkt. Dann lief auch scheinbar alles korrekt. Zumindest sah das Fenster so aus, wie ich es haben wollte. Allerdings kam beim Start des Programms dann der Hinweis, dass die Datei defekt ist. Ein Vergleich der Dateigröße zeigte dann, dass das Programm im Disk Image etwas Größer war als im Original.

Ich habe dann das Script einen Großteil durchlaufen lassen, Pausen eingefügt und die Kopieraktionen dann im Finder gemacht. Das funktionierte. Allerdings nur, wenn ich es nicht komprimieren ließ. Das habe ich dann schließlich im Festplattendienstprogramm gemacht.
Geht. Aber alles über das Script laufen zu lassen ist schon komfortabler.

Vom Schorsch ist aber der richtige Hinweis gekommen. DMG Canvas ist ein schönes Tool. So schön, dass ich das sogar schon habe

Vielen Dank für die Unterstützung!

Die Variante mit dem Script gefällt mir aber eigentlich ganz gut. Wenn also noch jemand Ideen hat, warum es Probleme beim Kopieren und Komprmieren gibt, würde ich das noch mal testen.
0
Metti
Metti17.09.2216:11
Hier noch Bilder zum Problem (dass es eine Datei ist, die ich vom FTP-Server geladen habe macht keinen Unterschied, war die erste Datei, die ich von Defekten gefunden habe):


Hier die unterschiedlichen Dateigrößen. Links die Datei nach dem Scriptlauf.
0
Marcel Bresink18.09.2209:50
In dem Fall ist die wahrscheinlichste Ursache, dass das Disk Image mindestens 12 MB zu klein ist.
0
ssb
ssb18.09.2211:22
Ich hatte bei github ein recht gutes Script gefunden, dass sogar Icons und SLA setzen kann usw. Das war auch per homebrew verfügbar. Ich kann mal nachschauen, wie das heißt.
Für das Kopieren von Apps solltest du aber eher ditto verwenden statt cp. Ich vermute, dass deine App signiert ist und je nach Dateisystem werden die Infos zur Signatur an verschiedenen Orten gespeichert und manche können dabei auch verloren gehen. Beim Prüfen der Signaturen passt es dann nicht mehr und Gatekeeper bricht den Start ab. Wenn du das dann über das Web verteilen willst, solltest du es dann auch noch Notarisieren.
0
ssb
ssb18.09.2219:14
Manche Dinge sind zu einfach, um sich daran zu erinnern

Das Projekt heißt "create-dmg". Näheres hier:
0
Metti
Metti19.09.2221:08
Signatur und Notarisieren sind zwei Stichworte, die ich bisher schön ignoriert habe
Bisher habe ich es gescheut, mich als Entwickler von Freeware für einen Entwickleraccount 99,-$ aus zu geben. Darum habe ich mich auch nie bemüht in den App Store zu gelangen.
Allerdings werde ich auf lange Sicht wohl kaum um Signierung und Notarisierung herum kommen.

Habe ich das korrekt verstanden, dass ich dafür keinen (kostenpflichtigen) Entwickleraccount benötige?
Gibt es eine einfache Möglichkeit, beides recht einfach für ein Programm zu generieren?
So wie DMG Canvas einem viel Arbeit abnimmt und Geld kostet, wäre ich für ein Klickibunti-Tool bereit Geld aus zu geben.

Irgendwelche Tipps?
0
ssb
ssb19.09.2222:50
Für einen Release brauchst du den Entwickleraccount. Via AppStore muss ja nicht sein, du kannst auch ein App-Developer-Zertifikat erstellen und damit signieren und an anderer Stelle hosten. Ohne Signatur kannst du nicht Notarisieren und damit bekommt jeder, der sich von dir was runterlädt entsprechende Warnungen/Fehler von Gatekeeper wegen des Quarantine-Flags. Aber du kannst das natürlich auch ohne bereitstellen und den Interessenten die Warnmeldungen erklären und hoffen, dass sie dir vertrauen.
Über den AppStore hast du das Problem nicht, da wirst du aber auch kein DMG bereitstellen

Ansonsten ist das create-dmg für deine Zwecke gut geeignet. Klappt recht gut.
0
Weia
Weia19.09.2223:12
Metti
Gibt es eine einfache Möglichkeit, beides recht einfach für ein Programm zu generieren?
Natürlich nicht; das macht Apple. Der Sinn einer Zertifikatskette ist doch gerade, den Autor zurückverfolgen zu können. Wenn Du das selbst machen könntest, wäre das so viel wert wie ein selbstsigniertes Email-Zertifikat – nämlich gar nichts.
„“I don’t care” is such an easy lie. (The Warning, “Satisfied”)“
0
Metti
Metti21.09.2221:14
Ich habe mich leider etwas missverständlich ausgedrückt.

Als die Notarisierung eingeführt wurde, habe ich mich mal kurz damit auseinander gesetzt. Dafür hatte ich auch irgend ein Tool. Ich bin mir recht sicher, dass es App Wrapper war. Aus mir nicht mehr bekanntem Grund habe ich das irgendwann nicht mehr verfolgt. Vermutlich, weil ich dafür einen kostenpflichtigen Entwickleraccound als Voraussetzung gesehen habe.

Meine Fragen wären:
Brauche ich für Codesignierung und Notarisierung zwingend einen kostenpflichtigen Entwickleraccount oder reicht die kostenlose Anmeldung, mit der ich auch Xcode bekomme?
Gibt es ein Tool, dass mir die Arbeit erleichtert (App in die Anwendung ziehen, Account-Daten eingeben, Button drücken Programm schickt App an Apple und bekommt sie notarisiert zurück)?

Das die Signierung und Notarisierung nur durch Apple sinnvoll ist, habe ich durchaus verstanden. Derzeit muss der Anwender halt mit den Hürden leben, die Apple für unsignierte Apps (berechtigter Weise) errichtet hat. Ich würde es dem Anwender gern erleichtern. Sofern die Kosten im Rahmen bleiben (99,-$ für Freeware jährlich an Apple zu zahlen geht über meinen Enthusiasmus hinaus).
0
Weia
Weia21.09.2222:38
Metti
Brauche ich für Codesignierung und Notarisierung zwingend einen kostenpflichtigen Entwickleraccount
Ja. Du brauchst ein digitales Zertifikat. Niemand stellt Dir ein (vertrauenswürdiges) digitales Zertifikat umsonst aus.
Gibt es ein Tool, dass mir die Arbeit erleichtert (App in die Anwendung ziehen, Account-Daten eingeben, Button drücken Programm schickt App an Apple und bekommt sie notarisiert zurück)?
Ja. Heißt Xcode. 🙄
„“I don’t care” is such an easy lie. (The Warning, “Satisfied”)“
0
Metti
Metti22.09.2205:19
Weia
Metti
Brauche ich für Codesignierung und Notarisierung zwingend einen kostenpflichtigen Entwickleraccount
Ja. Du brauchst ein digitales Zertifikat. Niemand stellt Dir ein (vertrauenswürdiges) digitales Zertifikat umsonst aus.

Klingt logisch. Dann bleibt es, wie es ist.
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.