[R]FileExists ne fonctionnent pas (fichier n'est pas dans System32)

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
ble
Niveau 1
Niveau 1
Messages : 3
Enregistré le : jeu. 11 avr. 2019 16:49
Status : Hors ligne

[R]FileExists ne fonctionnent pas (fichier n'est pas dans System32)

#1

Message par ble » jeu. 11 avr. 2019 17:07

Bonjour,
Actuellement en stage, je dois réaliser un script d'installation de Microsoft Office (passage de 2010 à 2003) destiné à être déployé par GPO.
Cependant voilà, certains utilisateurs doivent avoir une version Pro et d'autres une version Standard. C'est pourquoi pour déterminer la version à installer, je check l'existence de MSACCESS (ACCESS de la suite office) qui est n'est présent que dans la version Pro.
Vous l'aurez compris c'est lorsque je check cette présence que je m’aperçois qu'AutoIT ne le détecte jamais, bien qu'il soit présent.

Ce script doit être fonctionnel sur W7, W8.1 et W10. Je vous mets le bout de code en question (pas très long) qui pose soucis :
      ;Recuperation de la version d'Office
      $file = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WINWORD.EXE", "")
      $file_version = StringSplit(FileGetVersion($file), ".")
      Local $exist = FileExists('C:\"Program Files (x86)"\"Microsoft Office"\Office' & $file_version[1] & '\MSACCESS.EXE')
     
     If $exist == 0 Then
         ; [....] C'est dans ce bloc que rentre toujours mon script
     ElseIf $exist == 1 Then
         ; [...]
     EndIf
     
Merci d'avance à l'attention que vous porterez à mon problème :D
Modifié en dernier par ble le ven. 12 avr. 2019 08:27, modifié 1 fois.

Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11446
Enregistré le : ven. 20 juil. 2007 20:00
Localisation : Bordeaux
Status : Hors ligne

Re: FileExists ne fonctionnent pas (fichier n'est pas dans System32)  

#2

Message par Tlem » jeu. 11 avr. 2019 21:30

Bonsoir.
L'un des problèmes de votre code, c'est que la recherche de MSACCESS.EXE est éventuellement fonctionnelle uniquement sur un OS 64 bits !!!

Simplifiez le code comme ceci :

Code : Tout sélectionner

 ;Recherche de MSACCESS.EXE
	Local $File = RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WINWORD.EXE", "")
	Local $exist = FileExists(StringTrimRight($File, 11) & 'MSACCESS.EXE')

Ou plus simplement :

Code : Tout sélectionner

; Test si MSACCESS.EXE existe et agit en conséquence.
If FileExists(StringTrimRight(RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WINWORD.EXE", ""), 11) & 'MSACCESS.EXE') Then
	; Traitement a faire si MSACCESS.EXE existe
Else
	; Traitement a faire si MSACCESS.EXE n'existe pas
EndIf
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".

ble
Niveau 1
Niveau 1
Messages : 3
Enregistré le : jeu. 11 avr. 2019 16:49
Status : Hors ligne

Re: FileExists ne fonctionnent pas (fichier n'est pas dans System32)

#3

Message par ble » ven. 12 avr. 2019 08:26

Merci, Effectivement tout marche parfaitement maintenant (du moins pour cette partie).
J'ai encore un autre problème mais qui n'a aucun rapport avec FileExist. Je passe le sujet en résolu.

Répondre