Modifier un fichier ini avec Inno Setup

Résolu
fregolo52 Messages postés 1115 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 - 29 juin 2007 à 16:20
fregolo52 Messages postés 1115 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 - 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.

4 réponses

cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
3 juil. 2007 à 08:33
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;
3
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 37
29 juin 2007 à 22:45
aide d'inno setup :

[INI]
Filename: "MyProg.ini"; Section: "InstallSettings"; Flags: uninsdeletesection
Filename: "MyProg.ini"; Section: "InstallSettings"; Key: "InstallPath"; String: "{app}"
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
2 juil. 2007 à 15:20
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.
0
fregolo52 Messages postés 1115 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 3
3 juil. 2007 à 16:06
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.
0
Rejoignez-nous