Inno Setup syntaxe de FilePath

Résolu
Bonjour à tous,
J'ai un problème de syntaxe de FilePath dans une recherche de fichiers existants qui concernent les chemins particuliers suivants
=> "Mes documents"
L'intitulé complet de ce chemin dépend du nom de l'utilisateur
=> "Program File"
L'intitulé dépend de la version de windows : avec ou sans "(x86)"
Pour cela j'a voulu passer par les balises
=> {pf32} pour Program File / Program Files (x86)
=> {userdocs} pour le chemin complet vers Mes documents

Voici mon code (en texte, car je n'ai pas su trouver quel modèle choisir) :
function InitializeSetup(): Boolean; 
var
        FilePath1: String
        FilePath2: String
        Result1: Boolean
        Result2: Boolean
        Result3: Booean
begin
        FilePath1: = '{pf32} \Chemin1\Fichier1.txt'
        FilePath2: = '{userdocs} \Chemin2\Fichier2.txt'
        Result1:= [/contents/1174-objet-filesystemobject-fso FileExists](FilePath1)
        Result2: = FileExists(FilePath2)
        Result3: = Result1 or Result2
end;

Cela ne fonctionne pas, alors qu'évidemment les fichiers existent bien.
Si j'entre les chemins dans FilePath1 et FilePath2 comme ci-dessous:

=> sous XP : c'est OK
FilePath1: = 'C:\Program Files\Chemin1\Fichier1.txt'
FilePath2: = 'C:\Documents and Settings\MonNom\Chemin2\Fichier2.txt'
=> sous W10 : le codage "(x86)" est refusé
FilePath1: = 'C:\Program Files (x86)\Chemin1\Fichier1.txt'
FilePath2: = 'C:\Documentsans Settings\MonNom\Chemin2\Fichier2.txt'


EDIT : Ajout des balises de code

Après maintes recherches je suis sans solution...
Merci à toute âme charitable de me dire où est mon erreur.

Cordialement.

5 réponses

  1. Bonjour à tous,

    J'ai (enfin) trouvé!
    Voici le bon code ci-dessous :

    [Code]
    function InitializeSetup(): Boolean; 
    var
            PfDir: String;
            UsDir: String;
            FilePath1: String
            FilePath2: String
            Result1: Boolean
            Result2: Boolean
            Result3: Boolean
    begin
            PfDir: = ExpandConstant('{pf32}')
            UsDir: = ExpandConstant('{userdocs}')
            FilePath1: = '\Chemin1\Fichier1.txt'
            FilePath2: = '\Chemin2\Fichier2.txt'        
            Result1: = FileExists(PfDir + FilePath1)
            Result2: = FileExists(UsDir + FilePath2)
            Result3: = Result1 or Result2
    end;


    J'espère que cela évitera ma galère à d'autres ...
    Cordialement
    1. Oh! pardon Jordane45... et merci quand même.

      En fouillant encore, j'ai cru comprendre qu'utiliser ExpandConstant dans [Code] en tête de begin pourrait être une solution...

      [Code]
      function InitializeSetup(): Boolean; 
      var
              PfDir: String;
              UsDir: String;
              FilePathA: Sring;
              FilePathB: String;
              FilePath1: String
              FilePath2: String
              Result1: Boolean
              Result2: Boolean
              Result3: Boolean
      begin
              PfDir: = ExpandConstant('{pf32}')
              UsDir: = ExpandConstant('{userdocs}')
              FilePathA: = '\Chemin1\Fichier1.txt'
              FilePathB: = '\Chemin2\Fichier2.txt'        
              FilePath1: = 'PfDir + FilePathA'
              FilePath2: = 'UsDir + FilePathB'
              Result1: = FileExists(FilePath1)
              Result2: = FileExists(FilePath2)
              Result3: = Result1 or Result2
      end;


      Hélas, que néni, ça ne marche toujours pas... sauf à entrer l'intitulé exact des chemins à la mimine, et encore, seulement sous XP!
      Là, je sèche complet, et prends mon mal en patience, en attendant les secours!
      Cordialement
      1. Bonjour,
        Bizarrement mon code en texte est apparu automatiquement"balisé", mais incorrectement...
        Le voici corrigé et balisé en Delphi

        [Code]
        function InitializeSetup(): Boolean; 
        var
                FilePath1: String
                FilePath2: String
                Result1: Boolean
                Result2: Boolean
                Result3: Boolean
        begin
                FilePath1: = '{pf32}\Chemin1\Fichier1.txt'
                FilePath2: = '{userdocs}\Chemin2\Fichier2.txt'
                Result1: = FileExists(FilePath1)
                Result2: = FileExists(FilePath2)
                Result3: = Result1 or Result2
        end;
        


        Pour répondre à Jordane45 (que je remercie de sa réaction rapide), effectivement, il n'y a pas d'espace en trop, et la syntaxe de FilePath dans l'aide indique bien le simple quote.
        1. Modérateur
          Bizarrement mon code en texte est apparu automatiquement"balisé", mais incorrectement...

          Ce n'est pas bizarre..... c'est moi qui te l'ai édité....