1 votes

Comment monter un fichier .dmg avec JXA ?

J'ai fait l'AppleScript ci-dessous

tell application "DiskImageMounter"
    try
        open alias imagePath
    on error errText
        display dialog "Could not mount" & errText
    end try
end tell    

Je voudrais le refaire en JavaScript. J'ai essayé de trouver l'API actuelle dans la bibliothèque de l'éditeur script, mais je n'ai pas trouvé comment contrôler Disk Utility avec JavaScript.

Quelle est la syntaxe ou la référence pour s'interfacer avec l'Utilitaire de disque ou monter un fichier d'image disque à partir du cadre JXA ?

3voto

OnePablo Points 1

On n'utiliserait pas DiskImageMounter car, bien qu'il donne l'illusion d'être scriptable et chargé de commandes dans son dictionnaire AppleScript, il ne renvoie jamais une référence valide à une image qu'il ouvre ; AppleScript n'est donc jamais informé qu'il a fait le travail ; et DiskImageMounter s'en débarrasser, quitter, et invalider la connexion avec AppleScript en lançant une erreur. Et il fait ça à chaque. fois. fois. Donc, c'est des balles fiables.

Pour monter une image disque avec AppleScript, il faut utiliser une application que je recommande très rarement d'utiliser, sauf pour quelques tâches spécifiques, à savoir Finder . DiskImageMounter est la seule application moins fiable que Finder mais Finder est un trier, et il réussit à monter des volumes sans faire trop de bruit :

set f to POSIX file "/path/to/diskimage.dmg" as alias
tell application id "com.apple.Finder" to open f

Elle ne renvoie pas non plus une référence au volume monté, mais vous pouvez obtenir Finder pour énumérer les disques déjà montés au préalable, puis les énumérer à nouveau après, et le nouveau qui apparaît sera votre volume monté :

set f to POSIX file "/path/to/diskImage.dmg" as alias
tell application id "com.apple.Finder"
    set ejectables to disks

    open f

    repeat until disks != ejectables
        delay 1
    end repeat

    return the POSIX path of last item of (disks as alias list)
end tell

Enfin... Le JXA :

Finder=Application('com.apple.Finder');
f=Path('/path/to/diskImage.dmg');
Finder.open(f);

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