; Documentation sur les fichiers INFs ; Auteur SNOOPY ; ******************************************* ; ***** Déclaration d'un fichier inf. ***** ; ******************************************* [version] signature="$CHICAGO$" ; Ceci est donc un fichier INF! ; Les lignes commencant par un point-virgule sont des commentaires. ; Les lignes vides sont ignorées. ; Le fichier INF ne peut pas depasser 64 KO ; Un seul fichier INF est exécuté à la fois ! ; Penser à utiliser les guillemets " ", voire des doubles guillemets, surtout pour les textes avec espaces. ; Le chemin d'accès du fichier Inf, ne doit pas être au format Nom Longs de Windows 95... ; Utilisez des majuscules pour les noms de fichiers courts ( 8+3 ) ; ****************************************************************** ; ***** Sections "Titres" que le fichier Inf va exécuter ***** ; ****************************************************************** ; Le lancement des fichiers INF, se fait par l'appel d'une section qui définit l'ensemble ; des actions à réaliser, via l'appel des autres sections, qui font le boulôt. [BaseWinOptions] ; Section à installer lors de l'installation de Windows. [Install.Section] ; Section à Installer par programme ou appel: ; ex: "RunDll setupx.dll,InstallHinfSection Install.Section 4 Chemin\Didacticiel.inf" [DefaultInstall] ; Section à installer par défaut à partir du menu contextuel. ; Ces sections appeleront d'autres sections qui feront le boulôt... CopyFiles = Demo.Copy ; Copier des fichiers DelFiles = ; Effacer des Fichiers RenFiles = ; Renommer des fichiers AddReg = Demo1.Reg, Demo2.Reg ; Ajouter des clés, variables, ou valeurs dans la base de registre. DelReg = Demo.Efface ; Supprimer des clés, variables, ou valeurs ... UpdateInis = ; Ajouter, modifier, supprimer des entrées d'un fichier INI ; ********************************************************************* ; *** Comment copier, effacer, renommer des fichiers *** ; ********************************************************************* ; Dans un 1er temps, déclarer les sections, chacune concernant un ou plusieurs fichiers ; à copier vers la même destination... [Install.Section] CopyFile = Demo.Copy,Demo2.Copy ; Appel des sections de copie de fichiers DelFiles = Demo.Delete ; Appel de la section effacer des fichiers RenFiles = Demo.Rename ; Appel de la section renommer des fichiers CopyFiles = @Fichier.txt ; Copier le seul fichier désigné ; Ensuite, définir la destination des fichiers de chaque section [DestinationDirs] Demo.Copy2 = "C:\TEMP" ; Chemin d'acces de la destination en clair Demo.Delete = 11,shellext ; 11 pour %11% ou Windows\Systems, et sous-répertoire \SHELLEXT\ ; ou chemin des fichiers pour effacer ou renommer DefaultDestDir = 30,Temp ; Chemin par défaut pour le reste des sections, et les copies directes (@file.ext) ; S'il n'est pas défini, ce sera 10 pour Windows\ ; Il faut aussi définir la (les) source(s) de la copie [SourceDisksNames] 55="Nom quelquonque","",1 ; [N° disque / disquette] = [Description] , [Nom disquette] , [n° de série disquette] [SourceDisksFiles] Winrar.exe=55 ; [Nom du fichier] = [n° disque ci-dessus] [Demo.Delete] file1 ; Nom du fichier à effacer [Demo.Rename] file41,file42,fileInterm, Flag ; Nouveau nom du fichier, Ancient nom, Nom intermédiaire, Flag [Demo.Copy] ; Section liste de fichiers fichier.ext ; Nom de destination fichier2.ext, file2.ext ; Nom du fichier source facultatif, s'il diffère du nom de destination fichier3.ext, file3.ext , File.$$$ ,flag ; Nom temporaire facultatif, sera rechangé lors du prochain redémarrage ; Utile pour remplacer des fichiers ouverts par Windows ; Flags: ; 1 ? ; 2 ? A voir avec DOS? ; 4 Force la copie quel que soit le conflit de version. ; 8 Force le renommage si le fichier est ouvert, pour copier quand même. (redémarrage) ; 16 Interdirait d'écraser un fichier même plus ancient. ; 32 Supprime le dialogue, si conflit de version, mais n'écrase pas un fichier plus récent. ; Combinaisons: 9, 12, 33, 40 ; ****************************************************************** ; *** Entrer des données dans la base de registre *** ; ****************************************************************** [Demo1.Reg] ; Valeurs de type Alphanumérique ( par défaut ) HKCR,_XXX,"Valeur 1",,"Alpha123x445" ; Alphanumerique par défaut HKCR,_XXX,"Valeur 2",0,"Alpha123455x" ; 0 ou rien pour écraser la valeur précédente HKCR,_XXX,"Valeur 3",2,"Alpha123555x" ; 2 préserve une valeur exixtante ; Valeur de type Binaire HKCR,_XXX,"Valeur binaire 1",1,00,00,00,04 HKCR,_XXX,"Valeur binaire 2",3,00,00,00,00,A2,FA,D4 ; Valeur de type DWord HKCR,_XXX,"Valeur Dword",65537,134 ; Valeur écrite en décimal ; Valeur par défaut d'une clé HKCR,_XXX,,,"Valeur par défaut" ; NB: Il faut mettre en guillemets s'il y a des espaces. ; ****************************************************************** ; *** Supprimer des entrées de la base de registre *** ; ****************************************************************** [demo.efface] HKCR,_YYY ; Supprime la clé et ses sous-clés ; ************************************************* ; *** Travailler avec les fichiers INI *** ; ************************************************* [update-ini.Section] ; Fichier INI, Section, [ancienne entrée], [nouvelle entrée], [flags] %11%\Win.ini, Section1,, Valeur1=2 ; Ajouter une entrée %11%\Win.ini, Section2, Valeur3=*, ; Effacer une entrée %11%\Win.ini, Section4, Valeur=1, %valeur% ; Remplacer une entrée ; ************************************** ; *** Utilisation de variables *** ; ************************************** ; Certaines variables peuvent être définies dans la section [Strings], et être utilisées avec leur nom entre %. ; Le but sera soit de rendre plus lisible, soit de faciliter une relocalisation. [Strings] Nom4 = "Texte du nom" Dossier = "sous_répertoire\etc\" [Demo2.Reg] HKCR,_XXX,%30%\%Dossier%,,%Nom4% ; Un certain nombre de variables ( LDID ), sont prédéfinies, et représentent des dossiers système, ; quelque soit leur position effective ( ça marchera aussi bien si on a installé Windows en E:\Win98\ ). ; ; %01% Répertoire courant ; %10% Windows ; %11% Windows\System ; %13% Windows\Command (DOS) ; %17% Windows\INF ; %18% Windows\Help ; %20% Windows\Font ; %24% Applications ; %30% Racine du lecteur de boot ; %34% Ancient répertoire DOS s'il existe. ; %28700% Program Files ; ************************************************ ; *** Comment créer un répertoire *** ; ************************************************ [update-ini.Section] setup.ini, progman.groups,, "group1=""Programmes\Démarrage""" ; "NomUnique = ""Chemin\répertoire""" ; par défaut de chemin, c'est dans le menu démarrer setup.ini, progman.groups,, "group2=""%10%\Bureau\Snoopy""" ; Sinon, préciser le chemin complet ; Il semble qu'il faille y créer un raccourci pour que ca marche ; ************************************************ ; *** Comment ajouter un Raccourci *** ; ************************************************ [update-ini.Section] setup.ini, progman.groups,, "group4=""Programmes\Démarrage""" setup.ini, group4,, " ""Texte du raccourci"", ""Chemin\Prog.Exe ou .pif"", ""Fichier icone"", n° d'icone,, ""Chemin démarrer en"" " ; NB on devrait aussi pouvoir le supprimer: setup.ini, group4,, " ""Texte du raccourci"" " ; **************************************************** ; *** Comment lancer un exécutable ? *** ; **************************************************** HKLM,Software\Microsoft\Windows\CurrentVersion\RunOnce,"Texte à Afficher",,"%10%\Programme.exe" ; NB: Le nom de la clé est libre, unique, dans ce fichier INF, et la valeur alphanumérique est exécutée ; ************************************************************** ; *** Comment renommer fichiers et répertoires *** ; ************************************************************** [rename.reg] HKLM,"Software\Microsoft\Windows\CurrentVersion\RenameFiles\Nom_bidon",,,%25% ; Répertoire amont HKLM,"Software\Microsoft\Windows\CurrentVersion\RenameFiles\Nom_bidon",INF,,"INF2" ; Attributs du répertoire: R=1; H=2; S=4; HS=6; SHR=7 HKLM,"Software\Microsoft\Windows\CurrentVersion\RenameFiles\Nom_bidon2",,,%25% HKLM,"Software\Microsoft\Windows\CurrentVersion\RenameFiles\Nom_bidon2","NOTEPAD.EXE",,"NOTEOLD.EXE,2" ; Utiliser les majuscules pour que le système reconnaisse un nom court ; ********************************************* ; *** Désinstallation automatisée *** ; ********************************************* ; Elle se fait par une entrée de la base de registre, qui lancera le programme chargé de la désinstallation ; Ce programme de désinstallation peut aussi être un fichier INF, dont on appelle une section titre ; qu'on peut nommer [Defaut.Uninstall] , et qui exécute les opérations de désinstallation ; Créer l'entrée de désinstallation: [DefautInstall] ; AddReg = Uninst.Reg [Uninst.Reg] HKLM,SoftWare\Microsoft\Windows\CurrentVersion\Uninstall\"Nom unique",,, HKLM,SoftWare\Microsoft\Windows\CurrentVersion\Uninstall\"Nom unique","DisplayName",,"Texte descriptif" HKLM,SoftWare\Microsoft\Windows\CurrentVersion\Uninstall\"Nom unique","UninstallString",,"rundll setupx.dll,InstallHinfSection Default.Uninstall 4 %Chemin%\Didacticiel.inf" ; Créer la section de désinstallation: [Defaut.Uninstall] DelReg = Prog.Reg, Uninst.Reg ; Penser à supprimer l'entrée ci-dessus ! DelFiles = Prog.Files ; ****************************************** ; *** Afficher un titre général *** ; ****************************************** ; l'astuce consiste à utiliser RunOnce\Setup, qui va afficher un texte [Titre.Reg] HKLM,Software\Microsoft\Windows\CurrentVersion\RunOnce\setup," Titre de mon Fichier INF",0,"" HKLM,Software\Microsoft\Windows\CurrentVersion\RunOnce\setup," ___________________",0,"" HKLM,Software\Microsoft\Windows\CurrentVersion\RunOnce\setup," Snoopy",0,"" HKLM,Software\Microsoft\Windows\CurrentVersion\RunOnce\setup," ",0,"" HKLM,Software\Microsoft\Windows\CurrentVersion\RunOnce\setup,"Lancement de l'installation...",0,"RunDll32.exe advpack.dll,LaunchINFSection Didacticiel.inf, Install.Section" [Install.Section] ; Section réelle d'installation ; ************************************************** ; *** Question: Poursuivre Oui/Non ? *** ; ************************************************** ; Uniquement dans une section appellé indirectement (pas DefaultInstall) ; c'est donc une fonction à associer avec la précédente ! [Install.Section] BeginPrompt = Question [Question] Prompt="Vous allez tester l'installation de Snoopy! Poursuivre ?" ButtonType=YESNO Title="Didacticiel par Snoopy..." ; ********************************************* ; *** Notes diverses *** ; ********************************************* ;InstallType = 14 ; 1 = compact, 2 = typical, 4 = portable, 8 = custom Reboot = 1 ou 2 ; force un redémarrage du système...