Page 1 sur 1

autorisation d'écriture fichier

Posté : lun. 10 août 2020 17:57
par Cengokill
Bonjour à tous, je viens de créer un programme qui écrit dans un fichier texte, avec les fonctions FileOpen() et FileWrite().
Ce programme fonctionne parfaitement bien lorsqu’il est exécuté en tant que script non compilé.

En revanche, lorsque je le compile, puis créer un installateur avec Inno Setup, le programme ne modifie pas le fichier texte.
Je pense donc que c'est une erreur due à l'autorisation d'écriture dans le fichier, puisque moi-même je ne peux pas modifier le fichier manuellement (qui se trouve dans Programe Files (x86)).

Code : Tout sélectionner

If Not FileExists("langue.txt") Then
	Local $hFileOpen = FileOpen("langue.txt", 2)
	Filewrite($hFileOpen,"FR")
	FileClose($hFileOpen)
	Global $LANGAGE="FR"
EndIf
Ce bout de code fonctionne lorsque le programme n'est pas installé sur l'ordinateur.


Sauriez-vous comment autoriser mon programme à écrire dans ce fichier ?

Merci d'avance !

Re: autorisation d'écriture fichier  

Posté : lun. 10 août 2020 22:44
par jguinch
L'écriture dans les dossiers "Program Files", "Program Files (x86)" et autres nécessitent une élévation de privilèges.
Pour indiquer au script qu'il doit demander une élévation de privilèges, il faut utiliser la directive #RequireAdmin en début de script.

Maintenant, si le script compilé fait partie de ton installeur, le mieux est de compiler l'installeur Inno Setup en lui indiquant d'utiliser les privilèges admin (PrivilegesRequired=admin)

Re: autorisation d'écriture fichier

Posté : mar. 11 août 2020 06:43
par Cengokill
Merci de ton aide, quand je lance mon programme manuellement, ça fonctionne !
Mais la correction du problème en créer un nouveau : quand j'installe le programme, à la fin j'ai un code d'erreur 740 qui me dit que je dois augmenter les privilèges pour exécuter l'exécutable du programme.
Pourtant j'ai bien ajouté la ligne PrivilegesRequired=admin dans InnoSetup (au tout début, après [Setup]).
J'ai bien cette ligne à la fin de mon fichier Inno Setup aussi :
{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent

Edit : Il fallait mettre cette ligne après Filename sous [Run] :
Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: runascurrentuser nowait postinstall skipifsilent

Tout fonctionne, merci ! :lol: