MacImage, interface en ligne de commande

Résumé : Utilisation de MacImage en ligne de commande. Lancement de l'application par un double clic. Insertion de fichiers et de dossiers, rafraîchissement du projet, compilation de l'image, hybridation d'une image ISO, décompression d'une image DMG en ligne de commande.
 

Introduction

Bien que MacImage soit une application Windows, avec une interface utilisateur graphique, il existe des situations où la ligne de commande reste intéressante en raison de sa puissance, de sa concision et de la possibilité de répéter des traitements identiques un nombre de fois quelconque.
Puisque MacImage a enregistré ses extensions (*.mipr, *.hfs et *.isop) auprès de Windows, lorsque vous effectuer un double clic sur l'un des fichiers portant cette extension, l'Explorateur lance MacImage avec comme ligne de commande le nom du fichier. Le traitement par défaut est la simple ouverture.
Il est possible et utile d'aller plus loin.
Plusieurs fonctions ont été mises en œuvre :

Attention, les codes de retour donnés après chaque instruction ne sont valables qu'avec la version spéciale de MacImage pour ligne de commande (micl.exe). Le code de résultat 1 est un problème de ligne de commande incohérente.

Inclusion de fichiers et de dossiers (-i)

Exemple de ligne de commande :

macimage -i e:\projets\fichier.mipr c:\temp\dossier\fichier.ext

Cette ligne de commande ouvre (ou crée) un projet sous le nom de fichier.mipr et y place le fichier c:\temp\dossier\fichier.ext. Si la rubrique à inclure est un dossier, tous les fichiers et sous-dossiers sont également inclus.
Il est possible de donner sur la ligne de commande un nom de fichier qui contient la liste des fichiers ou dossiers à inclure (avec leur chemin d'accès complet).
Exemple de ligne de commande :

macimage -i e:\projets\fichier.mipr $c:\temp\dossier\fichier.ext

Notez bien dans ce cas la présence du caractère dollar devant le nom de fichier, pour indiquer au programme qu'il s'agit d'un fichier de liste.
Codes de résultat (uniquement avec micl.exe) :
  0 - Réussite.
-1 - Impossible d'ouvrir le fichier de projet.
-2 - Impossible d'ouvrir le fichier de liste.
-3 - L'élément à inclure n'est ni un fichier, ni un dossier.

Inclusion dans la vue ISO seulement (-ii)

Exemple de ligne de commande :

macimage -ii e:\projets\file.mipr c:\temp\folder\*.*

Cette ligne de commande inclut la totalité du contenu du dossier appelé "folder" au projet spécifié, mais uniquement dans la vue ISO. Notez bien l'emploi de la syntaxe "*.*". Vous pourriez de la même manière utiliser une chaîne "*.doc" ou similaire.
Pour les codes de résultat, voir ci-dessus.

Inclusion dans la vue HFS seulement (-ih)

Exemple de ligne de commande :

macimage -ih e:\projets\file.mipr c:\temp\mac\*.*

De manière correspondante, cette ligne de commande inclut le contenu du dossier appelé "mac" dans la vue HFS du projet.
Pour les codes de résultat, voir ci-dessus.

Nommage du projet (-l)

Exemple de ligne de commande :

macimage -l e:\projets\file.mipr "Nom avec espaces"

Cet exemple de ligne de commande nomme les deux vues.
Il existe également une variante '-li' pour ne nommer que la vue ISO et '-lh' pour ne nommer que la vue HFS.
Codes de résultat (uniquement avec micl.exe) :
  0 - Réussite.
-1 - Impossible d'ouvrir le fichier de projet.

Création d'un dossier (-f)

Exemple de ligne de commande :

macimage -f e:\projects\file.mipr "Name with spaces/folder2"

Cette instruction crée les deux dossiers dans les deux vues. Il est donc possible de créer une séquence quelconque de dossiers.
Il existe également une variante '-fi' pour ne créer les dossiers que dans la vue ISO et '-fh' pour ne le faire que dans la vue HFS.
Codes de résultat (uniquement avec micl.exe) :
  0 - Réussite.
-1 - Impossible d'ouvrir le fichier de projet.

Rafraîchissement du projet (-r)

Il arrive fréquemment que le contenu des dossiers ou fichiers d'origine évolue avec le temps.
La version interactive de MacImage offre à cet effet deux solutions : une fonction de rafraîchissement du projet, une option de reconstruction du projet et une option de rafraîchissement du contenu des dossiers.
Il existe une ligne de commande pour réaliser la même chose :

macimage -r e:\projets\fichier.mipr

MacImage balaye tout le projet et vérifie que les fichiers et dossiers sont bien accessibles, enregistre les nouvelles tailles, etc. Dans le cas des dossiers, MacImage considère que le contenu doit également être mis à jour (comme si le drapeau de rafraîchissement du contenu était armé).
Une distinction est faite pour le traitement du dossier de la racine. Si le dossier de la racine provient exclusivement du même dossier sur le disque d'origine de l'ordinateur, le programme ajoute automatiquement les autres éléments contenus dans le même dossier. Dans le cas contraire, il considère que les éléments contenus dans la racine sont isolés et le rafraîchissement ne s'applique qu'aux sous-dossiers.
Avec cette méthode, il est possible par exemple d'inclure des dossiers vides au moment de la création du projet et de le rafraîchir ensuite juste avant la compilation (par exemple pour publier régulièrement un CD-ROM dont seul un dossier change en fonction de l'actualité).
À noter qu'il ne sert à rien de rafraîchir un projet pour y supprimer des fichiers ou des dossiers. MacImage ignore automatiquement les fichiers et dossiers qui n'existent plus au moment de la compilation.
Il existe également une version (-rl) où le programme ouvre un fichier journal pour enregistrer toutes les opérations effectuées.
Codes de résultat (uniquement avec micl.exe) :
  0 - Réussite.
-1 - Impossible d'ouvrir le fichier de projet.

Compilation du projet (-c)

Exemple de ligne de commande :

macimage -c e:\projets\fichier.mipr

MacImage ouvre le fichier de projet (fichier.mipr dans l'exemple ci-dessus) et le compile, en produisant un fichier-image qui porte le nom fichier.iso.
La dernière version offre également la possibilité de compiler en ISO seulement un projet hybride (avec -ci comme commutateur), et à l'inverse en HFS/HFS+ seulement (avec -ch).
Notez bien par ailleurs que les drapeaux de rafraîchissement (du volume ou des dossiers) ne sont pas exploités dans la compilation en ligne de commande. Vous devez utiliser l'option de rafraîchissement ci-dessus.
Codes de résultat (uniquement avec micl.exe) :
  0 - Réussite.
-1 - Impossible d'ouvrir le fichier de projet.
-2 - Impossible de créer le fichier de destination.
-4 - Place insuffisante sur le disque.

Hybridation d'une image ISO (-h)

Exemple de ligne de commande :

macimage -h e:\projets\image.hfs e:\projets\image.iso

MacImage ouvre l'image ISO (image.iso) et lui ajoute l'image HFS (image.hfs).
Codes de résultat (uniquement avec micl.exe):
  1 - Réussite
-1 - Impossible d'ouvrir l'image ISO.
-2 - Impossible d'ouvrir l'image HFS.
-3 - L'image ISO est déjà hybride.
-4 - L'image ISO n'est pas une image ISO correcte.
-5 - L'image HFS n'est pas exploitable (on ne peut pas la décomprimer, ou bien on ne peut pas identifier sa nature).
-6- Erreur à l'ouverture du fichier temporaire pour la décompression.

Déshybridation d'une image ISO (-dh)

Il peut parfois être nécessaire ou utile de retirer l'image HFS que l'on a ajoutée à une image ISO. Tel est le but de cette option.
Exemple de ligne de commande :

macimage -dh e:\projets\image.iso

MacImage ouvre l'image ISO (image.iso) et retire l'image HFS.
Attention : cette fonction ne marche que sur une image dans laquelle les deux systèmes de fichiers sont séparés (c'est-à-dire sur le résultat de l'hybridation qui réunit deux images), mais non pas sur une image hybride produite en mode de projet par MacImage, puisque dans ce cas les fichiers sont partagés entre les deux systèmes de fichiers.
Codes de résultat (uniquement avec micl.exe):
  0 - Réussite
-1 - Impossible d'ouvrir l'image ISO.
-2 - Autres causes d'erreur.

Décompression d'une image de disque comprimée (-dc)

Plusieurs outils existent sur le Macintosh pour produire des images de disques, d'une part de disques réels et d'autre part de dossiers. Ces images peuvent être comprimées ou non et chiffrées ou non. Les utilisateurs produisent fréquemment des images comprimées sans l'avoir réellement voulu. Cela pose des problèmes en aval, notamment pour la fonction d'hybridation de MacImage, ou plus simplement si l'on veut ouvrir l'image dans MacImage pour en extraire des fichiers (mode Partition de MacImage).
Voir également une page plus technique sur les images de disques Macintosh.
Exemple de ligne de commande :

macimage -dc e:\data\image.hfs e:\data\imgdec.dmg

MacImage ouvre l'image Apple (UDIF) et la décompresse. Le résultat est placé dans le fichier imgdec.dmg.
MacImage traite les images comprimées en mode ADC, Zlib, Bzlib2, ainsi que les autres images gérées à l'aide d'un bloc binaire 'koly' et d'un fichier de ressources 'mish'.
Codes de résultat (uniquement avec micl.exe):
  1 - Réussite
-1 - Impossible de traiter l'image comprimée.
-2 - Rien à faire sur cette image (image non comprimée) ou bien impossible d'ouvrir l'image d'origine ou de destination.

Association avec un logiciel de gravure

Si vous rajoutez un logiciel de gravure en ligne de commande tel que cdburn.exe ou dvdburn.exe, qui sont distribués par Microsoft dans son Kit de ressources Windows 2003 (ces utilitaires ne s'installent que sous Windows XP et supérieur, mais tournent parfaitement sous Windows 2000), il devient possible de lancer la compilation et la gravure en deux lignes seulement de fichier batch, qui pourraient être :

macimage -c e:\projets\file.mipr
cdburn d: file.iso -speed max

Synchronisation avec le fichier de projet

Lorsque le fichier de projet et les fichiers de données sont sur des disques différents, nous considérons que la racine du disque de données et la racine du volume créé dans le projet sont identiques. Autrement dit, un fichier qui se trouve dans la racine du disque de données se trouvera également dans la racine de l'image.
De manière similaire, si un fichier à inclure se trouve dans un dossier appelé temp, par exemple e:\temp\file.ext, il apparaîtra dans un dossier appelé 'temp' dans l'image créée.
Par opposition, si le fichier de projet et les fichiers de données se trouvent sur le même disque, nous soustrayons le chemin d'accès du projet du chemin d'accès des fichiers de données pour sélectionner le dossier dans lequel apparaîtront les fichiers de données.
Nous réfléchissons actuellement à la possibilité de placer volontairement un fichier de données à un niveau prédéterminé de l'arborescence du volume créé. Si vous avez des idées... merci d'avance.
Une solution trouvée avec l'aide d'un utilisateur :
Le principe est de passer sur le disque contenant les données, de descendre dans le dossier voulu et d'inclure les fichiers à partir de cet endroit, sans chemin d'accès. De ce fait, ils vont être inclus dans la racine du projet.
Il faut donc remplacer la ligne suivante :

macimage -i e:\projets\fichier.mipr c:\temp\fichier.ext

par les trois lignes ci-dessous :

c:
cd \temp
macimage -i e:\projets\fichier.mipr fichier.ext

Causes fréquentes d'erreur

Si vous concaténez plusieurs instructions dans un fichier batch, il est préférable, et même indispensable, de donner une chemin d'accès complet pour le fichier de projet et aussi pour les fichiers de données.
Vous éviterez ainsi la mauvaise suprise de créer un fichier de projet à chaque ligne, étant donné que le programme ne trouve pas le fichier de projet créé à la ligne précédente.

Chemins d'accès des fichiers

En ligne de commande, MacImage traite aussi bien les chemins d'accès où une lettre a été attribuée au volume (par exemple Z:\) que les chemins d'accès de type UNC (\\serveur\dossier\\fichier).

Exécutable

MacImage existe également sous une forme d'outil en pure ligne de commande (micl) qui est un peu plus petit (puisqu'il ne comprend pas l'interface graphique utilisateur). Ce programme est inclus dans le programme général d'installation. Faites vos essais avec la version interactive lancée en ligne de commande. Le comportement est strictement identique.

 
Pierre Duhem (ex-Logiciels & Services Duhem)
3, rue Pierre Haret - F-75009 Paris (France) - Tél. (+33) [0]149 700 455
web : http://www.macdisk.com