Remerciements
--------------------------------------------------------------------------------------------------------
Un grand merci à Jacques Chaillot, Tom Krieg, Debbie, Alex, Nico57, antp, Harkonnen, Bertil Isberg, Uncle Fano, Jordan Russel, PH, et tous ceux que j'oublie pour toutes les infos qu'ils ont posté de ci de là et qui m'ont permis de constituer ce HowTo.
Merci aussi à Côme pour son forum qui constitue une bonne initiative même si pour l'instant il n'y a pas encore foule

Remarque : ce document étant régulièrement remis à jour grâce à vos infos, merci de ne pas hésiter à le commenter abondamment, et notamment si vous trouvez des erreurs ou avez des commentaires à faire. Toute remarque constructive est toujours bonne à prendre.
--------------------------------------------------------------------------------------------------------
Préambule
--------------------------------------------------------------------------------------------------------
Programmer des applications sous Paradox c'est bien, mais pouvoir les distribuer sans 10 pages de guide d'installation pour s'assurer que le futur utilisateur aura bien réalisé toutes les opérations requises, ou sans déplacer un tech pour si peu c'est mieux !
Et ça devient même quasi impératif quand on vend ses applications au grand public à qui on ne peut pas demander de mettre les mains dans le cambouis

Dès lors, la réalisation d'un installeur qui se chargera de l'ensemble des opérations devient une nécessité. Malheureusement, en la matière la version 10 de Paradox constitue une véritable régression fonctionnelle. En effet, depuis que Borland et Corel distribuent des runtimes, ceux-ci ont toujours été livrés avec un installeur capable d'installer à la fois le runtime certes, mais aussi une application personnalisée. C'était soit l'installeur du runtime lui-même qui s'en chargeait (comme en V5), soit un logiciel spécialisé type InstallShield Express livré avec la version developper (comme il y a peu encore, en V9). Or ce n'est plus le cas aujourd'hui. Plus aucun outil n'est livré par Corel avec Paradox pour réaliser une installation complète

Du coup, ce constat fait, il ne nous reste plus qu'à trouver la meilleur solution de remplacement possible, et c'est donc précisément l'objet de ce HowTo : vous proposer une solution professionnelle, fiable, gratuite et multilingue pour réaliser des installeurs pour nos applications

--------------------------------------------------------------------------------------------------------
Réalisation d'un installeur pour une application Paradox 10
--------------------------------------------------------------------------------------------------------
Critères de choix de l'installeur :
- Tout le monde en conviendra aisément, toujours devoir mettre la main au porte monnaie c'est agaçant à la longue. En clair, s'il peut être gratuit c'est pas plus mal.
- Ensuite, Paradox 10 tournant sur tous les Windows de 95 OSR2 à Me et de NT 4.0 SP-6 à XP, il nous faut un installeur capable de faire de même.
- Puis, comme on est un certain nombre à programmer des applications multilingues, l'installeur doit l'être aussi.
- Par ailleurs, il doit évidement pouvoir prendre en charger l'installation et la désinstallation du runtime (en plus de notre application).
- Et enfin, il doit être suffisamment puissant pour permettre un minimum d'opérations indispensables à la réalisation d'une bonne installation (dont l'installation d'icônes un peu partout, de polices de caractères, la création de fichiers ini, la lecture/écriture dans la base de registre, l'exécution de programmes externes, le recueil d'informations sur l'utilisateur, un test de la présence d'un runtime P10 déjà installé, de la version de Windows, de l'espace disque disponible, des droits de l'utilisateur, etc., etc.).
Et...
Miracle... un logiciel a finalement répondu avec brio à tous ces critères

Il s'agit d'Inno Setup 4 de Jordan Russell

1. Installation d'Inno Setup (IS)
IS est un Freeware ; y compris s'il est utilisé pour des applications commerciales !
Cependant, comme toujours si au final vous décidez de l'utiliser (surtout dans le cadre d'applications commerciales) et appréciez ses qualités, je vous encourage quand même à aider son auteur en donnant une somme à votre libre appréciation ici.
Mais revenons au logiciel.
C'est vraiment le produit rêvé : il tourne sur tous les Windows 32 bits (de 95 à XP), gère l'installation et la désinstallation des produits installés, crée des .exe uniques (utile pour mettre en téléchargement), peut réaliser toutes les opérations souhaitées en introduction, et est vraiment TRES simple d'emploi

1.1 Installation d' IS 4.0.1
Vous pouvez télécharger le logiciel ici.
Pour l'installer, rien de particulier. Double cliquez sur le fichier téléchargé et suivez les instructions.
1.2 Téléchargement de la langue des futurs installeurs (le français par exemple)
Par défaut, IS crée des installeurs en anglais. Néanmoins, si vous voulez que votre installeur (pas IS lui-même) soit dans une autre langue, ou même carrément multilingue (en rajoutant le français par exemple), vous devez télécharger des fichiers de traductions ici.
Remarque : attention à bien prendre les fichiers de traduction dans la version la plus proche de celle d'IS. Par exemple, pour IS 4.0.1, prendre une traduction française 4.0.0
2. Mise en place de l'environnement de travail
Etant donné que pas mal de fichiers vont être concernés par la création de cet installeur, un peu de méthode ne peut pas faire de mal.
Aussi je vous suggère un contexte et une arborescence pour y voir clair

2.1 Le contexte de création de l'installeur
A partir de maintenant et pour la suite de ce HowTo, je vais prendre l'exemple d'une application que j'ai réalisé sur Paradox. C'est juste pour clarifier le propos en évitant les longues tentatives de description de ce qu'il faudrait mettre un peu partout.
Cette application s'appelle "Golf Expert", est actuellement en version 2.0, pour l'instant en français/anglais et consiste à réaliser l'analyse chiffrée de parties de golf. Pour cela des cartes de saisie de score spéciales réalisées sur Acrobat peuvent avoir à être imprimées.
Voilà. Ce sont les seules informations utiles pour comprendre la programmation de l'installeur.
2.2 Créer l'arborescence de travail
Pour ne pas tout mélanger, une arborescence propre s'impose.
Je vous suggère celle-ci (en vous rappelant que dorénavant tout sera mis en œuvre dans le cadre d'un installeur multilingue français/anglais)...
X:\...\CD Golf Expert 2
..............|__Golf Expert
..............|....|__Exe
..............|....|__Fonts
..............|....|__Help
..............|....|__Icon
..............|....|__Images
..............|....|__Ini
..............|....|__Licences
..............|....|__Priv_db
..............|__Racine CD
...................|__AcroRead
........................|__English
........................|__Francais
...................|__Autorun
...................|__Cards
........................|__English
........................|__Francais
...................|__Pdox10Run
L'utilisation d'adressage relatif fait que le nommage du chemin jusqu'au nom du répertoire de travail n'a pas d'importance (X:\...\CD Golf Expert 2). Vous pouvez mettre ce répertoire où vous voulez et lui donner le nom que vous voulez.
Dans la racine de ce répertoire, vous mettrez les fichiers de traduction téléchargés (.isl) et le script de création de l'installeur une fois que nous l'aurons créé.
Le répertoire "Golf Expert" accueillera lui dans sa racine l'ensemble des fichiers de l'application (fiches, états et librairies distribués évidement), SAUF, les tables susceptibles d'être modifiées, enrichies par les utilisateurs de l'application et pour lesquels vous ne voudriez en aucun cas qu'elles soient écrasées si l'utilisateur venait à faire une réinstallation. Ces fichiers particuliers (si vous en avez) doivent aller dans le sous-répertoire "Priv_db" pour faire l'objet d'un contrôle avant leur éventuel transfert dans leur répertoire d'installation.
Remarque : le choix de l'anglais pour les noms des sous-répertoires est personnel. Vous faites bien ce que vous voulez

Les autres sous répertoires servent ensuite à classer les fichiers nécessaires à l'installation ou au fonctionnement de l'application mais qui ne sont ni des fichiers Paradox, ni des fichiers devant figurer en clair sur le CD-Rom. En effet, pour éviter les doublons, on placera ces derniers de préférence directement dans la structure du CD.
\Exe = fichiers exécutables. Personnellement j'en utilise 3 : deux affichant le message d'avertissement avant désinstallation du RT (en français ou en anglais), et un nécessaire à la protection de Golf Expert mais là c'est secret défense ! lol

\Fonts = police de caractères personnalisée propre à Golf Expert (si, si, j'en ai une)
\Help = fichiers d'aide de Golf Expert (.hlp/.cnt)
\Icon = icône utilisé pour les raccourcis Golf Expert et le désinstalleur
\Images = splash screen personnalisé pour Golf Expert et images de personnalisation de l'installeur
\Ini = fichier INI servant à paramétrer le lancement du runtime
\Licences = fichiers contenant les accords de licence de Golf Expert en français et en anglais
\Priv_db = tables ne devant pas être réinstallées si elle le sont déjà
Le répertoire "Racine CD" doit quant à lui recevoir la structure et les fichiers du futur CD, tels qu'ils pourront être directement gravés.
Dans la racine de ce répertoire on trouvera donc les fichiers des notes de version dans toutes les langues (donc "LisezMoi.txt" & "ReadMe.txt" dans le cas présent), le futur fichier "Install.exe" et le fichier "Autorun.inf" que l'on verra en fin de HowTo.
Les notes de version doivent toujours être lisibles en clair sans installation préalable pour pouvoir donner des consignes avant installation.
Dans le sous répertoire "\AcroRead" on trouvera les versions d'Acrobat Reader (une par langue).
Dans le sous répertoire "\Autorun" on trouvera les fichiers nécessaires à la fonction d'Autorun (cf. plus bas dans le HowTo).
Dans le sous répertoire "\Cards" on trouvera les cartes de saisies de score spéciales de Golf Expert (classées par langues)
Et enfin dans le sous répertoire "\Pdx10Run" on mettra le runtime Paradox 10.
2.3 Transférer les fichiers
Cette arborescence créée, vous pouvez maintenant la remplir en transférant dedans la copie de tous vos fichiers nécessaires.
Vous trouverez les Acrobat Reader 5.05 dans chaque langue en libre téléchargement sur le site Web d'Adobe ici.
La version 5.05 est la plus appropriée car elle est la plus récente à fonctionner sur toute l'étendue de la plage de fonctionnement de Paradox 10. Depuis la version 5.1, Windows 95 n'est plus supporté

Vous trouverez enfin le runtime Paradox 10 en libre téléchargement sur le site FTP de Corel ici.
3. Rédaction du script de l'installeur
Et voilà. Cette fois-ci on commence...

Créez tout d'abord un script vierge correctement nommé et enregistré dans la racine de votre répertoire de travail.
Pour ce faire :
- lancez IS,
- cliquez sur "File", puis "New",
- cliquez sur "Create a new empty script file", puis "Next" et "Finish",
- cliquez sur "File", puis "Save",
- pointez le dossier " X:\...\CD Golf Expert 2",
- nommez le script "Script Golf Expert" et cliquez sur "Enregistrer".
N'utilisez pas le Wizard car il ne vous apportera rien de plus que les explications ci-dessous.
A partir de là, on peut débuter la rédaction du script.
Cependant et pour faire simple, je vous propose de télécharger le mien pour vous permettre dans un premier temps de n'avoir qu'à l'adapter et ainsi éviter des erreurs de recopie ou de copier/coller malheureux depuis cette page HTML.
Je vous mets donc mon script en téléchargement ici.
Enfin, avant de commencer, voilà aussi ce qu'il faut savoir :
- L'installation du runtime 10 peut être paramétrée en ligne de commande pour qu'elle se fasse sans poser la moindre question, ni proposer de validation.
Paramétrage : "Pdx10Run.exe /q INSTALLDIR="..." /I"
- Elle peut aussi se faire en paramétrant le répertoire d'installation (cf. ci-dessus).
- Comme le runtime a déjà un installeur qui ne peut pas prendre en charge l'installation d'une application, c'est l'inverse qui va être fait : c'est l'installeur de l'application qui va s'occuper de tout ; y compris de lancer l'installeur du runtime.
- Pour laisser le choix de la destination de l'installation complète (runtime & appli), si le runtime doit être installé il le sera dans un sous répertoire de l'application.
Sinon, il aurait fallu demander 2 destinations (ce qui serait possible mais à programmer), ou laisser le runtime s'installer sur une destination fixée d'avance (donc forcement sur le C car on ne peut pas être sûr qu'il y ait d'autres partitions) ce qui pourrait poser problème dans certain cas, notamment si le C était plein ou inaccessible.
Si vous tenez absolument à laisser le choix de l'emplacement pour le RT, consultez ce HowTo.
- En revanche, le runtime ne sera pas forcement installé. Si un runtime Paradox 10 (et éventuellement même un Paradox 10 complet) s'avère déjà installé sur le PC, l'installeur de l'application ne procèdera pas à une nouvelle installation car l'installeur propre au runtime aurait refusé d'installer à nouveau le RT dans le nouveau répertoire désigné.
- Côté désinstallation éventuelle du runtime, elle sera elle aussi lancée par le désinstalleur de l'application, avec une demande de confirmation à l'utilisateur.
- Pour ce faire, j'ai dû programmer un tout petit fichier exe faisant afficher une boite de dialogue informant l'utilisateur avant la demande de confirmation de la désinstallation du runtime. C'est la SEULE chose qu'IS ne savait pas faire car ses scripts ne s'appliquent pas à la phase de désinstallation ; et hors script il n'existe pas de fonctionnalité permettant de faire afficher une boite de dialogue personnalisée.
Ce petit exe fait 2,5Ko et a été programmé sur MASM32 V8.
Voilà.
Et maintenant passons au contenu du script...
Section [Setup]
= paramétrages généraux
; Nom de l'application (obligatoire)
AppName=Golf Expert
; Nom de l'application avec numéro de version (obligatoire)
AppVerName=Golf Expert 2.0
; Nom de l'éditeur de l'appli pour la fenêtre "Ajout/Suppression de programme"
AppPublisher=Xxxxxxxxxxx
; Adresse du site de l'éditeur pour la fenêtre "Ajout/Suppression de programme"
AppPublisherURL=http://www.golfexpert.net
; Adresse de la page du support de l'éditeur pour la fenêtre "Ajout/Suppression de programme"
AppSupportURL=http://www.golfexpert.net/support
; Adresse de la page des mises à jour pour la fenêtre "Ajout/Suppression de programme"
AppUpdatesURL=http://www.golfexpert.net/download
; Nom du mutex de l'application dont l'absence est à vérifier avant de lancer l'install
; Cf. annexe pour le code ObjectPal à placer pour sa création
AppMutex=GolfExpert
; Nom du répertoire d'installation par défaut dans "Program Files" (obligatoire)
; {pf} = chemin d'accès au répertoire "Program Files"
DefaultDirName={pf}\Golf Expert
; Nom du groupe dans le menu Démarrer>Programmes
DefaultGroupName=Golf Expert
; Vérifie que l'espace disque soit suffisant : 50Mo pour le runtime Paradox 10
; quant à Acrobat Reader il lui faut 24Mo, mais il utilisera les 25/30Mo aloués en fait aux fichiers
; temporaires d'installation du runtime et qui seront libérés avant l'install d'Acrobat
ExtraDiskSpaceRequired=52428800
; Version minimum de Windows 9x ou Windows NT pour démarrer l'installation
; 4.0.1111=min 95 OSR2 et 4.0sp6=min NT 4.0 SP-6 en techno NT
; Ce paramétrage correspond à Paradox 10 (cf. aide pour plus de détails)
MinVersion=4.0.1111,4.0sp6
; Nom du fichier de l'installeur a créer - "Install" est plus international que "Setup"
OutputBaseFilename=Install
; Nom du sous-répertoire dans lequel sera créé l'exe de l'installeur
OutputDir=Racine CD
; Droits minimum nécessaires pour lancer l'installation (le RT10 requiert des droits d'administrateur sous NT/2000/XP)
PrivilegesRequired=admin
; Indication que l'on veut créer un installeur multilingue avec fenêtre de choix de la langue
ShowLanguageDialog=Yes
; Utilisation d'une compression globale des fichiers (taux de compression meilleur)
; et de l'algorithme de compression bzip2 plus performant que le zip par défaut
SolidCompression=Yes
Compression=bzip
; Emplacement de l'icône qui servira pour personnaliser l'appli dans "Ajout/Suppression de programme"
; {App} = chemin du répertoire d'installation de l'application - cf. ci-dessus
UninstallDisplayIcon={app}\icon\Golf_Exp.ico
; Demande de faire afficher une fenêtre de saisie d'infos perso (Nom+organisation)
UserInfoPage=Yes
; Ne pas faire afficher d'infos perso récupérées sur l'install d'autres logiciels
UsePreviousUserInfo=No
DefaultUserInfoName=
DefaultUserInfoOrg=
; Emplacement d'une image personnalisée à afficher sur le 1er et dernier écran de l'installeur
; L'image doit être en 256 couleurs max sur 164x314 pixels
WizardImageFile=Golf Expert\images\Golfeur.bmp
Section [Languages]
= section de paramétrage des langues à utiliser (1 ligne par langue)
; Mention des langues à utiliser avec pour chacune :
; - le fichier de traductions téléchargé sur le site d'Inno Setup (cf. plus haut),
; - si besoin, un fichier de traductions personnalisées de certains libellés qui s'imposeront
; sur les traductions par défaut (le .isl placé en dernier s'impose sur les précédents)
; - et le fichier texte de l'accord de licence dans la bonne langue.
Name: "en"; MessagesFile: "compiler:Default.isl,Msg-GolfExpert-en.isl"; LicenseFile: "Golf Expert\licences\Licen_en.txt"
Name: "fr"; MessagesFile: "French-x-4.0.1.isl,Msg-GolfExpert-fr.isl"; LicenseFile: "Golf Expert\licences\Licen_fr.txt"
Section [Messages]
= section de libellés devant s'imposer sur les traductions de TOUTES les langues
; Ces 2 libellés me servent pour la 1ère fenêtre, avant la sélection de la langue pour remplacer
; le titre de la fenêtre de sélection par le nom de l'appli (commun à toutes les langues),
; et passer le libellé de la liste déroulante en 2 langues (c'est toujours mieux qu'une)
SelectLanguageTitle=Golf Expert
SelectLanguageLabel=Sélectionnez la langue à utiliser durant l'installation / Select the language to use during the installation:
Section
Code : Tout sélectionner
[/b]
= section de création de fonctions personnalisées (en Innerfuse Pascal Script)
[color=green]En vert[/color] : on trouve les lignes de commentaires (comme dans l'ensemble du script)
[color=darkblue]En bleu[/color] : on trouve les lignes à valider pour le contrôle supplémentaire de la présence de Paradox (en plus du RT), ce que je n'ai pas retenu par défaut. Pour valider une ligne, enlever le ";" ou les "//" pour les lignes de la section [Code].
[color=darkred]En rouge[/color] : on trouve les lignes à valider pour créer un installeur sur un seul fichier (à mettre en téléchargement), plutôt qu'avec des fichiers séparés pour un CD-Rom (code par défaut). Attention, les lignes rouges sont à valider, mais des lignes en noire sont aussi à invalider (cf. commentaires).
[color=green]// Déclaration des variables[/color]
var
Chemin: string;
Chemin1: string;
Chemin2: string;
Quest_Pdox10_posee: boolean;
Rep_Pdox10: boolean;
Quest_Acrobat_posee: boolean;
Rep_utilisateur: integer;
Rep_Acrobat: boolean;
[color=green]// Fonction de validation de l'install d'un runtime Paradox 10 avec msg (install & désintall) [/color]
function OK_RTP10(): boolean;
begin
if not Quest_Pdox10_posee then begin
Quest_Pdox10_posee:= true;
Chemin1 := '';
Chemin2 := '';
[color=darkblue]// RegQueryStringValue(HKLM,'SOFTWARE\Corel\Paradox\10.0\Configuration\Paradoxdir', '', Chemin1 ); [/color]
RegQueryStringValue(HKLM, 'SOFTWARE\Corel\Paradox Runtime\10.0\Configuration\Paradoxdir', '', Chemin2 );
Chemin := Chemin1+Chemin2 ;
if ( Chemin <> '' ) then begin
result := False; // = on n'installe pas - Paradox et/ou runtime présent
case ActiveLanguage of
'fr':
[color=green]// !!! Pour un installeur en version 1 seul fichier, passez les // sur la 2nd ligne ci-dessous !!! [/color]
[color=green]// !!! --------------------------------------------------------------------------------------- !!! [/color]
[color=darkred]// MsgBox('L''installation de Golf Expert va maintenant commencer.' #13 'En revance, comme un runtime Paradox 10 est déjà installé sur votre ordinateur celui livré avec Golf Expert ne sera pas installé.', mbInformation, MB_OK); [/color]
MsgBox('Le runtime Paradox 10 livré avec Golf Expert n''a pas été installé.' #13 'En effet, une version de ce runtime est déjà installée sur votre ordinateur et sera utilisée.', mbInformation, MB_OK);
[color=green]// !!! --------------------------------------------------------------------------------------- !!! [/color]
'en':
[color=green]// !!! Pour un installeur en version 1 seul fichier, passez les // sur la 2nd ligne ci-dessous !!! [/color]
[color=green]// !!! --------------------------------------------------------------------------------------- !!! [/color]
[color=darkred]// MsgBox('The setup of Golf Expert will now start.' #13 'But, because a Paradox 10 runtime is already install on your PC, the one provide with Golf Expert will not be installed.', mbInformation, MB_OK); [/color]
MsgBox('The Paradox 10 runtime provide with Golf Expert has not been installed.' #13 'Indeed, a copy of this runtime is already installed on your PC and will be used.', mbInformation, MB_OK);
[color=green]// !!! --------------------------------------------------------------------------------------- !!! [/color]
end;
end else begin
result := True; // = on installe - Paradox et/ou runtime pas présent
end;
Rep_Pdox10 := result;
end else begin
result := Rep_Pdox10;
end;
end;
[color=green]// Fonction de validation de l'install d'Acrobat Reader 5.05 avec demande de choix[/color]
function OK_Acrobat(): boolean;
begin
if not Quest_Acrobat_posee then begin
Quest_Acrobat_posee := true;
Chemin1 := '';
Chemin2 := '';
RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Acrobat.exe', '', Chemin1 );
RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Acrord32.exe', '', Chemin2 );
Chemin := Chemin1+Chemin2 ;
if ( Chemin = '' ) then begin
case ActiveLanguage of
'fr':
Rep_utilisateur := MsgBox('Pour imprimer les cartes détaillées de Golf Expert, il est nécessaire qu''Acrobat Reader soit installé. Or, aucune version de ce logiciel n''a été détectée sur votre PC.' #13 'Voulez vous installer Acrobat Reader 5.05 ?', mbInformation, MB_YESNO);
'en':
Rep_utilisateur := MsgBox('To print the Golf Expert detailed cards, Acrobat Reader must be installed. Unfortunately no copy of this software has been detected on your PC.' #13 'Do you want to install Acrobat Reader 5.05 ?', mbInformation, MB_YESNO);
end;
if Rep_utilisateur = idYes
then begin
result := True; // = on installe
end else begin
result := False; // = on n'installe pas - l'utilisateur ne veut pas
end;
end else begin
result := False; // = on n'installe pas - Acrobat et/ou Reader déjà présent
end;
Rep_Acrobat := result;
end else begin
result := Rep_Acrobat;
end;
end;
[b]Section [Tasks] [/b]
= paramétrage de taches complémentaires à sélectionner
[color=green]; Création d'un icône sur le bureau[/color]
Name: "desktopicon"; Description: "Créer un icône sur le &bureau"; GroupDescription: "Icône(s) supplémentaire(s) :"; Languages: fr
Name: "quicklaunchicon"; Description: "Créer un icône dans la barre de &lancement rapide"; GroupDescription: "Icône(s) supplémentaire(s) :"; Flags: unchecked; Languages: fr
[color=green]; Création d'un icône dans la barre de lancement rapide (non coché par défaut) [/color]
Name: "desktopicon"; Description: "Create a &desktop icon"; GroupDescription: "Additional icons:"; Languages: en
Name: "quicklaunchicon"; Description: "Create a &Quick Launch icon"; GroupDescription: "Additional icons:"; Flags: unchecked; Languages: en
[b]Section [Icons] [/b]
= création des raccourcis (icônes)
[color=green]; création du raccourci dans le groupe de programme
; grâce au flag "createonlyiffileexists" le 2nd raccourci écrasera le 1er si un runtime 10 est installé
; Un double guillemet sert à signifier un caractère guillemet au sein d'une chaîne
; Les lignes invalidées ne servent que si vous choisissez de tester aussi Paradox[/color]
Name: "{group}\Golf Expert 2.0"; Filename: "{app}\runtime\Programs\pdxrwn32.exe"; WorkingDir: "{app}\runtime\Programs"; Parameters: "-c -i PFWWIN.INI -w ""{app}"" GOLF.FDL"; IconFilename: "{app}\icon\Golf_Exp.ico"
Name: "{group}\Golf Expert 2.0"; Filename: "{reg:HKLM\SOFTWARE\Corel\Paradox Runtime\10.0\Configuration\ParadoxDir,}\..\Programs\pdxrwn32.exe"; WorkingDir: "{reg:HKLM\SOFTWARE\Corel\Paradox Runtime\10.0\Configuration\ParadoxDir,}\..\Programs" ; Parameters: "-c -i PFWWIN.INI -w ""{app}"" GOLF.FDL"; IconFilename: "{app}\icon\Golf_Exp.ico"; Flags: createonlyiffileexists
[color=darkblue]; Name: "{group}\Golf Expert 2.0"; Filename: "{reg:HKLM\SOFTWARE\Corel\Paradox\10.0\Configuration\ParadoxDir,}\..\Programs\pdxwin32.exe"; WorkingDir: "{reg:HKLM\SOFTWARE\Corel\Paradox\10.0\Configuration\ParadoxDir,}\..\Programs" ; Parameters: "-c -i PFWWIN.INI -w ""{app}"" GOLF.FDL"; IconFilename: "{app}\icon\Golf_Exp.ico"; Flags: createonlyiffileexists[/color]
[color=green]; création des raccourcis vers le fichier de notes de version et le site web dans le groupe de programme[/color]
Name: "{group}\Release notes"; Filename: "{app}\readme\ReadMe.txt"; Languages: en
Name: "{group}\Notes de version"; Filename: "{app}\readme\LisezMoi.txt"; Languages: fr
Name: "{group}\Golf Expert"; Filename: "{app}\GolfExpert.url"
[color=green]; création du raccourci sur le bureau (si demandé) [/color]
Name: "{userdesktop}\Golf Expert 2.0"; Filename: "{app}\Runtime\Programs\pdxrwn32.exe"; WorkingDir: "{app}\runtime\Programs"; Parameters: "-c -i PFWWIN.INI -w ""{app}"" GOLF.FDL"; IconFilename: "{app}\icon\Golf_Exp.ico"; Tasks: desktopicon
Name: "{userdesktop}\Golf Expert 2.0"; Filename: "{reg:HKLM\SOFTWARE\Corel\Paradox Runtime\10.0\Configuration\ParadoxDir,}\..\Programs\pdxrwn32.exe"; WorkingDir: "{reg:HKLM\SOFTWARE\Corel\Paradox Runtime\10.0\Configuration\ParadoxDir,}\..\Programs" ; Parameters: "-c -i PFWWIN.INI -w ""{app}"" GOLF.FDL"; IconFilename: "{app}\icon\Golf_Exp.ico"; Tasks: desktopicon; Flags: createonlyiffileexists
[color=darkblue]; Name: "{userdesktop}\Golf Expert 2.0"; Filename: "{reg:HKLM\SOFTWARE\Corel\Paradox\10.0\Configuration\ParadoxDir,}\..\Programs\pdxwin32.exe"; WorkingDir: "{reg:HKLM\SOFTWARE\Corel\Paradox\10.0\Configuration\ParadoxDir,}\..\Programs" ; Parameters: "-c -i PFWWIN.INI -w ""{app}"" GOLF.FDL"; IconFilename: "{app}\icon\Golf_Exp.ico"; Tasks: desktopicon; Flags: createonlyiffileexists[/color]
[color=green]; création du raccourci dans la barre de lancement rapide (si demandé) [/color]
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\Golf Expert 2.0"; Filename: "{app}\Runtime\Programs\pdxrwn32.exe"; WorkingDir: "{app}\runtime\Programs"; Parameters: "-c -i PFWWIN.INI -w ""{app}"" GOLF.FDL"; IconFilename: "{app}\icon\Golf_Exp.ico"; Tasks: quicklaunchicon
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\Golf Expert 2.0"; Filename: "{reg:HKLM\SOFTWARE\Corel\Paradox Runtime\10.0\Configuration\ParadoxDir,}\..\Programs\pdxrwn32.exe"; WorkingDir: "{reg:HKLM\SOFTWARE\Corel\Paradox Runtime\10.0\Configuration\ParadoxDir,}\..\Programs" ; Parameters: "-c -i PFWWIN.INI -w ""{app}"" GOLF.FDL"; IconFilename: "{app}\icon\Golf_Exp.ico"; Tasks: quicklaunchicon; Flags: createonlyiffileexists
[color=darkblue]; Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\Golf Expert 2.0"; Filename: "{reg:HKLM\SOFTWARE\Corel\Paradox\10.0\Configuration\ParadoxDir,}\..\Programs\pdxwin32.exe"; WorkingDir: "{reg:HKLM\SOFTWARE\Corel\Paradox\10.0\Configuration\ParadoxDir,}\..\Programs" ; Parameters: "-c -i PFWWIN.INI -w ""{app}"" GOLF.FDL"; IconFilename: "{app}\icon\Golf_Exp.ico"; Tasks: quicklaunchicon; Flags: createonlyiffileexists[/color]
[b]Section [INI] [/b]
= création de fichiers à l'installation (pas seulement des ".ini")
[color=green]; création d'un fichier raccourci vers le site web pour un icône[/color]
Filename: "{app}\GolfExpert.url"; Section: "InternetShortcut"; Key: "URL"; String:http://www.golfexpert.net
[color=green]; création et enrichissement d'un fichier ini avec les infos perso saisies et la langue pour récupération par Golf Expert[/color]
Filename: "{app}\ini\instpers.ini"; Section: "InfosSaisies"; Key: "Utilisateur"; String: {userinfoname}
Filename: "{app}\ini\instpers.ini"; Section: "InfosSaisies"; Key: "Organisation"; String: {userinfoorg}
Filename: "{app}\ini\instpers.ini"; Section: "InfosSaisies"; Key: "Langue"; String: {language}
[b]Section [Registry] [/b]
= création d'entrées dans la base de registre
[color=green]; Paramétrage de l'image à afficher pendant le lancement du runtime et de la fiche principale[/color]
Root: HKCU; Subkey: "SOFTWARE\COREL\PARADOX RUNTIME\10.0\CONFIGURATION"; ValueType: string; ValueName: "MyOwnSplashScreen"; ValueData: "{app}\images\Golf Expert.gif"
[color=green] ; Solution alternative au "WorkingDir" dans les paramètres des raccourcis Golf Expert
; Root: HKCU; Subkey: "SOFTWARE\COREL\PARADOX RUNTIME\10.0\CONFIGURATION\WORKDIR"; ValueType: string; ValueName: ""; ValueData: "{app}"[/color]
[b]Section [Files] [/b]
= paramétrage des fichiers à copier, de l'installation de la police et désignation du fichier LisezMoi
[color=green]; copie des fichiers de l'application[/color]
Source: "Golf Expert\*.*"; DestDir: "{app}"; Flags: ignoreversion
[color=green]; copie des bases personnelles seulement si elles n'existent pas
; par ailleurs elles ne seront pas effacées en cas de désinstallation (cf. flags)[/color]
Source: "Golf Expert\priv_db\*.*"; DestDir: "{app}"; Flags: onlyifdoesntexist uninsneveruninstall
[color=green]; Copie de tous les autres fichiers dans le répertoire d'installation.
; On peut faire plus sélectif mais personnellement j'aime bien que tout
; soit transféré et disponible pour le support à distance au cas ou.[/color]
Source: "Golf Expert\exe\*.*"; DestDir: "{app}\exe"; Flags: ignoreversion
Source: "Golf Expert\fonts\*.*"; DestDir: "{app}\fonts"; Flags: ignoreversion
Source: "Golf Expert\help\*.*"; DestDir: "{app}\help"; Flags: ignoreversion
Source: "Golf Expert\icon\*.*"; DestDir: "{app}\icon"; Flags: ignoreversion
Source: "Golf Expert\images\Golf Expert.gif"; DestDir: "{app}\images"; Flags: ignoreversion
Source: "Golf Expert\ini\*.*"; DestDir: "{app}\ini"; Flags: ignoreversion
Source: "Golf Expert\licences\*.*"; DestDir: "{app}\licences"; Flags: ignoreversion
[color=green]; copie du fichier "pfwwin.ini" dans le répertoire Windows ({win} = rép. de Windows)[/color]
Source: "Golf Expert\ini\pfwwin.ini"; DestDir: "{win}"; Flags: ignoreversion
[color=green]; Installation de la police Golf Expert[/color]
Source: "Golf Expert\fonts\Golf.ttf"; DestDir: "{fonts}"; FontInstall: "Golf expert"; Flags: onlyifdoesntexist uninsneveruninstall
[color=green]; copie des fichiers figurant dans la racine du CD-Rom[/color]
[color=green]; !!! Pour un installeur en version 1 seul fichier, mettez des ; aux lignes ci-dessous !!!
; !!! ----------------------------------------------------------------------------------- !!! [/color]
Source: "{src}\*.txt"; DestDir: "{app}\readme"; Flags: ignoreversion external
Source: "{src}\cards\English\*.*"; DestDir: "{app}\cards"; Flags: ignoreversion external
Source: "{src}\cards\Francais\*.*"; DestDir: "{app}\cards"; Flags: ignoreversion external
[color=green]; !!! ----------------------------------------------------------------------------------- !!! [/color]
[color=green]; !!! Pour un installeur en version 1 seul fichier, enlevez tous les ; des lignes ci-dessous !!!
; !!! ----------------------------------------------------------------------------------- !!![/color]
[color=darkred]; Source: "Racine CD\*.txt"; DestDir: "{app}\readme"; Flags: ignoreversion
; Source: "Racine CD\cards\English\*.*"; DestDir: "{app}\cards"; Flags: ignoreversion
; Source: "Racine CD\cards\Francais\*.*"; DestDir: "{app}\cards"; Flags: ignoreversion
; Source: "Racine CD\Pdx10Run\Pdx10Run.exe"; DestDir: "{tmp}"; Flags: ignoreversion; Check: OK_RTP10
; Source: "Racine CD\AcroRead\English\rp505enu.exe"; DestDir: "{tmp}"; Flags: ignoreversion; Check: OK_Acrobat; Languages: en
; Source: "Racine CD\AcroRead\Francais\rp505fra.exe"; DestDir: "{tmp}"; Flags: ignoreversion; Check: OK_Acrobat; Languages: fr[/color]
[color=green]; !!! ----------------------------------------------------------------------------------- !!! [/color]
[b]Section [Run] [/b]
= lancement de programmes externe en fin d'installation (mais avant son achèvement)
[color=green]; Installation du runtime si validé par la fonction OK_RTP10[/color]
[color=green]; !!! Pour un installeur en version 1 seul fichier, passez les 2 ; sur les 3ème et 4ème lignes ci-dessous !!!
; !!! --------------------------------------------------------------------------------------- !!![/color]
[color=darkred]; Filename: "{tmp}\Pdx10Run.exe"; Parameters: "/q INSTALLDIR=""{app}\runtime"" /I"; StatusMsg: "Runtime installation..."; Check: OK_RTP10; Languages: en
; Filename: "{tmp}\Pdx10Run.exe"; Parameters: "/q INSTALLDIR=""{app}\runtime"" /I"; StatusMsg: "Installation du runtime..."; Check: OK_RTP10; Languages: fr[/color]
Filename: "{src}\Pdx10Run\Pdx10Run.exe"; Parameters: "/q INSTALLDIR=""{app}\runtime"" /I"; StatusMsg: "Runtime installation..."; Check: OK_RTP10; Languages: en
Filename: "{src}\Pdx10Run\Pdx10Run.exe"; Parameters: "/q INSTALLDIR=""{app}\runtime"" /I"; StatusMsg: "Installation du runtime..."; Check: OK_RTP10; Languages: fr
[color=green]; !!! --------------------------------------------------------------------------------------- !!! [/color]
[color=green]; Installation d'Acrobat Reader si validé par la fonction OK_Acrobat[/color]
[color=green]; !!! Pour un installeur en version 1 seul fichier, passez les 2 ; sur les 3ème et 4ème lignes ci-dessous !!!
; !!! --------------------------------------------------------------------------------------- !!![/color]
[color=darkred]; Filename: "{tmp}\rp505enu.exe"; StatusMsg: "Acrobat Reader 5.05 setup..."; Check: OK_Acrobat; Languages: en
; Filename: "{tmp}\rp505fra.exe"; StatusMsg: "Installation d'Acrobat Reader 5.05..."; Check: OK_Acrobat; Languages: fr[/color]
Filename: "{src}\AcroRead\English\rp505enu.exe"; StatusMsg: "Acrobat Reader 5.05 installation..."; Check: OK_Acrobat; Languages: en
Filename: "{src}\AcroRead\Francais\rp505fra.exe"; StatusMsg: "Installation d'Acrobat Reader 5.05..."; Check: OK_Acrobat; Languages: fr
[color=green]; !!! --------------------------------------------------------------------------------------- !!! [/color]
[color=green]; Désignation des fichiers de notes de version à lancer en fonction de la langue[/color]
Filename: "{app}\ReadMe\ReadMe.txt"; Description: "View ReadMe.txt file"; Flags: shellexec postinstall skipifsilent; Languages: en
Filename: "{app}\ReadMe\LisezMoi.txt"; Description: "Voir fichier LisezMoi.txt"; Flags: shellexec postinstall skipifsilent; Languages: fr
[b]Section [UninstallDelete] [/b]
= suppression de fichiers créés qui n'ont pas été transférés/gérés dans [File]
Type: files; Name: "{app}\GolfExpert.url"
Type: files; Name: "{app}\*.bak"
Type: files; Name: "{app}\ini\instpers.ini"
Type: files; Name: "{app}\runtime\paradox\*.gid"
[b]Section [UninstallRun] [/b]
= programmes à lancer avant la désinstallation de l'application
[color=green]; Si un runtime a été installé par l'installeur de l'appli, affichage d'un message d'avertissement
; avant qu'il soit proposé de désinstaller ce runtime.
; Si vous voulez mes fichiers, cliquez [url=http://www.ifrance.com/bobftp/illustrations_posts/Un_RT_Fr.exe]ici[/url] pour une version en français et [url=http://www.ifrance.com/bobftp/illustrations_posts/Un_RT_En.exe]ici[/url] pour une version en anglais.[/color]
Filename: "{app}\exe\Un_RT_En.exe"; Check: OK_RTP10; Languages: en
Filename: "{app}\exe\Un_RT_Fr.exe"; Check: OK_RTP10; Languages: fr
[color=green]; lancement si besoin de la désinstallation du runtime
; le double "{" signifie qu'il ne s'agit pas d'une variable IS
; Attention : vérifiez que la clé soit bien la même avec votre runtime !!!
; Vous la trouverez à HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\[/color]
Filename: "{sys}\msiexec.exe"; Parameters: "/x{{14A4E477-1D83-11D5-B70B-00902713F081}"; Flags: skipifdoesntexist; Check: OK_RTP10
[b]4. Compilation, tests et création du CD d'install[/b]
Cette fois-ci, on y est presque :D
[u]4.1 Compilation de l'installeur[/u]
Maintenant, il va valoir compiler le script pour créer un ".exe" qui va contenir tous les fichiers de l'installeur, ceux de l'application, et même le runtime et Acrobat Reader si on l'a paramétré dans le script.
A noter que cette opération joue aussi le rôle de débuggeur.
Pour cela, cliquez sur "File", puis "Compile" (ou le rectangle blanc avec les 3 flèches dessus).
Un fichier "Install.exe" sera créé dans le sous-répertoire "\Racine CD".
[u]4.2 Test de l'installeur[/u]
Pour le tester il suffit de l'exécuter et pour cela :
- soit vous cliquez sur "Run", puis "Run" (ou le triangle vert),
- soit vous double cliquez sur le fichier "Install.exe" nouvellement créé.
Une fois lancé, déroulez tout l'installeur et refaites l'opération plusieurs fois en utilisant toutes les options pour tester qu'il fonctionne correctement. Au besoin, apportez des modifications au script.
[u]4.3 Création du CD d'installation[/u]
Enfin, vous allez pouvoir créer votre CD d'installation.
Pour cela et pour parachever le travail je vous propose d'utiliser la fonction "Autorun" qui permet de lancer un programme à l'insertion du CD et de personnaliser l'icône du CD sous Windows.
Pour ce faire, comme votre installation est maintenant gérée par un installeur unique vous allez pouvoir le faire lancer automatiquement.
Côté personnalisation de votre CD, là il vous faudra un fichier ".ico" avec un icône.
Enfin, vous allez devoir créer un simple fichier texte que vous nommerez "Autorun.inf" et dont nous verrons le contenu plus bas.
L'arborescence étant déjà créée, on va juste la modifier pour des questions esthétiques en cachant quelques fichiers et répertoires qui n'ont pas à être vus par l'utilisateur :
....Autorun.inf [b](attribut caché)[/b]
....LisezMoi.txt
....ReadMe.txt
....Install.exe
.........|__AcroRead
.........|__Autorun [b](attribut caché)[/b]
.........|....|__Golf_Exp.ico [b](attribut caché)[/b]
.........|....|__Run.exe [b](attribut caché)[/b] <- optionnel
.........|__Cards
.........|__Pdx10Run
[u]Remarque :[/u] pour la création d'un CD-Rom, n'utilisez pas la possibilité de créer un seul fichier Setup englobant les Acrobat Reader et le runtime Paradox. En effet, c'est plus long à l'installation sur certaines machines peu puissantes puisqu'il faut d'abord extraire et décompresser ces fichiers, sans compter qu'en cas de problème vous n'auriez pas ces deux applications disponibles chez l'utilisateur pour le dépanner à distance en lui demandant de les réinstaller manuellement (cf. lignes à mettre en commentaire ou à activer dans le script).
Donc, commencez par créer un fichier "Autorun.inf"
- Créez un simple fichier texte nommé "Autorun.inf" avec le Bloc-notes
- Donnez lui l'attribut de fichier caché (ça sera plus joli de ne pas le voir traîner)
- Editez le et remplissez le du contenu suivant :
[quote][autorun]
open=Install.exe
icon=Autorun\Golf_exp.ico[/quote]
[u]Remarque :[/u] par contre, si par hasard vous vouliez lancer un fichier (autre qu'un fichier texte) à la place du "Install.exe" comme un fichier HTML par exemple, la commande "Open" ne pourrait pas le faire.
Pour ce faire, le mieux serait d'utiliser un petit exécutable qui fasse le travail. Vous pouvez en télécharger un [url=http://www.ifrance.com/bobftp/illustrations_posts/Run.exe]ici[/url].
Dans ce cas, et pour l'exemple d'un fichier "Index.htm" à lancer :
- Placez le fichier "Run.exe" dans le répertoire "Autorun"
- Et utilisez le code suivant pour le contenu du fichier "Autorun.inf" ("open,Index.htm" sont des paramètres de "Run.exe")
[quote][autorun]
open=Autorun\run open,Index.htm
icon=Autorun\Golf_exp.ico[/quote]
[u]Remarque :[/u] pour toute information supplémentaire sur cette fonctionnalité d'Autorun, vous pouvez consulter [url=http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/Shell/programmersguide/shell_basics/shell_basics_extending/autorun/autoplay_cmds.asp]cette page[/url] sur le site Microsoft.com .
Et enfin... vous pouvez maintenant gravez le répertoire \Racine CD en donnant le nom "Golf Expert 2" au CD, et en remplissant les rubriques "Auteur", "Copyright", etc.
Et voilà, cette fois-ci c'est fait.
Vous avez un vrai CD d'install de pro !!! :D
--------------------------------------------------------------------------------------------------------
[b]Annexe[/b]
--------------------------------------------------------------------------------------------------------
[b]Création d'un mutex le temps de l'exécution d'une appli Paradox[/b]
Un mutex est un indicateur géré par Windows qui sert à informer qu'un logiciel est en cours de fonctionnement, dans un certain contexte de droits.
Dans le cadre de notre installeur, faire créer un mutex par notre appli et le faire détecter par l'installeur sert à prévenir toute tentative de réinstallation ou de mise à jour de l'appli alors qu'elle est en cours d'exécution.
Dès lors, on a vu plus haut le paramètre à activer pour que l'installeur teste la présence du mutex et puisse bloquer l'install si nécessaire, et maintenant voilà comment faire créer le mutex par l'appli.
Pour cela, dans l'objet Paradox (souvent une fiche) qui sera lancé en premier, ajouter le code suivant :
[quote]Uses "kernel32.dll"
CreateMutex(lpMutexAttributes clong, bInitialOwner clong, lpName cptr)clong [stdcall "CreateMutexA"]
endUses[/quote]
[quote]method init(var eventInfo Event)
CreateMutex(0, 0, "GolfExpert")
endMethod[/quote]
Le mutex sera alors créé et restera actif tant que le runtime Paradox (ou Paradox lui-même) ne sera pas fermé.
[u]Remarque :[/u] pour plus d'information sur la fonction Createmutex, consultez [url=http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/createmutex.asp]cette page[/url] sur le site Microsoft.com.
--------------------------------------------------------------------------------------------------------
[b]Avertissement !!![/b]
--------------------------------------------------------------------------------------------------------
Attention ce 1er post du topic est régulièrement remis à jour !!!
Du coup, les commentaires des posts immédiatement après concernent en fait la version originale de cette synthèse. Pour trouver les commentaires les plus récents sur la dernière version que vous venez de lire, RDV en fin de topic.