Modifier un fichier ini avec Inno Setup [Résolu]

Messages postés
1108
Date d'inscription
mercredi 15 juin 2011
Dernière intervention
10 juillet 2018
- 29 juin 2007 à 16:20 - Dernière réponse :
Messages postés
1108
Date d'inscription
mercredi 15 juin 2011
Dernière intervention
10 juillet 2018
- 3 juil. 2007 à 16:06
Bonjour,

Je ne suis pas spécialiste Delphi (et Pascal).

J'essaie de faire un installer avec Inno Setup.

Je voudrais modifier un fichier ini avec une valeur saisie pas l'utilisateur.
J'ai créé une nouvelle fenêtre qui demande le nom du répertoire où l'utilisateur voudra mettre les fichiers données de l'appli, je crée cette fenêtre grace à la partie code en Pascal.
Une fois le programme en fin de phase d'install, je voudrais mettre le nom de ce répertoire dans un fichier ini que l'outil d'install a copié.

Mais je ne sais pas comment faire, dois-je obligatoirement codé en Pascal l'écriture dans le fichier ini ou puis-je passer par des variables en utilisant la partie script ?

J'espère ne pas avoir été trop brouillon dans mes explications.

Merci.
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
3982
Date d'inscription
mardi 8 mars 2005
Dernière intervention
7 novembre 2014
- 3 juil. 2007 à 08:33
3
Merci
Bon mauvaises pistes...

Je m'autoflagèle.

* S'autoflagèle *

Inno Setup propose des routines pour la gestion des ini.
Donc c'est encore plus facile que je pensais, à moins qu'une méthode dérivé de ce que montre f0xi facilite encore le travail.

Vala ce que ça me donne :
(Je simule t'as récupération du chemin donné par l'utilisateur par if CurStep = ssInstall then sPath:= 'c:\format')

===================================

[Languages]

Name: "fr"; MessagesFile: "compiler:French.isl"

[Setup]
AppName=Test
AppVerName=Test
AppPublisher=rt15
DefaultDirName={pf}\Test
DefaultGroupName=Test
AllowNoIcons=yes
Compression=lzma
SolidCompression=yes

[Files]
Source: Test.exe; DestDir: {app}; Flags: promptifolder
Source: Test.ini; DestDir: {app}; Flags: promptifolder

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Icons]
Name: "{group}\Test"; Filename: "{app}\Test.exe"
Name: "{group}\{cm:UninstallProgram,Test}"; Filename: "{uninstallexe}"
Name: "{userdesktop}\Test"; Filename: "{app}\Test.exe"; Tasks: desktopicon

[code]
var
  sPath: String;

procedure CurStepChanged(CurStep: TSetupStep);
var
  sIniPath: String;
begin
  if CurStep = ssInstall then
    sPath:= 'c:\format'
  else if CurStep = ssDone then
  begin
    sIniPath:= ExpandConstant('{app}') + '\Test.ini'
    if not SetIniString('Paths', 'data', sPath, sIniPath) then
      MsgBox('Echec de l''écriture dans ' + sIniPath, mbError, 0);
  end;
end;

Merci cs_rt15 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de cs_rt15
Messages postés
4304
Date d'inscription
samedi 16 octobre 2004
Dernière intervention
9 mars 2018
- 29 juin 2007 à 22:45
0
Merci
aide d'inno setup :

[INI]
Filename: "MyProg.ini"; Section: "InstallSettings"; Flags: uninsdeletesection
Filename: "MyProg.ini"; Section: "InstallSettings"; Key: "InstallPath"; String: "{app}"
Commenter la réponse de f0xi
Messages postés
3982
Date d'inscription
mardi 8 mars 2005
Dernière intervention
7 novembre 2014
- 2 juil. 2007 à 15:20
0
Merci
Salut,

J'ai pas Inno sur ce poste, mais il y a moyen d'executer un code à la fin de l'installe (cf l'aide fournie avec)

Pour écrire ta chaîne, voici quelques piste :

Je crois me rappeler que InnoSetup supporte la déclaration d'API Win32, donc tu peux passer par les routines standards.

TStrings, certainement fournie avec le Pascal de inno, possède nottement les méthodes SaveToFile et LoadFromFile, et se comporte comme un tableau des lignes d'un fichier.
Commenter la réponse de cs_rt15
Messages postés
1108
Date d'inscription
mercredi 15 juin 2011
Dernière intervention
10 juillet 2018
- 3 juil. 2007 à 16:06
0
Merci
J'ai pas encore eu le temps de me replonger dans mon setup.

Merci rt15, je vais m'inspiré très fortement de ton code pour résoudre mon problème.
Commenter la réponse de fregolo52

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.