Page 1 sur 1

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

Posté : jeu. 11 avr. 2019 18:07
par ble
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

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

Posté : jeu. 11 avr. 2019 22:30
par Tlem
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

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

Posté : ven. 12 avr. 2019 09:26
par ble
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.