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

Signaler
Messages postés
1107
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
-
Messages postés
1107
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
-
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.

4 réponses

Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
13
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;
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
36
aide d'inno setup :

[INI]
Filename: "MyProg.ini"; Section: "InstallSettings"; Flags: uninsdeletesection
Filename: "MyProg.ini"; Section: "InstallSettings"; Key: "InstallPath"; String: "{app}"
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
13
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.
Messages postés
1107
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
4
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.