Un CHM est un dossier déguisé
À l'intérieur d'un .chm se trouve un petit site web tout à fait ordinaire : des pages HTML, une ou deux feuilles de style, quelques images et un fichier de contenu .hhc. Le conteneur ITSS de Microsoft les range dans un répertoire d'entrées réparties sur une ou deux sections de contenu — la section 0 telle quelle, la section 1 compressée en LZX.
Cet outil liste chaque entrée avec son chemin, sa taille, sa section et son type, et les réécrit comme de vrais fichiers. Le ZIP conserve les chemins internes : /html/page1.htm devient html/page1.htm, si bien que la décompression donne un dossier navigable et non un tas de fichiers aux noms écrasés. C'est tout l'intérêt d'extraire un fichier d'aide : les liens entre les pages fonctionnent encore ensuite.
La mécanique, si vous la voulez
Derrière un interrupteur, la liste montre aussi les flux ITSS qu'une extraction normale cache : ::DataSpace/NameList, ::DataSpace/Storage/MSCompressed/ControlData, la table de réinitialisation LZX, /#SYSTEM, /#STRINGS et les autres. C'est le fonctionnement du conteneur, et pouvoir le regarder est parfois exactement ce dont on a besoin.
Les entrées irrécupérables sont annoncées
Si les octets d'une entrée ne peuvent pas être produits, elle n'est pas écrite dans le ZIP. Elle apparaît dans une liste d'échecs avec l'erreur précise.
La raison de cette fermeté : le décodeur LZX de ce site a été écrit d'après la spécification [MS-PATCH] et d'après lzxd.c de libmspack, et si son lecteur de flux binaire, son décodage de Huffman, ses blocs non compressés et son filtre x86 sont couverts par des tests unitaires, son décodage des blocs verbatim et aligned n'a jamais été confronté à la sortie du compresseur de Microsoft — aucun corpus hors ligne n'existait pour l'éprouver.
Un fichier tronqué ou brouillé dans une extraction est pire qu'un fichier absent, car on ne découvrirait le problème que bien plus tard, quand le fichier est ailleurs et que le CHM a disparu. Un échec est donc signalé comme un échec.
Également affiché
Le titre du fichier d'aide, sa rubrique par défaut, les noms de ses fichiers de contenu et d'index, le compilateur qui l'a produit, et la compression employée par les sections de contenu. Pour lire les pages plutôt que les extraire, utilisez la Visionneuse CHM.
Confidentialité
Le fichier d'aide est ouvert et décompressé dans votre navigateur. Rien n'est envoyé.
Tiny Online Tools







