Créez votre propre CD bootable Windows PE : BartPE

BartPE est le meilleur ami des administrateurs...
Version 3.1.10a (sortie le 17 février 2006)

Méthode expérimentale pour faire des plugins simples

 Principe

Il consiste à opérer depuis le boot sur un CD BartPE ne comportant que quelques utilitaires (n'ayant pas fait ajouter de fichiers système) :
- un explorateur (Total Commander)
- un scanneur-comparateur de registre (Advanced Registry Tracer)
et éventuellement
- un graveur de CD (Small CD-Writer)
- un éditeur de texte (Notepad++)

Avantages : le programme fonctionne dans ce qui sera son environnement, le scan du registre y est beaucoup plus rapide que sur C:, le débuggage possible et on n'a pas besoin de désinstaller l'application pour surveiller sa réinstallation (il peut en plus être resté des traces).

Les fichiers extérieurs à ajouter

On essaie de faire fonctionner le programme depuis l'explorateur en double-cliquant sur son exécutable principal dans C:\Program Files\...\
S'il se lance sans rien demander, il n'aura pas besoin de fichiers extérieurs (il fonctionne ave le system32 de base du CD).
Sinon, on va chercher le fichier demandé (la plupart du temps dans C:\Windows\system32\) et on le copie dans le dossier du programme (utiliser les 2 volets de T.C.)
La plupart du temps, l'exe le trouve et s'il en demande un autre, on recommence en notant ces fichers.
Remarque : cette priorité d'un exécutable pour son répertoire d'exécution est souvent valable aussi pour les fichiers ini : si on met celui d'UltraEdit dans son dossier, il ne va pas le chercher ailleurs.

Les inscriptions dans le registre

L'installation du programme en fait souvent un grand nombre, mais le programme peut en recréer la majeure partie à son premier lancement et souvent seules seront nécessaires celles concernant l'enregistrement ou certains réglages.
On lance le programme et avant le premier réglage (enregistrement, langue...) on fait un scan du registre, on fait les réglages puis on rescanne le registre et on affiche les changements que l'on exporte en fichier *.reg pour les convertir plus tard en [*.AddReg] pour le fichier .inf.

Le lecteur d'exécution : CD ou RAM

Pour savoir si le programme pourra être lancé sur le CD, on peut graver son dossier sur un CD-RW. S'il ne se lance pas c'est en général parcequ'il cherche à écrire dans son dossier sur le CD, il faudra donc le copier dans la RAM.
La procédure de lancement dans la RAM (qui avec le plugin sera effecutée avec le *.cmd ou une archive auto-extractible) peut se simuler en ligne de commande avec l'interpréteur cmd.exe.

Réalisation du plugin

On peut le faire, compiler et graver sous BartPE.
On crée dans plugin un dossier du nom du programme, on y copie les fichiers du canevas correspondant (MonProgCD ou MonProgRAM), on efface l'exécutable de test dans files et on y copie les fichiers du programme de la RAM.
On renomme les fichiers avec le nom du programme (Ctrl+M avec Total Commander) et on les édite avec Notepad++ en utilsant Rechercher-Remplacer tout pour changer les noms et on ajoute toutes les informations recueillies précédemment.

 Exemple 1 : UltraISO 8.5

Les fichiers extérieurs et le registre

Après avoir installé si besoin UltraISO, bootez sur un CD BartPE avec Total Commander et Advanced Registry Tracer.
Ouvrez le lecteur C: dans Total Commander et double-cliquez sur UltraISO.exe dans C:\Program Files\UltraISO.
Le programme se lance sans demander de fichier système mais il faut s'enregistrer.
Avant d'enregistrer, lancer ART, il démarre automatiquement un premier scan du registre (sinon scan).
Renseignez l'enregistrement (exemple : VotreNom et FFFF-FFFF-FFFF-FFFF), mettez le programme en français et fermez-le.
Refaites un scan scan du registre et comparez compare avec le précédent. Exportez export et éditez les différences pour ne garder que :

[HKEY_USERS\.DEFAULT\Software\EasyBoot Systems\UltraISO\5.0]
"Language"="1036"
"Registration"="ffffffffffffffffffffffffffffffff"
"UserName"="VotreNom"

Relancez le programme, on est bien toujours enregistré et en français et depuis la 8.1.2, la gravure est incluse dans l'exe.
UltraISO est distribué par EZB Systems et il y a justement dans Program Files\Fichiers communs un dossier EZB Systems qui contient 1 petit exe : lame_enc.dll (pour encoder et décoder des fichiers audio).
Commencez déjà le test dans la RAM (B:) en y créant un dossier UltraISO et en y copiant UltraISO.exe et lame_enc.dll ainsi que lang_fr.dll dans un dossier lang.
Double-liquez sur UltraISO.exe : on est toujours enregistré et en français.
Vous pouvez vérifier qu'il fonctionnera correctement sur un CD en gravant le dossier UltraISO de B: à l'aide d'UltraISO.exe du disque dur.
Les précédentes versions devaient être copiées dans la RAM, mais l'actuelle peut utiliser un canevas du type MonProgCD.

Ecriture du plugin

Faire un dossier ultraiso dans plugin, copiez-y les fichiers du canevas MonProgCD, remplacez l'exe de test par les fichiers du dossier UltraISO de la RAM.
Changez dans les noms des fichiers MonProgCD par UltraISO avec Ctrl+M de Total Commander.
Ouvrez les fichiers et faites les mêmes changements avec la fonction Rechercher-Remplacer tout de Notepad++.
Le contenu d'UltraISO_nu2menu.xml est une syntaxe utilisée par nu2menu.exe.
Il faut compléter UltraISO.inf avec les inscriptions dans le registre obtenues en convertissant l'exportation d'ART (avec PEReg par exemple) :

[Default.AddReg]
0x1, "Software\EasyBoot Systems\UltraISO\5.0", "Language", "1036"
0x1, "Software\EasyBoot Systems\UltraISO\5.0", "Registration", "ffffffffffffffffffffffffffffffff"
0x1, "Software\EasyBoot Systems\UltraISO\5.0", "UserName", "VotreNom"

Vous devriez obtenir un plugin semblable à celui-ci. Compilez, gravez, et rebootez pour tester.

 Exemple 2 : UltraEdit 12.00

Téléchargez si besoinUltraEdit-32 et installez-le.

Les fichiers extérieurs et le registre

Depuis le boot sur un CD BartPE avec Total Commander, allez dans le répertoire C:\Program Files\IDM Computer Solutions\UltraEdit-32\ et cliquez sur uedit32.exe.
Un message d'erreur apparaît(Impossible de mettre à jour le profil "Basic"), puis l'écran de réglage de la première utilisation (cochez : Ne plus afficher ce message) et enfin le programme s'ouvre normalement.
Fermez puis recommencez : les réglages n'ont pas été enregistrés. Le programme enregistre les réglages dans uedit32.ini qu'il cherche à créer dans Documents and Settings\CurentUser\Application Data\IDMComp\UltraEdit et comme ce dossier est souvent défini dans X: (le CD), il ne peut pas y écrire.
Allez récupérer uedit32.ini dans C: (chemin ci-dessus mais parfois dans Windows si vous avez utilisé d'anciennes version) et copiez-le dans UltraEdit-32.
Relancez le programme et cette fois-ci tout fonctionne normalement et vous retrouvez tous les réglages de l'utilisation sur C:.
Ce programme n'aura donc besoin d'aucune inscription dans le registre, les données d'enregistrement sont contenues dans le fichier caché uedit32.reg.

Les fichiers intérieurs indispensables

On va maintenant chercher à savoir quels sont en plus de uedit32.ini et uedit32.reg, les fichiers nécessaires au fonctionnement de uedit32.exe.
Dans le volet de droite de Total Commander ouvrez le lecteur B: (RamDisk) et créez-y un répertoire UltraEdit.
Copiez dans ce répertoire les 3 fichiers ci-dessus (depuis le volet de gauche) et cliquez sur uedit32.exe : il lui manque tidylib.dll. Copiez-lui dans son dossier et recommencez. Il lui manque maintenant SftpDLL.dll et après un troisième ajout : ueres.dll le fonctionnement est complet.
Après avoir fermé le programme, on remarque qu'il a créé d'autres fichiers dans son répertoire : ce sera donc inutile d'essayer de le lancer sur le CD (il ne pourrait pas les y écrire).
On pouvait même remarquer que pendant son fonctionnement, il y a créé un fichier temporaire Edit.000.

Les commandes de lancement

On va maintenant simuler les commandes du futur UltraEdit.cmd.
Cliquez sur Démarrer - Exécuter et entrez cmd.exe, on se retrouve dans le lecteur X: c'est à dire le CD (dans lequel s'exécutera le futur *.cmd).
X:\i386\System32>
Lancez le programme en entrant son chemin B:\UltraEdit\uedit32.exe
(Vous pouvez aussi tester la comande start /w %temp%\UltraEdit\uedit32.exe où start /wait : Démarre l'application et attend qu'elle se termine et %temp% = B: dans le cas d'un boot sur CD)
X:\i386\System32>B:\UltraEdit\uedit32.exe
Le programme se referme aussitôt car il ne peut pas écrire Edit.000 sur X:
Remarquez que la commande s'est effectuée dans X: lecteur non inscriptible.

Le programme doit être lancé depuis un lecteur inscriptible la RAM
Changez de lecteur en entrant B: (%ramdrv% = B: dans le scripf final)
X:\i386\System32>B:
On se retrouve à la racine de B: mais on aurait pû aussi être dans un dossier, d'où la commande cd \ dans le script final qui fait remonter à la racine du lecteur.
Descendez dans le dossier UltraEdit en entrant cd \UltraEdit (cd ou chdir : ChangeDirectory) :
B:\>cd \UltraEdit
Et lancez UltraEdit en entrant uedit32.exe (depuis B: inscriptible, cette fois-ci) (la commande du script sera start /w uedit32.exe)
B:\UltraEdit>uedit32.exe
Cette fois-ci, tout fonctionne normalement et vous pouvez vérifier en effaçant les autres fichiers créés que l'exe principal n'a besoin que des 3 dll, d'uedit32.ini et uedit32.reg.

Pour l'effacer, il faut remonter à la racine de B: en entrant : cd \
(on est toujours dans B: mais le programme aurait pû nous en faire sortir, d'où la commande %ramdrv% dans le script final)
B:\UltraEdit>cd \
Entrez alors la commande rmdir UltraEdit /s
RemoveDirectory : rmdir ou rd avec l'argument /s pour effacer les sous-répertoires mais sans l'argument /q (quiet) pour afficher la question.
B:\>rmdir UltraEdit /s
Il suffira alors de prévoir de faire afficher avec echo
Effacer...
au dessus de
B:\>UltraEdit, êtes-vous sûr (O/N) ?
pour que la question posée par rmdir soit comprise.

Le canevas sera du type MonProgRAM et on obtient un plugin semblable à celui-ci.

Les lignes d'UltraEdit.cmd sont celles testées expérimentalement.

Copyright (c) 2000-2006 par Bart Lagerweij. Tous droits réservés.

Valid XHTML 1.0 Strict Valid CSS!