Wir haben einen Build-Prozess, der jetzt das allgemeine Layout für verteilte DMGs erstellt. Dies geschieht auf eine Weise, die ich an vielen Stellen gesehen habe – das DMG wird angehängt, dann erledigt der Finder seine Arbeit über Osascript. Das Skript muss sich jedoch auf das gemountete Image mit seinem Volume-Namen beziehen, und AFAICT, diese sind nicht eindeutig. Da die Maschine, die diese Arbeit ausführt, nicht dafür bestimmt ist, mache ich mir Sorgen, dass sie möglicherweise bereits ein gemountetes Image mit demselben Namen hat (wahrscheinlich, da die Person, die mit dieser Maschine arbeitet, auch ein Client der generierten DMGs ist).
Gibt es eine Möglichkeit, im Osascript eindeutig auf eine Festplatte zu verweisen, wenn ich beispielsweise ihr Gerät oder ihren Einhängepunkt kenne? Oder gibt es vielleicht eine andere Möglichkeit, dies zu lösen, z. B. das Anhängen eines Bildes mit einem anderen Volnamen, damit ich einen zufällig generierten Namen übergeben kann?
(Ich bin überrascht, dass ich im Internet keine Erwähnung davon gesehen habe, also übersehe ich vielleicht etwas Offensichtlicheres.)
Nach langem Suchen und vielem Fluchen denke ich, dass dies wirklich ein Problem ist, das praktisch niemandem bewusst ist oder sich darüber Sorgen macht. Trotzdem konnte ich eine Lösung finden, es ist nicht großartig, aber es sollte funktionieren. Die Idee ist, das DMG in einem bekannten Verzeichnis mit einem zufälligen Namen einzuhängen – dieser Name (das letzte Element im -mountpoint
Pfad) wird die name
Eigenschaft der Festplatte sein. Wenn ich das verwende, gehe ich also über alle Festplatten und suche nach denen mit einem passenden name
-- beschweren Sie sich, wenn ich keine oder mehr als eine finde, sonst habe ich das benötigte Objekt bereit, um damit zu arbeiten.
mnt="some-random-name-$$"
hdiutil attach -readwrite -noverify -noautoopen \
-mountpoint "/tmp/$mnt" "/tmp/out.dmg"
/usr/bin/osascript <<-EOF
tell application "Finder"
set myDisks to every disk of desktop
set theDMGDisk to ""
repeat with d in myDisks
if name of d = "$mnt"
if theDMGDisk = ""
set theDMGDisk to d
else
error "Too many attached DMGs found!"
end if
end if
end repeat
if theDMGDisk = "" then error "Attached DMG not found!"
-- found a single matching disk, continue
tell theDMGDisk
... etc ...
duci9y
<image name>.dmg
Sie möchten auf das oder verweisen/Volumes/<volume name>
?Eli Barzilay
tell disk <volname>
und dieser Name ist möglicherweise nicht eindeutig.