Volname único para DMGs

2

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: el DMG está adjunto, luego Finder hace su trabajo a través de osascript. Sin embargo, el script debe referirse 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 un cliente de los DMG generados). / p>

¿Hay alguna forma de referirse a un disco únicamente en el osascript si, por ejemplo, conozco su dispositivo o su punto de montaje? ¿O tal vez haya 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 haya visto ninguna mención de esto en la web, así que tal vez me esté perdiendo algo más obvio).

    
pregunta Eli Barzilay 13.01.2013 - 19:06

1 respuesta

1

Después de mucha búsqueda y muchas maldiciones, creo que este es realmente un problema que prácticamente nadie está consciente o preocupado. 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 ruta -mountpoint ) será la propiedad name del disco. Por lo tanto, al usar esto, recorro todos los discos y busco los que tienen un name coincidente. 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 ...
    
respondido por el Eli Barzilay 13.01.2013 - 23:03

Lea otras preguntas en las etiquetas