Accueil > Dossiers > MS-DOS

MS-DOS (premier test pratique)
Qu'allons nous apprendre dans ce dossier ?

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 !


Faites vos fichiers à installer...

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.


Déroulement de la fabrication du programme d'installation...

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.


Aller au tutorial suivant >>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SOMMAIRE DU TUTORIAL 3

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

III. Dialoguer avec l'utilisateur durant l'installation

IV. Réduire la taille du fichier d'installation