diskutil, NSTask et NSPipe

Bonjour à  tous



Je teste en ce moment pas mal de distributions Linux,BSD et autres et, pour éviter de graver un CD à  chaque fois, j'utilise une clé USB. Pour "graver" l'image disque (souvent en .iso), j'utilise une procédure en ligne de commande :



diskutil list pour connaà®tre la liste des disques du mac et pour repérer la clé (qui est souvent /dev/disk1)

puis

diskutil unmountDisk /dev/disk1 pour démonter la clé



et pour finir



sudo dd if=/chemin/vers/image.iso of=/dev/disk1 pour "graver" l'image.



Cette procédure marche bien et me donne satisfaction. Seulement, je souhaiterai faire une interface graphique. Pour ce faire, j'ai fait un premier essai sur la première partie de la procédure. Je souhaite récupérer dans une NSString (que je pourrai traiter par la suite) la réponse de "diskutil list". J'ai donc entré le code suivant :
<br />
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {<br />
NSData* data;<br />
NSTask *task=[[NSTask alloc]init];<br />
NSPipe *pipe=[[NSPipe alloc]init];<br />
<br />
NSString *command=@&quot;diskutil&quot;;<br />
[task setLaunchPath:command];<br />
[task setArguments:[NSArray arrayWithObject:@&quot;list&quot;]];<br />
[task setStandardOutput:pipe];<br />
[task launch];<br />
data= [[pipe fileHandleForReading]readDataToEndOfFile];<br />
NSString *answer=[[NSString alloc]initWithData:data encoding:NSASCIIStringEncoding];<br />
NSLog(@&quot;%@&quot;,answer);<br />
}<br />




et j'ai dans la console le message suivant :


<br />
2013-03-03 11:09:16.994 BurnUSB[1684:a0f] launch path not accessible<br />




Je pense qu'il a besoin du chemin complet du programme diskutil mais j'ai beau fouiller mon disque dur, je ne le trouve pas (et même en affichant les fichiers cachés) . Alors, comment faire ?

Réponses

  • Euhh, en fait, j'ai demandé à  mon "ami" et j'ai trouvé ma réponse : c'est "/usr/sbin/diskutil". :oups: Je laisse ce sujet ouvert, je ne pense pas être au bout de mes peines ...
  • yoannyoann Membre
    Et sinon l'utilitaire de disque dans le dossier Applications/Utilitaires ?
  • L'utilitaire de disque est extrêmement capricieux. Il n'accepte que les fichiers réalisés à  partir de disques Mac OS. C'est pourquoi j'utilise la procédure en ligne de commande qui est universelle. Mais tout ceci est en fait le prétexte au développement d'une application mettant en pratique la ligne de commande dans une application Objective C/Cocoa.
  • AliGatorAliGator Membre, Modérateur
    mars 2013 modifié #5
    Sinon astuce du jour : si tu lances un terminal, avec la commande "which" tu peux savoir où le terminal va chercher une commande si tu la tapes directement. Par exemple "which diskutil" va te répondre "/usr/sbin/diskutil", puisqu'il va chercher dans les différents chemins qui sont dans ton $PATH pour trouver le binaire et te dire dans quel dossier il l'a trouvé.
  • yoannyoann Membre


    L'utilitaire de disque est extrêmement capricieux. Il n'accepte que les fichiers réalisés à  partir de disques Mac OS. C'est pourquoi j'utilise la procédure en ligne de commande qui est universelle. Mais tout ceci est en fait le prétexte au développement d'une application mettant en pratique la ligne de commande dans une application Objective C/Cocoa.




    Effectivement, avec l'utilitaire de disque il faut d'abord convertir le fichier iso en fichier dmg et l'analyser pour une procédure de restauration. Mais ça marche quand même et c'est plus rapide et fiable IMHO que de se développer une application qui joue avec de la détection de clef et du dd...
  • Pas d'accord ! L'utilitaire de disque refuse catégoriquement de graver une image Linux sur USB, même convertie en dmg. Et même, pour une image disque d'installation de (Mountain)Lion, il faut cloneur comme Super Duper. Dans ces conditions, je ne voie pas pourquoi une application graphique serait moins sûre que le terminal. Car, si un utilisateur est suffisamment couillon pour graver son image sur son disque système, ce sera pareil avec le terminal. Il existe bien UNETBOOTIN sous Windows (aussi sous linux et mac mais assez moyen sur mac) mais qui ne marche qu'avec les images linux ou BSD, qu'il télécharge ou qu'on lui fournit.
  • yoannyoann Membre


    Pas d'accord ! L'utilitaire de disque refuse catégoriquement de graver une image Linux sur USB, même convertie en dmg. Et même, pour une image disque d'installation de (Mountain)Lion, il faut cloneur comme Super Duper. Dans ces conditions, je ne voie pas pourquoi une application graphique serait moins sûre que le terminal. Car, si un utilisateur est suffisamment couillon pour graver son image sur son disque système, ce sera pareil avec le terminal. Il existe bien UNETBOOTIN sous Windows (aussi sous linux et mac mais assez moyen sur mac) mais qui ne marche qu'avec les images linux ou BSD, qu'il télécharge ou qu'on lui fournit.




    Bon OK on va s'arrêter là .
  • Bon,effectivement; il vaut mieux en rester là . Vous pouvez d'ailleurs annuler mon compte, je ne reviendrai plus. Entre les réponses du genre "T'as qu'à  regarder la doc" ou bien : "Ton appli, c'est de la merde, on peut faire autrement" ce qui veut dire :"Je te dénie le droit de développer cette application car il y a d'autres moyens", je me demande bien à  quoi sert ce forum !



    Allez, dans un tout autre registre, faire un tour sur http://www.cfp-radio.com/forum/ ou bien sur http://www.projetg5.com/phpbb3/, vous verrez un forum vraiment utile ou l'on trouve de l'information (de la vraie, pas des liens google) et du respect



    Salut, bande de nazes !



    Ceci était mon dernier post
  • AliGatorAliGator Membre, Modérateur
    o_O y'en a qui sont vraiment susceptibles pour un rien...



    On propose des solutions alternatives pour leur simplifier la vie en se disant qu'ils ne connaissent peut-être pas, et ils prennent ça comme un reproche...


  • Bon,effectivement; il vaut mieux en rester là . Vous pouvez d'ailleurs annuler mon compte, je ne reviendrai plus. Entre les réponses du genre "T'as qu'à  regarder la doc" ou bien : "Ton appli, c'est de la merde, on peut faire autrement" ce qui veut dire :"Je te dénie le droit de développer cette application car il y a d'autres moyens", je me demande bien à  quoi sert ce forum !



    Allez, dans un tout autre registre, faire un tour sur http://www.cfp-radio.com/forum/ ou bien sur http://www.projetg5.com/phpbb3/, vous verrez un forum vraiment utile ou l'on trouve de l'information (de la vraie, pas des liens google) et du respect



    Salut, bande de nazes !



    Ceci était mon dernier post








    OUAH Y-a de l'ambiance ici !!!

    Tu es bien sur d'avoir été sur d'autres forum français sur le dev ?

    Le seul autre que je connaisse t'aurait réservé un tout autre accueil si tu avais débarqué avec ce genre de certitudes !



    En plus, je parie qu'avant une semaine te te repointes avec un autre pseudo pour ne pas avoir l'ai c...

    Bon dev... image/cool.gif' class='bbc_emoticon' alt='8--)' />
  • Oh j'avais pas vu mais c'est assez ouf ^^

    Bon en tout cas moi je note qu'il existe ça : "Ce forum est dédié à  ceux qui aiment la radio et la télévision à  lampes."

    C'est pas dingue ? ^^
  • Ce forum est dédié à  ceux qui aiment la radio et la télévision à  lampes.
    Moi j'aime la radio et la télévision à  lampes car c'est un problème d'électronicien et je suis électronicien! Mais pour la vie de tout les jours, je m'en passe.

    Les discours ci-dessus montrent que plus on est, plus on a une chance de trouver un mécontent!

    image/rolleyes.gif' class='bbc_emoticon' alt='::)' /> Si ce n'est pas une belle Lapalissade ça!!
  • D'un côté il a peut être pas tort : graver sur une clef usb une image .iso avec Utilitaire de Disque ça ne fonctionne pas directement comme avec un .dmg. Par contre ça fonctionne bien avec un .dmg.

    Et puis quand on voit la seule réponse actuelle http://www.gingerbeardman.com/dd-gui/ comme "Graphical User Interface" il est sûr qu'on peut faire mieux avec Cocoa et NSTask !

    Mais bon, c'est un de plus dans la longue liste de ceux qui pensent que le plus simple c'est d'avoir tout de suite la solution. Ce qui n'est pas faux non plus image/smile.png' class='bbc_emoticon' alt=':)' /> sauf que c'est pas forcément le plus simple à  obtenir sans oublier le dilemme filet || poisson tout ça ..
  • xylowebxyloweb Membre
    mars 2013 modifié #15
    @BertrandMartin si il y avait un bouton "Je n'aime pas" je pense que tu aurais été servi...

    Bon vent alors (ou pas) !
Connectez-vous ou Inscrivez-vous pour répondre.