Raymond Posté(e) le 14 mai 2012 Posté(e) le 14 mai 2012 Voici les nouvelles sources avec la prise en charge des nouveaux noms des DLL Flash. Je récupère le nom dans une clé de registre créée par Adobe. Comme la copie de fichier avec renommage génère toujours une erreur (mais ça copie quand même) je fait d'abord une suppression (pour vérifier que Maxthon n'est pas ouvert) puis ensuite la copie. Testé avec plusieurs cas de figure sous Windows 7 64 bits et Windows XP 32 bits. TruuuC, Si tu as un peu de temps tu peux m'expliquer ce que fait ton petit programme pour détecter la bonne dll de Flash, je ne comprends rien ou presque rien au code nsis ?
tikette Posté(e) le 14 mai 2012 Posté(e) le 14 mai 2012 Je n'ai pas eu de pub, mais la règle suivante par défaut du tueur de pub de Maxthon semble l'avoir supprimée. */pagead/* As-tu coché l'option 'Souscrire aux règles du tueur de pubs' pour récupérer la liste des règles globales qui n'est toujours pas éditable ? Ah.. Non (enfin, maintenant oui :3) J'espère que ça marchera, je vous tiens au courant ! Merci en tout cas ! EDIT : Au premier abord, ça à l'air de marcher. (Je suis stupide d'avoir décocher le truc, j'ai pas du faire gaffe ahaha)
TruuuC Posté(e) le 15 mai 2012 Posté(e) le 15 mai 2012 TruuuC, Si tu as un peu de temps tu peux m'expliquer ce que fait ton petit programme pour détecter la bonne dll de Flash, je ne comprends rien ou presque rien au code nsis ? D'abord pour les Windows 64bits je force la lecture du registre en 32bits (clé SOFTWARE\Wow6432Node). SetRegView 32 Ensuite je récupère dans une variable l'adresse complète de la DLL Flash dans la clé de registre d'Adobe. ReadRegStr $FlashDLLPath HKLM "SOFTWARE\Macromedia\FlashPlayerPlugin" "PlayerPath" Puis je récupère la version de cette DLL avec une fonction dispo dans la doc NSIS. GetDLLVersion $FlashDLLPath $R0 $R1 IntOp $R2 $R0 / 0x00010000 IntOp $R3 $R0 & 0x0000FFFF IntOp $R4 $R1 / 0x00010000 IntOp $R5 $R1 & 0x0000FFFF StrCpy $0 "$R2.$R3.$R4.$R5" Maintenant je récupère la version de la DLL de Maxthon. GetDLLVersion $INSTDIR\Core\Webkit\Npplugins\NPSWF32.dll $R0 $R1 IntOp $R2 $R0 / 0x00010000 IntOp $R3 $R0 & 0x0000FFFF IntOp $R4 $R1 / 0x00010000 IntOp $R5 $R1 & 0x0000FFFF StrCpy $1 "$R2.$R3.$R4.$R5" Et je compare les 2 versions ${VersionCompare} "$0" "$1" $2 Si la comparaison donne 1, la DLL de Windows est plus récente que celle de Maxthon, on exécute donc la mise à jour (Done) sinon, si la comparaison donne 0 (verison identique) ou 2 (DLL Maxthon plus récente) on ne fait rien (End) StrCmp $2 "1" Done End
Raymond Posté(e) le 15 mai 2012 Posté(e) le 15 mai 2012 D'abord pour les Windows 64bits je force la lecture du registre en 32bits (clé SOFTWARE\Wow6432Node). SetRegView 32 Ensuite je récupère dans une variable l'adresse complète de la DLL Flash dans la clé de registre d'Adobe. ReadRegStr $FlashDLLPath HKLM "SOFTWARE\Macromedia\FlashPlayerPlugin" "PlayerPath" Puis je récupère la version de cette DLL avec une fonction dispo dans la doc NSIS. GetDLLVersion $FlashDLLPath $R0 $R1 IntOp $R2 $R0 / 0x00010000 IntOp $R3 $R0 & 0x0000FFFF IntOp $R4 $R1 / 0x00010000 IntOp $R5 $R1 & 0x0000FFFF StrCpy $0 "$R2.$R3.$R4.$R5" Maintenant je récupère la version de la DLL de Maxthon. GetDLLVersion $INSTDIR\Core\Webkit\Npplugins\NPSWF32.dll $R0 $R1 IntOp $R2 $R0 / 0x00010000 IntOp $R3 $R0 & 0x0000FFFF IntOp $R4 $R1 / 0x00010000 IntOp $R5 $R1 & 0x0000FFFF StrCpy $1 "$R2.$R3.$R4.$R5" Et je compare les 2 versions ${VersionCompare} "$0" "$1" $2 Si la comparaison donne 1, la DLL de Windows est plus récente que celle de Maxthon, on exécute donc la mise à jour (Done) sinon, si la comparaison donne 0 (verison identique) ou 2 (DLL Maxthon plus récente) on ne fait rien (End) StrCmp $2 "1" Done End Un grand TruuuC, pour cette explication lumineuse (pour moi) de cette partie du code nsis !
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.