Création de Setup
Je ne saurais trop vous conseiller de ne pas utiliser l'empaquetage fourni avec VB.
Que choisir pour faire un Setup?
Pour créer un setup, je vousrecommande d'utiliser IStool qui nécessite InnoSetup : Vous pouvez trouver un tutorial (pdf) sur le site de DarkSidious permettant de simplifier la création de script pour IStool en utilisant lassisatnt empaquetage de VB.

Sivous voulez faire un fichier d'install proprement, autant utiliser unbon outil, d'autant plus quand c'est une freeware ... Ces deux outilssont assez faciles à prendre en main et vous pourrez faire rapidementdes fichiers installations assez évoluées...

Comment trouver les DLL & OCX utilisés par son appli
Ne pas oublier d'enregistrer les OCX et DLL
- Soit avec IStools (grâceau setup, en suivant le tutorial, vous ne devrait pas avoir de besoind'ajouter les DLL ou les OCX à la main dans le script, vu que c'estautomatiquement fait)
- Soit en mode console avec regsrv32.exe (fourni avec MS Windows, pour dépanner ça peut servir)
RegSvr32 : i nscrit les fichiers .dll en tant que composants de commandes dans le Registre.
Syntaxe: regsvr32 [/u] [/s] [/n] [/i[:cmdline]] Nom_Dll
Paramètres
/u | Annule l'inscription du serveur. |
/s | Aucun avertissement ou message. |
/n | Indique de ne pas appeler DllregisterServer. Vous devez utiliser cette option avec le paramètre /i. |
/i | cmdline Appelle DllInstall en lui passant une ligne de commande facultative. Utilisé avec le paramètre /u, permet d'appeler .dll uninstall. |
Nom_Dll | Indique le nom du fichier .dll qui doit être inscrit. |
/? | Affiche l'aide à partir de l'invite de commandes. |
Exemples
Pourinscrire le fichier .dll pour le schéma Active Directory, taper :
regsvr32 schmmgmt.dll
Pourmémoire, vous pouvez lister les DLL et OCX nécessaire à vosapplicationssans utiliser l'empaquetage VB. Par exemple, vous pouvezutiliser :
- Findll de NullSpace (pour voir les principales DLL)
- ou télécharger un autre outil pour les lister plus complètement sur dependencywalker.com
Et pour faire tourner MS ACCESS ?
Pourutiliser une base MS Access, sur un poste, il faut que le(s) poste(s)surle(s) quel(s) vous comptez installer ton soft ai(ent) la mêmeversion du MDAC(Microsoft® Data Access Component) que celle qui voussert pour vos développement... Voir ce source #32761 pourla tester. Au besoin, un petit tour sur le site de Microsoft® pour récupérerune version plus récente du MDAC
Et bien sûre, ne pas oublier d'ajouter la base dans le Setup ;)
Tutorial pour ISTool 4 (complément) Meri à KAO 98
Tutorial de création dun programme dinstallation de lavoiture BigToy-DZ destinée à Re-Volt
1. Présentation de ISTool
Aucommencement, il y eu Inno Setup. Un langage de scriptpermettant decréer des programmes dinstallation très performant et dunequalitéprofessionnelle. Cependant, il sadressait à des développeurs departson langage qui nest pas à la portée de tout le monde. Cest ainsiquarrivaISTool : une interface graphique conviviale pour créer etcompilé des scriptsInno Setup.
2. Présentation du tutorial
Aucours de ce tutorial, nous allons créer un programmedinstallationdestiné à installer une voiture personnalisée pour Re-Volt. Pourcela,nous supposerons que nous disposons de tous les fichiers de la voituredansle dossier « C:\BigToyDZ ». Nous souhaitons donc créer un fichierSetup.exe qui sera créé dans le dossier « C:\BigToyDZ\Installation ».
Le fichier que nous allons créer installera par défaut lavoiture dans le dossier « C:\Program Files\Revolt\Cars\BigToyDZ »
3. Présentation de linterface du logiciel
Fenêtre principale :
Dans le volet de droite, nous pouvons atteindredifférentes sections :
- Script :script même du programme dinstallation
- Files and Dirs:dossiers et fichiers créés (ou copiés) sur la machine delutilisateur.(lutilisateur = personne qui exécute le fichiersetup.exe)
- Icons :ilsagit en fait des différents raccourci que lon souhaite créer surla machinede lutilisateur (raccourci du menu démarrer, du bureau,etc
)
- INI : gestionde fichiers *.ini (non étudié ici)
- Registry :gestion du registre système (non étudié ici)
- Install Delete: gestion des fichiers à supprimer lors de linstallation du logiciel (fichierstemporaires), (non étudié ici)
- Install Run :fichier exécuté (application temporaire) lors de linstallation du logiciel(non étudié ici)
- Uninstall Deleteet Uninstall Run : idem que Install Delete et Install Run mais lors de ladésinstallation du logiciel (non étudié ici)
- Messages :Peut-être des messages personnalisés !?
- Types : typesde fichiers personnalisés (non étudié ici)
- Components etTasks : gestion de type dinstallation (minimale, complète, personnalisée,
), (non étudié ici)
- Code:section réservée aux « Inno Setup Extension » (partie non officiellede InnoSetup permettant dintégrer du code Pascal Delphi-like pourpersonnaliser aumaximum le programme dinstallation. Cette partienécessitant certaineconnaissance en développement, elle ne sera pasétudiée ici)
- Langages :Différentes langues du programme dinstallation (non étudié ici)
- Les sectionsIsTool : section plus spécifiques à IsTool non étudiée ici.
Onpeut également remarquer un bouton « options » sur labarre doutilprincipale. Cest par là que nous allons commencer notreprogrammedinstallation ! Mais avant, il faut configurer IsTool. Menu fichieràPréférences : Il faut indiquer à IsTool le chemin du compilateur InnoSetupainsi que le fichier de langage qui sera utiliser pour les fichiercompiler.Tous ces fichiers sont disponibles sur le site de Inno setup.
Les options de notre programme :
La première page Compiler : options principale duprogramme
- Use setup loader et Dont merge duplicate files :laisser les options par défaut.
- Les options decompression: On peut sélectionner ici le type de compression désiré ainsi queleniveau de compression. Plus le niveau est élevée, moins le fichierseragros. Il sera également moins performant (moins rapide). Internalcompression faitégalement parti des niveaux de compression.
- Output directory: Il sagit du répertoire dans lequel sera créé le fichier Setup.exe
- Output basefilename : nom du fichier de sortie. Ici, il sappel Setup.exe, mais ilaurait pu sappeler MonFichierDinstallation.exe
- Source directory:information utilisée à titre indicatif. Elle ne définit en aucun caslesfichiers quy seront inclus dans le programme dinstallation, maisuniquementle chemin du dossier dans lequel nous trouverons les fichiersqui nousintéressent. Ici, les fichiers de notre voiture sont dansC:\BigToyDZ. Cestdonc ce chemin que nous mettons dans ce champ.
Lapage Disk Spacing permet dindiquer que, plutôt quedavoir un grosfichier setup.exe, nous en voulons plusieurs. Option pratiquepour ladistribution via disquette.
Lapage Application nous permet de saisir le nom delapplication, sonnuméro de version et diverses autres informations telles quelecopyright, la version minimum de Windows requise, ou encore le fichierlicence.Toutes ces options sont facultatives !
La page UserInfo permet de spécifier si on demande un nom dutilisateur lors delinstallation.
Lapage App Directory nous permet de spécifier dans queldossier noussouhaitons installer lapplication. Nous utilisons ici uneconstante{pf}. Cette constante signifie que nous souhaitonsinstallélapplication dans le dossier « Program files » delutilisateur (ex : «F:\Program Files »). Ainsi, on peut lui diredinstaller notre véhicule dans ledossier « {pf}\Revolt\Cars\BigToyDZ».
La page ProgramGroup: création du groupe de programme utilisateur (c'est-à-dire ledossierdans lequel seront créé les raccourci du menu démarrer. Par exemple,lesapplications Office 2003 (Word, Excel, etc.) sont installée dans legroupede programme Microsoft Office du menu démarrer). Dans notre cas,nous ne nousintéressons pas à ces options.
* La page Pages:ces options nous permettent de choisir les « pages » auxquelles peutavoiraccès lutilisateur. Une page, cest par exemple la page de choixdurépertoire, la page affichant le fichier licence, la page debienvenue, etc.
* La pageAppearancenous permet de modifier lapparence finale du programmedinstallation.Lapparence du fichier setup.exe est dictée par des fichiers*.bmp quise trouvent dans le répertoire dinstallation de Inno Setup. Pardéfaut,lapparence des programmes ressemble à des programmes dinstallationdesproduits microsoft.
* Enfin, la pageUninstallnous permet de spécifier quelques options spécifiques auprogramme dedésinstallation de notre programme, ou ici de notre voiture. Dansnotrecas, nous ne permettons pas de désinstaller la voiture. Ainsi, lefichiersetup.exe sera plus petit (il ninclura pas de fichier dedésinstallation).
Voilà pourles options générales de notre programmedinstallation ! Nous allonsdonc pouvoir passer à la sélection des fichiersque nous souhaitonsinstaller !
4. Sélection des fichiers à installer
Nb: Etant donné le nombre important doptions que lonpeut définir lorsde cette étape, nous nétudierons que celles qui nousintéressent pourlinstallation dune voiture du jeux Revolt. Vous pourreztrouver delaide sur les autres options sur le site Internet de Inno Setup, ousurla Faq Inno Setup.
Le choixdes fichiers (ainsi que larborescence derépertoire) se réalise dans lasection « Files and dirs ». Il suffit de choisirles fichiers que lonsouhaite distribuer et de définir les propriétés etoptions liés à cesfichiers.
Pour ce faire, nous choisissons « New Item » dans le menucontextuel (ou par le menu « Edition ».
Ilest également possible de choisir Insert Files
pourimmédiatementchoisir un fichier, ou encore Create Directory pour quelinstallationcrée le répertoire souhaité sur la machine de lutilisateur.
- Source :fichier que lon souhaite distribuer.
- Dest Dir:dossier de lutilisateur dans lequel sera copié le fichier. On utiliseici desconstantes. {app} à dossier définit plus haut (dans les optionsgénérales dufichier setup.exe) : indique que lon souhaite copié lefichier sélectionnédans le dossier de lapplication de lutilisateur(ici : « C:\Programfiles\Revolt\Cars\BigToyDZ »). On pourrait égalementinstaller cette voituredans le dossier de Windows (soyons fous). Pourcela, nous aurions indiqué icila constante {win}.
- Dest. Name:nom du fichier sur la machine de lutilisateur. Si le fichier porte lemême nomque le fichier source, il est inutile dentrer une valeur dansce champ. Onaurait également pu mettre : « axle.prm ».
- Font Install:si lon souhaite installer une police particulière en plus de cefichier.Cette option nest utilisée que dans des cas particuliers.
- Le cadre Attributesnous permet de spécifier des propriétés du fichier tel que « Lecture seule » ou« Fichier Caché ».
- Le cadre Flagsnouspermet de spécifier des options avancées. Dans notre cas, nous nenousoccupons pas de ces options. Nous pourrions plus tard spécifier quele fichier« LisezMoi.txt » est un fichier Lisez moi (« Is readme »).
Lesautres onglets ne nous intéressent pas pour la copiedune voiture deReVolt. Longlet Common nous permet dindiquer que, pour lefichieractuel, une version spéciale de Windows est nécessaire. LesongletsCoponents et Tasks servent à spécifié à quelle tâche delinstallation(installation complète ou minimale, etc.) ce fichierappartient. Le dernieronglet nous est utile si lon souhaite gérerdifférents langages. Ce nest pasle cas ici.
Onpeut voir ici larborescence finale de linstallationde la voiture «bigToy-DZ ». On peut voire quun dossier « Divers » sera créédans lerépertoire « C:\Program files\Revolt\Cars\BigToyDZ » delutilisateur.On copiera quatre images dans ce dossier. On remarqueégalement que le fichierLisezMoi.txt à été « flagué » « isreadme » cequi signifie que ce fichier seraaffiché à la fin de linstallation. Ona également définit lattribut «ReadOnly » du fichier Parameters.txt à« vrai » afin que ce fichier ne puissentêtre modifié par lutilisateurfinal.
Voici le script final de linstallation :
| Code: |
| [Setup] OutputDir=C:\BigToyDZ\Installation SourceDir=C:\BigToyDZ OutputBaseFilename=Installation AppCopyright=Kao ..98 © 2003 AppName=BigToy-DZ AppVerName=BigToy-DZ version 1.0 DefaultDirName={pf}\Revolt\Cars\BigToyDZ Uninstallable=false [Files] Source: axle.PRM; DestDir: {app} Source: body.prm; DestDir: {app} Source: hull.hul; DestDir: {app} Source: LisezMoi.txt; DestDir: {app}; Flags: isreadme Source: parameters.txt; DestDir: {app}; Attribs: readonly Source: springs.PRM; DestDir: {app} Source: tiresLOD.PRM; DestDir: {app} Source: ToyecaTx.bmp; DestDir: {app} Source: en_action2.jpg; DestDir: {app}\Divers Source: en_action.jpg; DestDir: {app}\Divers Source: grosplan_back.jpg; DestDir: {app}\Divers Source: grosplan_front.jpg; DestDir: {app}\Divers [Dirs] Name: {app}\Divers |
Une fois les fichiers sélectionnés, on peut compilé lesetup puis lessayer.
Et le tour est joué ! Notre fichier Installation.exe a étécréé et est fonctionnel !
Exemple de script pour la section« Code »
Pourdétecter le dossier derevolt, ajouter une section "code" à votre script(tout en bas duscript de préférence) et ajoutez-y le code suivant :
| Code: |
| {Code permettant de détecter le répertoire d'installation de Re-Volt} {La fonction GetRevoltPath est utilisée dans le script pour mettre à jour le DefaultDirPath} var {Chemin final de Re-Volt} RevoltPath: string; {Cette fonction vérifie qu'il ne s'agit pas de la démo} function EstDemo(RVPath: String) : Boolean; begin if FileExists(RVPath + '\Mp3dec.asi') = true then begin Result:=true; end else begin Result:=false; end end; {Fonction éxecutée lors de l'initialisation du setup} function InitializeSetup(): Boolean; begin {Détection de l'installation de ReVolt via la clé de registre DirectPlay} if RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\microsoft\directplay\Applications\Re-Volt') = true then begin {La clé existe, on recher donc la valeur} if RegValueExists(HKEY_LOCAL_MACHINE,'SOFTWARE\microsoft\directplay\Applications\Re-Volt','Path') = truethen begin {On a trouvé qqch. Maintenant, on essaie de lire la valeur} ifRegQueryStringValue(HKEY_LOCAL_MACHINE,'SOFTWARE\microsoft\directplay\Applications\Re-Volt','Path',RevoltPath)=true then begin if EstDemo(RevoltPath) = true then begin if MsgBox('Attention ! Ilsemblerait que vous n''ayez que la démo du jeu Re-Volt d''installée survotre ordinateur. Or, le jeu complet est nécessaire.' #13#13'Souhaitez-vous continuer l''installation ? (Attention d''indiquer lechemin correct de Re-Volt !)',mbConfirmation, MB_YESNO) = IDYES then begin Result:=true; end else begin Result:=false; end end else begin Result:=true; end end else begin if MsgBox('Erreurlors de la recherche du répertoire d''installation de Re-Volt.' #13#13'Pourtant, il semble que Re-Volt soit installé sur votre machine.'#13#13 'Souhaitez-vous continuer l''installation ? (Attentiond''indiquer le chemin correct de Re-Volt !)',mbConfirmation, MB_YESNO)= IDYES then begin RevoltPath:= 'C:\Program files\REVOLT'; Result:=true; end else begin Result:=false; end end end else begin if MsgBox('Erreur lors de larecherche du répertoire d''installation de Re-Volt.' #13#13 'Pourtant,il semble que Re-Volt soit installé sur votre machine.' #13#13'Souhaitez-vous continuer l''installation ? (Attention d''indiquer lechemin correct de Re-Volt !)',mbConfirmation, MB_YESNO) = IDYES then begin RevoltPath:= 'C:\Program files\REVOLT'; Result:=true; end else begin Result:=false; end end end else begin if MsgBox('Attention : il semblerait que Re-Volt ne soit pas installé.' #13#13'Souhaitez-vous continuer l''installation ? (Attention d''indiquer lechemin correct de Re-Volt !)',mbConfirmation, MB_YESNO) = IDYES then begin RevoltPath:= 'C:\Program files\REVOLT'; Result:=true; end else begin Result:=false; end end end; function GetRevoltPath(Default: String) : String; begin Result:=RevoltPath+'\Cars\BigToyDZ'; end; |
Puis,repérez la ligne
| Code: |
| DefaultDirName={pf}\revolt\Cars\BigToyDZ |
etremplacez par
| Code: |
| DefaultDirName={code:GetRevoltPath} |
Bon setup ;)
++
Zlub