Inno Setup syntaxe de FilePath [Résolu/Fermé]

Signaler
Messages postés
16
Date d'inscription
vendredi 7 avril 2017
Statut
Membre
Dernière intervention
22 janvier 2020
-
Messages postés
40719
Date d'inscription
mercredi 11 avril 2007
Statut
Modérateur
Dernière intervention
15 mai 2021
-
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

Messages postés
32477
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 mai 2021
3 489
Bonjour,

Pour les balises de code : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code


Pour ton souci, ne serait-ce pas l'espace en trop qui pose problème ?
FilePath1: = '{pf32} \Chemin1\Fichier1.txt'

A tester :
FilePath1: = "{pf32}\Chemin1\Fichier1.txt"


edit : et les doubles quotes au lieu des simples....

Cordialement, 
Jordane                                                                 
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
16
Date d'inscription
vendredi 7 avril 2017
Statut
Membre
Dernière intervention
22 janvier 2020

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.
Messages postés
32477
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 mai 2021
3 489
Bizarrement mon code en texte est apparu automatiquement"balisé", mais incorrectement...

Ce n'est pas bizarre..... c'est moi qui te l'ai édité....
Messages postés
16
Date d'inscription
vendredi 7 avril 2017
Statut
Membre
Dernière intervention
22 janvier 2020

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
Messages postés
16
Date d'inscription
vendredi 7 avril 2017
Statut
Membre
Dernière intervention
22 janvier 2020

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
Messages postés
16
Date d'inscription
vendredi 7 avril 2017
Statut
Membre
Dernière intervention
22 janvier 2020

Euh... comment marquer "Résolu"?
Merci
Messages postés
40719
Date d'inscription
mercredi 11 avril 2007
Statut
Modérateur
Dernière intervention
15 mai 2021
10 932