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

fregolo52 1106 Messages postés mercredi 15 juin 2011Date d'inscription 19 juillet 2016 Dernière intervention - 29 juin 2007 à 16:20 - Dernière réponse : fregolo52 1106 Messages postés mercredi 15 juin 2011Date d'inscription 19 juillet 2016 Dernière intervention
- 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

cs_rt15 3982 Messages postés mardi 8 mars 2005Date d'inscription 7 novembre 2014 Dernière intervention - 3 juil. 2007 à 08:33
+3
Utile
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;
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_rt15
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 29 juin 2007 à 22:45
0
Utile
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
cs_rt15 3982 Messages postés mardi 8 mars 2005Date d'inscription 7 novembre 2014 Dernière intervention - 2 juil. 2007 à 15:20
0
Utile
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
fregolo52 1106 Messages postés mercredi 15 juin 2011Date d'inscription 19 juillet 2016 Dernière intervention - 3 juil. 2007 à 16:06
0
Utile
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.