Volname unico per DMG

2

Abbiamo un processo di compilazione che ora sta facendo il layout comune per i DMG distribuiti. Ciò avviene in un modo che ho visto in molti posti: il DMG è collegato, quindi Finder fa il suo lavoro tramite osascript. Tuttavia, lo script deve fare riferimento all'immagine montata per il suo nome del volume e AFAICT, questi non sono univoci. Poiché la macchina che sta facendo questo lavoro non è dedicata a questo, temo che potrebbe avere già un'immagine montata con lo stesso nome (probabilmente, dal momento che la persona che lavora con questa macchina è anche un client dei DMG generati).

Esiste un modo per fare riferimento a un disco in modo univoco nell'osScript se, ad esempio, conosco il suo dispositivo o il suo punto di montaggio? O forse c'è un altro modo per risolvere questo problema, come allegare un'immagine con un diverso nome, così posso passare un nome generato a caso?

(Sono sorpreso che non ho visto alcuna menzione di questo sul web, quindi forse mi manca qualcosa di più ovvio.)

    
posta Eli Barzilay 13.01.2013 - 19:06
fonte

1 risposta

1

Dopo molte ricerche e molte imprecazioni, penso che questo sia davvero un problema di cui praticamente nessuno è a conoscenza o preoccupato. Tuttavia, sono stato in grado di trovare una soluzione, non è eccezionale, ma dovrebbe funzionare. L'idea è di montare il DMG in una directory conosciuta con un nome casuale - questo nome (l'ultimo elemento nel percorso -mountpoint ) sarà la proprietà name del disco. Quindi, usando questo comando, percorro tutti i dischi e cerco quelli con una percentuale corrispondente diname - protesta se trovo nessuno o più di uno, altrimenti, ho l'oggetto necessario pronto per lavorare.

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 ...
    
risposta data 13.01.2013 - 23:03
fonte

Leggi altre domande sui tag