Dans la première partie que j'avais consacré aux débutants qui ne connaissaient pas le MS-DOS, vous aviez appris les commandes CD, MD, COPY CON, DIR, TYPE, MEM, VER, ainsi que l'utilisation de commutateurs sur la commande DIR. Dans la seconde vous aviez appris les commandes RENAME, DEL, COPY, DOSKEY et l'utilisation des opgions de DOSKEY.
Dans cette partie nous allons enfin faire quelque chose de pratique... Le réalisation d'un petit programme d'installation !
Dans Windows, quand vous êtes dans un répertoire de votre disque dur, cliquez sur "Fichier" puis "Nouveau" et choisissez "Document texte". Remplissez le avec n'importe quoi, en y copiant par exemple tout le contenu de cette page. Une fois ceci fait, renommez le en "System1.aka" (l'extension ne veut rien dire, elle est choisie au hasard : c'est juste pour vous mettre dans les conditions de vrais fichiers...) puis copiez le 9 fois et renommez chacun des fichiers copiers en "System2.aka", "System3.aka", etc. etc. jusqu'à arriver donc à "System10.aka".
Vous vous trouvez donc avec 10 fichiers d'extension .aka et pesant au total, dans une certaine approximation, 170 KO.
Nous allons faire un programme d'installation de base, réduit à sa plus simple expression, puis nous allons le complexifier peu à peu jusqu'à ce qu'il devienne réellement efficace.
I. Une installation simple par copies
a) Fabriquer la structure et exposer les buts >> vers le sommaire
Voici ce que vous allez faire pour imiter une arborescence d'un vrai programme
:
- Renommez le dossier où se trouve vos fichiers en "Ourprog"
- Dans ce dossier, faites un répertoire "Dat" et un répertoire
"System"
- Dans le répertoire "Dat" faites un répertoire
"Bin" et un répertoire "Etc"
- Placez "System5.aka" dans le répertoire Dat
- Placez "System1.aka" et "System2.aka" dans le répertoire
Bin
- Placez "System3.aka" et "System4.aka" dans le répertoire
Etc
- Placez "System6.aka", "System7.aka", "System8.aka"
et "System9.aka" dans le répertoire System
Ceci étant fait, exposons le but de notre programme d'installation
:
1) Recréer l'arborescence du programme sur le disque C
2) Y déplacer les fichiers
Ce but est rudimentaire, mais nous allons le faire correctement.
b) Les commandes à apprendre
>> vers le sommaire
Cls : Permet de vider tout l'écran MS-DOS de ce qui y
était affiché auparavant, pour faire un écran "neuf"
et donc bien propre. Cette commande doit être utilisée au début
du programme et à chaque fois qu'il sera jugé utile de le
nettoyer à nouveau.
En passant... CLS est utilisé dans beaucoup de langages, c'est les abréviations de "CLear Screen", c'est à dire "nettoyer l'écran".
Echo : Cette commande affiche des messages à l'écran et peut aussi désactiver, ou activer, l'affichage des commandes du programme. Dans notre cas d'installation, pour que l'utilisateur ne puisse pas voir les commandes COPY etc. etc., et aussi pour éviter de lui faire défiler des informations inutiles sur son écran, on va désactiver les commandes.
Voici les différentes utilisations de la commande Echo
:
@ECHO OFF : Désactive l'affichage des
commandes.
@ECHO ON : Active l'affichage des commandes.
ECHO message : Permet d'afficher à l'écran
un simple message.
Exemple : ECHO voici mon premier
message avec echo.
Ceci aura pour effet d'afficher la phrase à l'écran : voici
mon premier message avec echo.
Pause : Affiche le message "Appuyez sur une touche pour continuer..." et stoppe le programme tant que l'utilisateur n'a pas appuyé sur une touche. Cela permet de lui laisser par exemple le temps de lire ce que Echo a marqué avant de passer à la suite ; ou encore de bien détacher les différentes étapes du programme.
c) Début de réalisation, premier problème
et solution
>> vers le sommaire
Commencez par créer un nouveau document texte, et renommez le "Install.bat".
Avec un clic droit sur le document, sélectionnez "Edition"
(pour Windows 98 par exemple) ou "Modifier" si vous n'avez pas
édition.
Le premier problème arrive avant même que le code soit commencé : pour copier les fichiers à installer dans le disque dur C, la commande COPY a besoin du chemin exact des fichiers. Or, on ne peut pas aller créer un répertoire où installer les fichiers puis revenir : revenir où ? Il est plus pratique de se déplacer et d'agir à partir d'un endroit connu.
Pour la solution, nous allons utiliser une sorte de "répertoire-tampon" : quel est le répertoire qui selon vous va se trouver sur tous les ordinateurs avec un chemin bien définit ? Windows... La solution consiste donc à opérer a partir du fichier Install.bat qui va copier tous les fichiers .aka dans Windows. Seulement, pour un soucis de propreté, au cas où il y ait un problème on ne va pas mettre tous les fichiers à la racine de Windows (imaginez vous ensuite à la rechercher de vos fichiers .aka pour les supprimer au milieu d'un énorme Windows...) ; on mettra les fichiers dans le répertoire "Temp" de Windows qui sert justement aux installations.
Nous allons donc écrire le code. Avant la première
ligne de code, sautez une ligne.
Voici le code qui permettra de copier les fichiers dans le répertoire
Temp de Windows :
@ECHO OFF
Cls
Copy System10.aka C:\Windows\Temp
cd dat
copy System5.aka C:\Windows\Temp
cd bin
copy System1.aka C:\Windows\Temp
copy System2.aka C:\Windows\Temp
cd..
cd etc
copy System3.aka C:\Windows\Temp
copy System4.aka C:\Windows\Temp
cd..
cd..
cd system
copy System6.aka C:\Windows\Temp
copy System7.aka C:\Windows\Temp
copy System8.aka C:\Windows\Temp
copy System9.aka C:\Windows\Temp
Suivit ligne par ligne du code et de ses effets
- On désactive l'affichage des commandes
- On vide l'écran MS-DOS (les deux commandes ensemble font quelque
chose de propre)
- Puisqu'on part du répertoire "Ourprog", le fichier System10.aka
s'y trouve, son chemin d'accès avec la commande COPY est donc correcte.
On fait la copie dans le répertoire Temp.
- On va dans le répertoire dat.
- Le fichier System5.aka s'y trouve, on fait la copie dans le répertoire
Temp.
- On va dans le répertoire bin
- On copie les deux fichiers .aka qui s'y trouvent dans le répertoire
Temp
- On retourne dans le répertoire dat
- On va dans le répertoire etc
- On copie les deux fichiers .aka qui s'y trouvent dans le répertoire
Temp
- On retourne dans le répertoire dat
- On retourne dans le répertoire Ourprog
- On va dans le répertoire System
- On copie les quatre fichiers .aka qui s'y trouvent dans le répertoire
Temp.
Avec tout ca on est débarassé du problème,
on a un chemin d'accès aux fichiers pour la suite de la procédure.
d) Créer l'arborescence et y déplacer
les fichiers
>> vers le sommaire
Le but est maintenant de recréer toute l'arborescence du programme
dans le disque C et de positionner les fichiers où il faut. Nous
allons utiliser une nouvelle commande de la classe "CD".
CD \ : Permet d'aller
à la racine du lecteur concerné.
Exemple : C: puis CD
\ feront aller à la racine du lecteur C.
Voici la suite du code, qui se positionne donc après
la ligne "copy System 9.aka C:\Windows\Temp" de la première
partie :
C:
Cd \
md ourprog
cd ourprog
md dat
md system
cd dat
md bin
md etc
Copy C:\Windows\Temp\System10.aka C:\ourprog
Copy C:\Windows\Temp\System6.aka C:\ourprog\system
Copy C:\Windows\Temp\System7.aka C:\ourprog\system
Copy C:\Windows\Temp\System8.aka C:\ourprog\system
Copy C:\Windows\Temp\system9.aka C:\ourprog\system
Copy C:\Windows\Temp\System5.aka C:\ourprog\dat
Copy C:\Windows\Temp\System1.aka C:\ourprog\dat\bin
Copy C:\Windows\Temp\System2.aka C:\ourprog\dat\bin
Copy C:\Windows\Temp\System3.aka C:\ourprog\dat\etc
Copy C:\Windows\Temp\System4.aka C:\ourprog\dat\etc
Suivit ligne par ligne du code et de ses effets :
- Le programme va dans le disque C
- Le programme se positionne à la racine du disque C
- Le répertoire "ourprog" est fabriqué
- Le programme dans le répertoire ourprog
- Le répertoire "system" est fabriqué
- Le répertoire "dat" est fabriqué
- Le programme dans le répertoire dat
- Le répertoire "bin" est fabriqué
- Le répertoire "etc" est fabriqué
- Les 10 lignes qui suivent déplacent les fichiers du programme du
répertoire Temp de Windows vers le répertoire qui leur ait
affecté dans le programme.
e) Vider le répertoire tampon
>> vers le sommaire
Pour éviter de salir le répertoire Temp de Windows et laisser
bien propre partout où le programme passe, on détruit les
fichiers qui ont été déplacés dans ce répertoire.
Voici la suite du code qui se positionne après "Copy C:\Windows\Temp\System4.aka
C:\ourprog\dat\etc" de la deuxième partie :
del C:\Windows\Temp\System1.aka
del C:\Windows\Temp\System2.aka
del C:\Windows\Temp\System3.aka
del C:\Windows\Temp\System4.aka
del C:\Windows\Temp\System5.aka
del C:\Windows\Temp\System6.aka
del C:\Windows\Temp\System7.aka
del C:\Windows\Temp\System8.aka
del C:\Windows\Temp\System9.aka
del C:\Windows\Temp\System10.aka
Ces lignes détruisent les fichiers se trouvant dans le répertoire TEMP de Windows, un par un. Dans un cadre réel, serait plus logique de faire un del System*.aka mais ici, nous tenons à rester explicite.
Conclusion de la partie.
Vous devez maintenant pouvoir faire un fichier d'installation très
simple qui se charge de copier les fichiers à installer. Vous connaissez
aussi les commandes CLS, ECHO, PAUSE et CD \.
II. Une installation compressée par copie
a) Compresser les fichiers
>> vers le sommaire
Nous avions dit en début que la taille des fichiers est de 170 KO
: plutôt que d'avoir des fichiers non compressés, préferons
un seul pack. Pour cela, réunissez tous vos fichiers .aka dans le
même répertoire que Install.bat, sélectionnez vos fichiers
.aka, faites un clic droit et choisissez "Add to zip" (ou sinon,
lancez WinZip et compressez tous ces fichiers dans un même pack).
Le pack ainsi obtenu doit bien être dans le même répertoire
que Install.bat !
Maintenant, sélectionnez ce pack et renommez le en "archiv.pak".
Cela permettra d'éviter aux utilisateurs d'aller fouiner partout
(même si un pack de fichiers .zip est facilement reconnaissable)...
b) Comment décompresser ce pack à l'aider
de Install.bat ?
>> vers le sommaire
Vous avez compressé votre pack qui ne fait maintenant plus que 58
KO. Seulement le problème le plus évident se pose : comme
notre petit fichier MS-DOS va t-il pouvoir décompresser le pack ?
La solution est un programme qui se nomme Pkunzip et que vous pouvez télécharger
ici !
Pkunzip FICHIER.ABC : Permet de décompresser un fichier compressé en .zip. "FICHIER" doit être le nom du fichier et "ABC" son extension ; l'extension du fichier peut-être de n'importe quel type tant que le fichier s'est appellé FICHIER.zip dans le passé. En clair : ca extrait tout ce qui a était ou est un .zip.
Exemple : dans notre cas pour décompresser le pack, nous allons taper "Pkunzip archiv.pak".
En passant... Pour utiliser Pkunzip il faut qu'il soit dans le répertoire où vous êtes. Pour notre installation, il y aura donc trois fichiers : Pkunzip.exe, archiv.pak et Install.bat. Notons aussi que Pkunzip accepte de travailler en cas d'erreur CRC ; ce genre d'erreur se produit lorsque vous téléchargez un fichier sur kazaa et que le téléchargement a eu une erreur : la plupart des extracteurs refusent de continuer à la détection d'une erreur CRC...
c) Rectifier le code pour bénéficier de
Pkunzip
>> vers le sommaire
Voici le code total du fichier remanié pour utiliser Pkunzip (les
lignes modifiées et rajoutées sont en rouge) :
@ECHO OFF
Cls
Copy archiv.pak C:\Windows\Temp
Copy pkunzip.exe C:\Windows\Temp
C:
Cd \
cd Windows
cd temp
Pkunzip archiv.pak
Cd \
md ourprog
cd ourprog
md dat
md system
cd dat
md bin
md etc
Copy C:\Windows\Temp\System10.aka C:\ourprog
Copy C:\Windows\Temp\System6.aka C:\ourprog\system
Copy C:\Windows\Temp\System7.aka C:\ourprog\system
Copy C:\Windows\Temp\System8.aka C:\ourprog\system
Copy C:\Windows\Temp\system9.aka C:\ourprog\system
Copy C:\Windows\Temp\System5.aka C:\ourprog\dat
Copy C:\Windows\Temp\System1.aka C:\ourprog\dat\bin
Copy C:\Windows\Temp\System2.aka C:\ourprog\dat\bin
Copy C:\Windows\Temp\System3.aka C:\ourprog\dat\etc
Copy C:\Windows\Temp\System4.aka C:\ourprog\dat\etc
del C:\Windows\Temp\System1.aka
del C:\Windows\Temp\System2.aka
del C:\Windows\Temp\System3.aka
del C:\Windows\Temp\System4.aka
del C:\Windows\Temp\System5.aka
del C:\Windows\Temp\System6.aka
del C:\Windows\Temp\System7.aka
del C:\Windows\Temp\System8.aka
del C:\Windows\Temp\System9.aka
del C:\Windows\Temp\System10.aka
del C:\Windows\Temp\Pkunzip.exe
del C:\Windows\Temp\archiv.pak
Commentaires sur les lignes modifiées :
- Les deux premières modifiées n'ont plus qu'à copier
le programme et son archive dans Windows au lieu de copier tous les fichiers
non-compressés.
- Les 4 autres lignes vont dans le répertoire temp de Windows pour
décompresser l'archive
- Les deux lignes de la fin suppriment le programme et son archive du répertoire
Temp de Windows
Précisions à nouveau que plutôt de détruire les fichiers un par un, on pourrait procéder à une suppression en bloc.
Conclusion de la partie.
Vous pouvez à présent utiliser Pkunzip pour manipuler des
packs compressés dans votre installation.
III. Dialoguer avec l'utilisateur durant l'installation >> vers le sommaire
Il est important de dire à l'utilisateur ce qui se passe au cours
de l'installation. Pour cela, on lui affiche un message à l'aide
de la commande echo. Cependant, il faut aussi
s'assurer qu'il ait le temps de lire ce qu'on lui dit car les commandes
echo sont comme toutes les commandes, une fois qu'elles ont été
éxécutées on passe à la suivante, et ainsi l'écran
défilera trop vite pour que l'utilisateur puisse lire. Le remède
est de placer une commande "pause"
à la fin d'une série de commandes echo : ainsi l'utilisateur
pourra lire pour appuyer sur une touche pour passer à la suite.
On en profitera pour vider à nouveau l'écran après
"pause" en inscrivant "cls"
: c'est plus propre et ca découpe mieux les étapes.
Voici donc le code total en y incorporant les echo, pause
et cls (les lignes rajoutées sont en rouge) :
@ECHO OFF
Cls
Echo bienvenue dans le programme d'installation
Echo L'installation se fera dans le repertoire Ourprog du lecteur C
Echo preparation de l'installation.
pause
cls
Copy archiv.pak C:\Windows\Temp
Copy pkunzip.exe C:\Windows\Temp
C:
Cd \
cd Windows
cd temp
Pkunzip archiv.pak
Cd \
Echo Creation de l'arborescence du programme.
pause
cls
md ourprog
cd ourprog
md dat
md system
cd dat
md bin
md etc
Echo copie des fichiers.
pause
cls
Copy C:\Windows\Temp\System10.aka C:\ourprog
Copy C:\Windows\Temp\System6.aka C:\ourprog\system
Copy C:\Windows\Temp\System7.aka C:\ourprog\system
Copy C:\Windows\Temp\System8.aka C:\ourprog\system
Copy C:\Windows\Temp\system9.aka C:\ourprog\system
Copy C:\Windows\Temp\System5.aka C:\ourprog\dat
Copy C:\Windows\Temp\System1.aka C:\ourprog\dat\bin
Copy C:\Windows\Temp\System2.aka C:\ourprog\dat\bin
Copy C:\Windows\Temp\System3.aka C:\ourprog\dat\etc
Copy C:\Windows\Temp\System4.aka C:\ourprog\dat\etc
Echo cloture de l'installation.
pause
cls
del C:\Windows\Temp\System1.aka
del C:\Windows\Temp\System2.aka
del C:\Windows\Temp\System3.aka
del C:\Windows\Temp\System4.aka
del C:\Windows\Temp\System5.aka
del C:\Windows\Temp\System6.aka
del C:\Windows\Temp\System7.aka
del C:\Windows\Temp\System8.aka
del C:\Windows\Temp\System9.aka
del C:\Windows\Temp\System10.aka
del C:\Windows\Temp\Pkunzip.exe
del C:\Windows\Temp\archiv.pak
Echo l'installation est finie !
Conclusion de la partie.
Vous avez fait un exemple pratique sur l'utilisation de Echo, Pause et Cls.
IV. Réduire la taille du fichier d'installation >> vers le sommaire
Sous d'autres termes, on pourrait dire que l'on va effectuer une "optimisation" du fichier d'installation. On va surtout tenter de le réduire en taille puisqu'il n'y a rien à faire sur la mémoire ou d'autres facteurs. Pour réduire en taille, vous savez que du point de vu mathématique, on factorise : c'est à dire qu'on cherche un facteur commun et qu'on l'élimine. Nous allons faire un peu pareil : cherchons le facteur commun à ce programme d'installation.
Ca y ait ? Vous l'avez vu ? C'est la séquence "C:\Windows\Temp\" que l'on peut enlever de 22 lignes. Pour cela, comment faire ? Une solution très simple ! Cette séquence étant un emplacement, il suffit d'aller directement à cet emplacement pour ne pas avoir besoin de dire au programme "va le chercher là bas" mais "va le chercher là où je suis". La taille actuelle du programme est de 1460 octects, nous verrons combien il en fait après avoir enlevé la séquence inutile.
Voici le code sans cette séquence, en rouge se trouvent
les lignes rajoutées et en vert celles modifiées :
@ECHO OFF
Cls
Echo bienvenue dans le programme d'installation
Echo L'installation se fera dans le repertoire Ourprog du lecteur C
Echo preparation de l'installation.
pause
cls
Copy archiv.pak C:\Windows\Temp
Copy pkunzip.exe C:\Windows\Temp
C:
Cd \
cd Windows
cd temp
Pkunzip archiv.pak
Cd \
Echo Creation de l'arborescence du programme.
pause
cls
md ourprog
cd ourprog
md dat
md system
cd dat
md bin
md etc
Echo copie des fichiers.
pause
cls
Cd \
cd Windows
cd Temp
Copy System10.aka C:\ourprog
Copy System6.aka C:\ourprog\system
Copy System7.aka C:\ourprog\system
Copy System8.aka C:\ourprog\system
Copy system9.aka C:\ourprog\system
Copy System5.aka C:\ourprog\dat
Copy System1.aka C:\ourprog\dat\bin
Copy System2.aka C:\ourprog\dat\bin
Copy System3.aka C:\ourprog\dat\etc
Copy System4.aka C:\ourprog\dat\etc
Echo cloture de l'installation.
pause
cls
del System1.aka
del System2.aka
del System3.aka
del System4.aka
del System5.aka
del System6.aka
del System7.aka
del System8.aka
del System9.aka
del System10.aka
del Pkunzip.exe
del archiv.pak
Echo l'installation est finie !
Avec ces parties en moins, le programme fait maintenant 1135 octects.
Si vous avez des questions, n'hésitez pas à me contacter.
I. Une installation simple par copies
a) Fabriquer la structure et exposer les buts
b) Les commandes à apprendre
c) Début de réalisation, premier problème
et solution
d) Créer l'arborescence et y déplacer les fichiers
e) Vider le répertoire tampon
II. Une installation compressée par
copie
a) Compresser les fichiers
b) Comment décompresser ce pack à l'aide de Install.bat
?
c) Rectifier le code pour bénéficier de Pkunzip