2 votes

Nom de vol unique pour les DMG

Nous avons un processus de construction qui fait maintenant la mise en page commune pour les DMGs distribués. Cela est fait d'une manière que j'ai vue dans de nombreux endroits - le DMG est attaché, puis Finder fait son travail via osascript. Cependant, le script doit faire référence à l'image montée par son nom de volume, et AFAICT, ceux-ci ne sont pas uniques. Étant donné que la machine qui effectue ce travail n'est pas dédiée à cela, je crains qu'elle puisse déjà avoir une image montée du même nom (probable, puisque la personne qui travaille avec cette machine est également un client des DMG générés).

Existe-t-il un moyen de faire référence à un disque de manière unique dans osascript si, par exemple, je connais son périphérique ou son point de montage ? Ou peut-être existe-t-il un autre moyen de résoudre ce problème, par exemple en joignant une image avec un nom de disque différent afin de pouvoir transmettre un nom généré au hasard ?

(Je suis surpris de n'avoir vu aucune mention de cela sur le web, alors peut-être que je rate quelque chose de plus évident).

1voto

lazyden Points 264

Après de nombreuses recherches et beaucoup de jurons, je pense qu'il s'agit vraiment d'un problème dont pratiquement personne n'est conscient ou ne se préoccupe. J'ai quand même réussi à trouver une solution, elle n'est pas géniale, mais elle devrait fonctionner. L'idée est de monter le DMG dans un répertoire connu avec un nom aléatoire -- ce nom (le dernier élément de l'extension -mountpoint ) sera le name du disque. En utilisant cette méthode, je passe en revue tous les disques et je cherche ceux qui ont la même propriété. name -- se plaindre si je n'en trouve aucun ou plus d'un, sinon, j'ai l'objet nécessaire prêt à être utilisé.

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

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X