Suite au souci rencontré dans ce topic : viewtopic.php?f=73&t=32221
J'ai voulu jeter un oeil plus en détail sur la gestion des "instances multiples".
J'ai constaté que les lanceurs réalisées avec la v3 du Pack de portabilisation comprenait bien une fonction de vérification pour savoir si l'appli est déjà lancée (voir le code du lanceur de Sumatra par exemple) ... sauf que celle-ci ne peut pas fonctionner parce que le processus nommé myMutex doit rarement exister.
Dans le script nsi que j'ai mis à jour et qui est inclus dans la version du pack dispo ici : viewtopic.php?f=73&t=32072
J'ai remplacé certaines "vieilles" fonctions définie dans le nsi par des fonctions standards de NSIS (GetParameters, GetRoot et FindProcDLL à la place de Mutex). Ça a donc réactivé la fonction de prévention d'exécutions multiples (cf les soucis du premier lien).
J'ai également regardé le lanceur générique utilisé par pyg dans certains cas (Notepad++ par exemple) : il n'y a aucune vérification.
Par contre, il ne peut tout simplement pas être utilisé en conjonction avec CAFE puisqu'il ne gère pas non plus les paramètres passés au script.
Il ressort de toutes ces observations que l'utilisation de CAFE peut être largement perturbée en fonction du lanceur utilisé.
Le comportement le plus propre, selon moi, serait d'empêcher le lancement d'une application portable dans le cas ou la même appli est déjà exécutée en local et de reconfier à sa version portable la gestion des lancements multiples si celle-ci est lancée.
Ça n'est pas très compliqué à vérifier avec le lanceur mais ça implique de laisser tourner le processus PortableMachin pour distinguer l'appli locale de l'appli portable. Ça induit donc une charge mémoire plus importante.
Le comportement serait alors le suivant lors du lancement de PortableMachin :
- appli locale déjà lancée : avertissement lors de la tentative d'utilisation de PortableMachin et sortie
- pas de version locale ou portable lancée : on lance Machin avec ses éventuels paramètres et on laisse tourner PortableMachin (ExecWait)
- appli portable déjà lancée : on passe les paramètres à Machin et on sort direct de PortableMachin (Exec, pour ne pas avoir plusieurs instances de ce dernier)
Un cas qu'il n'est pas possible de gérer : PortableMachin tourne et l'utilisateur lance la version locale de Machin.
Selon vous, quel est la meilleure façon de faire ? Est-il utile de s'en préoccuper ? J'avoue qu'étant entouré de gens qui clique dans tous les sens sans avoir la moindre idée de ce qu'il font , je suis devenu très prudent.
Et autant avec certaines applis les risques en cas de lancement conjoint des versions portables et locales est minime, autant j'ai des doutes sur certaines.
Et la solution de l'ini proposée dans le premier lien me parait n'être qu'une rustine.
Voilà, la discussion est ouverte.
-
fat115
- Messages : 930
- Géo : Ardèche ... du nord