Volname único para DMG

Tenemos un proceso de compilación que ahora está haciendo el diseño común para los DMG distribuidos. Esto se hace de una manera que he visto en muchos lugares: se adjunta el DMG, luego Finder hace su trabajo a través de osascript. Sin embargo, el script debe hacer referencia a la imagen montada por su nombre de volumen y AFAICT, estos no son únicos. Dado que la máquina que está haciendo este trabajo no está dedicada a eso, me preocupa que ya tenga una imagen montada con el mismo nombre (probablemente, ya que la persona que trabaja con esta máquina también es cliente de los DMG generados).

¿Hay alguna forma de referirse a un disco de forma única en el osascript si, por ejemplo, conozco su dispositivo o su punto de montaje? ¿O tal vez hay alguna otra forma de resolver esto, como adjuntar una imagen con un volname diferente para que pueda pasar un nombre generado aleatoriamente?

(Me sorprende que no vi ninguna mención de esto en la web, así que tal vez me esté perdiendo algo más obvio).

¿ Quiere hacer referencia al <image name>.dmgo /Volumes/<volume name>?
@duci9y El script tiene tell disk <volname>y ese nombre podría no ser único.

Respuestas (1)

Después de mucho buscar y muchas maldiciones, creo que este es realmente un problema del que prácticamente nadie es consciente o preocupa. Aún así, pude encontrar una solución, no es genial, pero debería funcionar. La idea es montar el DMG en un directorio conocido con algún nombre aleatorio; este nombre (el último elemento en la -mountpointruta) será namepropiedad del disco. Entonces, al usar esto, recorro todos los discos y busco los que coinciden name; me quejo si no encuentro ninguno o más de uno; de lo contrario, tengo el objeto necesario listo para trabajar.

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 ...