Page 1 sur 1

[..] Executer un script une seule fois

Posté : mar. 04 janv. 2011 16:33
par jcaspar
B :mrgreen: onne année à tous !

Pour bien commencer l'année une nouvelle question !

Puis je faire en sorte qu'un script ne s'excute qu'une seule

fois ? :roll:

Je ne vois pas trop comment faire la fonction _singleton ne lance qu'une
seule instance ...mais bon ce n'est pas tout à fait ce que je cherche...

Merci d'avance pour vos suggestions et conseils

Jean Marc

Re: [..] Executer un script une seule fois

Posté : mar. 04 janv. 2011 16:44
par zeshrek
Par une seule fois tu veux dire :
1/ A un instant T il n'y a qu'une seule occurence du script qui s'éxécute
2/ Dans une session (entre 2 login de l'utilisateur) le script ne s'exécute qu'une seule fois
3/ Le script ne peut etre lancé qu'une seule fois par chaque utilisateur de la machine
4/ Le script ne peut etre éxécuté qu'une seule fois sur l'ordinateur, quel que soit l'utilisateur qui éssaye de le lancer la seconde fois

Hé oui, il peut y avoir plein de 'une seule fois'


En clair, plutot que nous parler de ce qui ne correspond pas a ce que tu veux faire (_singleton), dis nous ce que tu veux faire pour qu'on essaye de te troucer une solution

Re: [..] Executer un script une seule fois

Posté : mer. 05 janv. 2011 16:36
par jcaspar
Effectivement je souhaiterais que mon script ne s'excute qu'une seule fois
sur une même machine.

Le script ne peut etre éxécuté qu'une seule fois sur l'ordinateur, quel que soit l'utilisateur qui éssaye de le lancer la seconde fois

J'ignore comment coder cela ?
:roll:

Je Suis curieux de savoir comment procéder ! :idea:

Merci beaucoup de votre réponse et de vos suggestions! :mrgreen:

Re: [..] Executer un script une seule fois

Posté : mer. 05 janv. 2011 19:11
par cramaboule
jcaspar a écrit :Effectivement je souhaiterais que mon script ne s'excute qu'une seule fois
sur une même machine.

Le script ne peut etre éxécuté qu'une seule fois sur l'ordinateur, quel que soit l'utilisateur qui éssaye de le lancer la seconde fois
Tu peux essayer avec un fichier .ini où tu inscris un 'on' 'off'.
J'utilise ce système pour exécuter l'un de mes script qu'une fois par jour. J'inscris la date dans un fichier .ini et à chaque lancement je vais vérifier ce fichier .ini.

Edition: corrections

Re: [..] Executer un script une seule fois

Posté : mer. 05 janv. 2011 20:13
par moutelous
Bonjour,

Une petite info en base de registre et voilà .....

Re: [..] Executer un script une seule fois

Posté : mer. 05 janv. 2011 20:16
par zeshrek
Si le but est de ne le lancer qu'une fois quel que soit les autres utilisateurs qui éssayent, je suppose que le plus simple consisterait a coller une clé de registre dans dans HKLM\softwares (ou si le but est de la cacher y a surement moyen de créer un GUID dans HKLM\system\controlset01\class en prenant exemple sur des class qui existent déjà) lors de la première execution, et d'en tester la présence.
Si la clé est là, c'est que l'appli a déjà tourné donc fin. Sinon, il s'execute, puis crée la clé, et quitte
A la limite tu peux lui en faire créer plusieurs



Edit : argll !!! grilled par moutelous pendant que je postais ma réponse...

Re: [..] Executer un script une seule fois

Posté : jeu. 06 janv. 2011 08:19
par jl56
Bonjour

J'avais résolu ce problème en testant simplement la présence d'un fichier

Code : Tout sélectionner

if FileExists("deja lancé.txt") Then
MsgBox(0,"attention","ce script à déja été éxécuté")
    Exit
EndIf

$file = FileOpen("deja lancé.txt", 2)
MsgBox(0,"ok","execution du script pour la premiere fois")
A+ JL56

Re: [..] Executer un script une seule fois

Posté : jeu. 06 janv. 2011 12:34
par zeshrek
l'inconvénient du fichier c'est qu'il risque plus facilemnt d'etre supprimé par un utilisateur qui voudra quand même lancer le script.
Sinon, y a aussi une solution, c'est que le script s'auto suprime apres avoir tourné. Si il est plus là, forcément personne ne le lancera ;)
voir du coté de selfdelete...

Re: [..] Executer un script une seule fois

Posté : jeu. 06 janv. 2011 21:54
par Tlem
Ouais, mais on ce fait avoir qu'une fois. Après on fait une copie avant de le lancer. :roll:

Dans les meilleures solutions, je conseil une clé dans la base de registre.
Genre dans HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class, ou dans win.ini, une nouvelle valeur anodine.

Sinon, le top (mais il faut impérativement que le soft se connecte sur un serveur) un échange de clé générée par un algorithme maison. ;)
Pas de connexion => pas de lancement.

Après, il est possible de faire un mixe de ces solutions + divers autres, mais tout dépend de l'importance de votre script. :roll:

Re: [..] Executer un script une seule fois

Posté : jeu. 06 janv. 2011 22:54
par jchd
Tour dépend aussi de la sémantique que le posteur cache sous le terme "une seule fois" :

Par utilisateur
Par PC (qu'est-ce qu'un PC ?)
Par système/OS installé (un dual boot XP et 7 sont-ils le même système ?)
Quid de la virtualisation ?
etc.

Re: [..] Executer un script une seule fois

Posté : ven. 07 janv. 2011 09:14
par zeshrek
La question a déjà été posée (regarde le 2eme post du topic) a a obtenu une réponse mais c'est vrai que les solutions proposées ont toutes leurs faiblesse.
Le fichier marqueur marche dans le cas de multiboot, mais peut etre supprimé si l'utilisateur veut relancer le script malgré tout.
La clé de registre est spécifique a un OS.
L'interrogation d'un serveur implique la mise en place d'un serveur, et un échange de données a l'insu de l'utilisateur.
.. etc etc.
C'est le problème quand les gens posent une question sans avoir réfléchi a tous les aspects du problème...

Re: [..] Executer un script une seule fois

Posté : ven. 07 janv. 2011 23:28
par jchd
J'avais bien vu, géant vert, mais la réponse apportée n'éclaircit pas grand chose. Qu'est-ce qu'une "machine" ?
Ceci rejoint d'autres posts antérieurs ici ou sur le forum US ou sur des forums d'autres langages/OS, sans recevoir jamais de réponse définitive.
Le problème étant mal posé à la base, les suggestions ne peuvent qu'être bancales d'un côté ou d'un autre.