IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Outils Delphi Discussion :

[innoSetup] Modifier un fichier .ini


Sujet :

Outils Delphi

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2009
    Messages : 12
    Points : 8
    Points
    8
    Par défaut [innoSetup] Modifier un fichier .ini
    Bonjour ,
    J'essaye de créer un .exe pour un programme et je souhaite modifier un .ini lors de l'installation, mon fichier .ini contient les champs suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
     
    ;/////////////////////////////////////////////////////////////////////////////////
    [Product_1]
     
    	Header1=300
    	Header2=311
    	Header3=322
    	Header4=307
    	Header5=342
    	Header6=
    	Header7=
    	Header8=
    	Header9=
    	Header10=
     
    	Station1=TRUE
    	Station2=FALSE
    	Station3=FALSE
    	Station4=FALSE
    ;/////////////////////////////////////////////////////////////////////////////////
     
     
    ;/////////////////////////////////////////////////////////////////////////////////
    [Product_2]
    	Header1=300
    	Header2=309
    	Header3=322
    	Header4=307
    	Header5=341
    	Header6=
    	Header7=
    	Header8=
    	Header9=
    	Header10=
     
    	Station1=TRUE
    	Station2=FALSE
    	Station3=FALSE
    	Station4=FALSE
    ;/////////////////////////////////////////////////////////////////////////////////
     
     
    ;/////////////////////////////////////////////////////////////////////////////////
    [Product_3]
    	Header1=301
    	Header2=309
    	Header3=322
    	Header4=307
    	Header5=341
    	Header6=
    	Header7=
    	Header8=
    	Header9=
    	Header10=
     
    	Station1=TRUE
    	Station2=FALSE
    	Station3=FALSE
    	Station4=FALSE
    ;/////////////////////////////////////////////////////////////////////////////////
    Alors je veux mettre une valeur dans le champ Header6=
    Je crois que pour réaliser ca il faut écrire un script dans la section Code de mon fichier iss.

    Le probleme c'est que je ne sais vraiment pas comment accéder au fichier ini et modifier le champ souhaité .

    Merci pour toute vos réponses.

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 695
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 695
    Points : 13 133
    Points
    13 133
    Par défaut
    Non, pas besoin .

    Ajoute simplement une section [INI] à ton script:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [INI]
    Filename: {app}\TonFichier.ini; Section: NomSection; Key: NomClé; String: TaValeur; Flags: createkeyifdoesntexist;
    A toi de voir les Flags dont tu as besoin.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2009
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Merci pour ta reponse !
    j'ai testé et j'ai ajouté ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Filename: c:Fichini.ini; Section: Product_1; Key: Header6; String: 200; Flags:createkeyifdoesntexist;
    mais le problème c'est qu'il ne met pas la valeur 200 dans Header6!!!!!
    J'ai réessayé en supprimant le champ Header6 la il ajoute bien le champ supprimé et met bien la valeur 200.

    Savez vous pourquoi ?

    SVP

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 695
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 695
    Points : 13 133
    Points
    13 133
    Par défaut
    Supprime Flags:createkeyifdoesntexist pour systématiquement écraser la valeur.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2009
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Je suis un peu lourd mais ca ne marche toujours pas ca ne modifie rien :s

  6. #6
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 695
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 695
    Points : 13 133
    Points
    13 133
    Par défaut
    Il n'y a pourtant rien d'autre à faire

    Installe aussi ISTool, plus intuitif pour créer ton script.

  7. #7
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Filename: c:Fichini.ini;
    Il y a de forte chance que ton fichier ini soit créé dans le dossier Windows.
    A vérifier.

    @+

  8. #8
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    Filename: "{APP}\Fichini.ini"; Section: "Product_1"; Key: "Header6"; String: "200";
    [ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
    Ma messagerie n'est pas la succursale du forum... merci!

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2009
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Merci pour vos réponses ca marche nickel maintenant c'etait pas le bon fichier dont j'ai indiquer le chemin :s

    une autre petite question peut-on modifier le nom d'une section ?

    Merci.

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2009
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Re
    Y a-t-il moyen de classer l'ordre des champs(pas les sections) d'un fichier .ini ?

    Merci de votre aide!

  11. #11
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par YanDerS Voir le message
    Y a-t-il moyen de classer l'ordre des champs(pas les sections) d'un fichier .ini ?
    Non, ça n'a en fait pas de sens : un fichier INI (tout comme la base de registre) est prévu pour ne PAS tenir compte de l'ordre des sections / clés.
    Si tu as besoin d'un ordre quelconque, c'est à toi de numéroter les clés si nécessaire, sachant en plus que toute clé peut être effacée sans préavis. Il ne faut jamais non plus présupposer le moindre ordre au sein d'un fichier INI : la seule chose garantie, c'est qu'une clé sera bien dans la section que tu as demandé. L'unicité d'une clé au sein d'une même section n'est pas non plus garantie, d'ailleurs.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2009
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Bonjour
    merci Mac LAK pour ta réponse, Je voulais creer un ordre juste pour faciliter la tache aux autres utilisateurs du fichier .ini car ils vont aller chercher la clé et la modifier manuellement et ils vont suivre l'ordre (J'en suis sure ).

    Une petite interrogation :peut-on copier le contenu d'un fichier .ini ? doit-je ajouter un script dans la section [CODE] ?

    Merci.

  13. #13
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 695
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 695
    Points : 13 133
    Points
    13 133
    Par défaut
    Tu peux bien sûr ajouter un fichier ini à la section [Files] comme n'importe quel autre fichier.

  14. #14
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par YanDerS Voir le message
    merci Mac LAK pour ta réponse, Je voulais creer un ordre juste pour faciliter la tache aux autres utilisateurs du fichier .ini car ils vont aller chercher la clé et la modifier manuellement et ils vont suivre l'ordre (J'en suis sure ).
    De rien. Mais pourquoi devraient-ils le modifier manuellement ???
    Si tu as un programme à installer (ce qui est manifestement le cas, n'est-ce pas ? ), pourquoi n'ajoutes-tu pas dedans une option pour modifier cette partie, via une InputBox / InputQuery ? Au moins, c'est propre, et l'utilisateur n'aura alors pas à tripoter le .INI à la main... Si la clé n'existe pas dans le fichier INI (ou sur demande de l'utilisateur), alors tu affiches une boîte de saisie de la nouvelle valeur. Simple, rapide, efficace.

    Citation Envoyé par YanDerS Voir le message
    Une petite interrogation :peut-on copier le contenu d'un fichier .ini ? doit-je ajouter un script dans la section [CODE] ?
    Tu peux utiliser un script avec cette fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function FileCopy(const ExistingFile, NewFile: String; const FailIfExists: Boolean): Boolean;
    , c'est encore le plus simple si tu as modifié le fichier.
    Si par contre il existe déjà au moment de l'installation, le flag external te permettra de copier le fichier sur la machine de l'utilisateur SANS devoir l'ajouter au setup.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2009
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Mais pourquoi devraient-ils le modifier manuellement ???
    La saisie ne se fait pas automatiquement pendant l'installation c'est pour ca que je n'ai pas utilisé InputBox / InputQuery mais bien après l'installation et plusieurs tests sur la machine (faits par l'opérateur ).
    le fichier .ini que je modifie existe déjà dans la machine et pas dans le setup en plus je connais rien en Pascal pour moi c'est du chinois j'aurai préféré que ca soit en C

    Voila pourquoi . Mais je crois que je vais laisser tomber l'idée de copier le fichier .ini, le réorganiser et le recopier après --> Trop de boulot :s

    Merci pour ton aide!

  16. #16
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par YanDerS Voir le message
    La saisie ne se fait pas automatiquement pendant l'installation c'est pour ca que je n'ai pas utilisé InputBox / InputQuery mais bien après l'installation et plusieurs tests sur la machine (faits par l'opérateur ).
    C'est bien ce que je dis : c'est ton programme lui-même (et non pas le setup) qui demande cette valeur, lors de son lancement initial par exemple... Et qui finit par l'écrire dans le .INI après saisie.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  17. #17
    Membre averti
    Homme Profil pro
    Buisint
    Inscrit en
    Septembre 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Buisint

    Informations forums :
    Inscription : Septembre 2008
    Messages : 220
    Points : 438
    Points
    438
    Par défaut
    Merci C@udius et Dr.Who !!

    Citation Envoyé par Cl@udius Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Filename: c:Fichini.ini;
    Il y a de forte chance que ton fichier ini soit créé dans le dossier Windows.
    A vérifier.

    @+
    Apparemment, avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    filename: MonFichier.ini; section: Parametres; key: MaClef; string: 3; Flags: CreateKeyIfDoesntExist; Languages: french
    il crée le fichier une fois dans C:\Windows avec la clé et la bonne valeur, et une fois dans {app} avec la clé mais sans sa valeur !

    Alors qu'avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    filename: {app}\MonFichier.ini; section: Parametres; key: MaClef; string: 3; Flags: CreateKeyIfDoesntExist; Languages: french
    la création se fait correctement.

    P.S. en version 5.4.0.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Inno Setup] : modifier un fichier ini
    Par Mimie37 dans le forum Outils
    Réponses: 0
    Dernier message: 30/07/2014, 18h05
  2. modifier un fichier .ini avec vbs
    Par alex61 dans le forum VBScript
    Réponses: 5
    Dernier message: 11/01/2011, 14h23
  3. Rechercher et modifier un fichier INI
    Par tofju dans le forum VBScript
    Réponses: 15
    Dernier message: 09/07/2009, 16h57
  4. Modifier le fichier php.ini
    Par neo1012 dans le forum IFrance
    Réponses: 2
    Dernier message: 23/12/2007, 14h40
  5. [VBA-E]Modifier un fichier Ini
    Par illight dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/10/2006, 10h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo