Nous sommes le Lun 16 Juin, 2025 19:24
Supprimer les cookies

7-zip Portable 9.22 release 2

Image Image Forum dédié à notre projet de clé USB nomade libre sous Windows

Sam 06 Août, 2011 06:14

Bonjour,

Bien que n'ayant eu aucune remontée des utilisateurs, je me suis aperçu d'un bug avec le lanceur de 7-zip.
Microsoft, dans ses tentatives désespérées de mettre en place un système de gestion des droits utilisateurs après avoir ouvert la boite de Pandore en confondant le statut d'administrateur à celui d'utilisateur basique avec XP, a décidé de mettre en place un système à la noix pour l'accès à l'éditeur de registre alors que la dite base gère les autorisations !
En conséquence, il n'est plus possible de fusionner silencieusement un fichier .reg avec un lanceur NSIS et son plugin Registry. Ceci explique l'erreur "RestoreKey" qui empêchait le lancement de 7-zipPortable sous 7 bien que seule la ruche HKCU soit touchée.

En réalité, ce sont les tests menés pour AnkiPortable qui m'ont mis sur la voie.

Armé de tout mon courage et lassé de la syntaxe exotique des scripts NSIS malgré l'utilisation de la LogicLib, j'ai franchi le pas et pondu un lanceur en AutoHotkey, langage ô combien plus puissant que NSIS mais tout aussi libre. Enfin, j'ai franchi le pas après avoir vérifié qu'il permettait de gratter dans la ruche HKCU sous XP, Vista et 7 :P
Le résultat, c'est la release 2 de 7-zipPortable.

Certains noteront que le lanceur proprement dit a pris de l’embonpoint, cela n'a pas l'air d'influencer la vitesse sauf, peut-être, sur des clés très très lentes.
Le script AutoHotkey reprend la structure du script NSIS (après tout la démarche reste la même) et corrige les problèmes d'encodage liés à NSIS : tous les fichiers sont en UTF-8.

Bon ça reste malgré tout expérimental donc tous les retours sont les bienvenus, notamment pour les systèmes en 64 bits.

TODO : gestion des historiques et des favoris pour suivre les errances de la clé cf 9.22 r03
Dernière édition par fat115 le Mer 24 Août, 2011 09:53, édité 1 fois au total.
Vécu : "J'ai une version crackée d'OpenOffice, c'est pour ça qu'elle est en anglais"
fat115

Avatar de l’utilisateur
Messages : 930
Géo : Ardèche ... du nord

Sam 06 Août, 2011 10:14

Hello,

Désolé, je n'ai pas de win 7 sous la main (à la fin de mois cela devrait être le cas) et je ne peux donc pas tester.
En tout cas, sous XP sp3 cela à l'air de bien fonctionner.

Si j'ai bien compris le problème se pose avec tous les lanceurs qui écrivent dans la base de registre.

Et du côté de PortableApps, tu as jeté un oeil à leur version. Elle pose problème avec win7 ?

En tout cas, ce qui est très impressionnant c'est de voir qu'à chaque problème tu arrives à trouver une solution. Il ne me semble pas t'avoir vu bloquer encore sur quelque chose... :shock:
cyrille

Avatar de l’utilisateur
Messages : 953
Géo : Seine et Marne

Sam 06 Août, 2011 12:35

cyrille a écrit:Si j'ai bien compris le problème se pose avec tous les lanceurs qui écrivent dans la base de registre.
Oui et non, seulement pour les lanceurs qui utilisent la fonction RestoreKey du plugin Registry de NSIS. Cette fonction appelle regedit et ça Win7 n'aime pas.

Et du côté de PortableApps, tu as jeté un oeil à leur version. Elle pose problème avec win7 ?
Non, elle fonctionne (j'ai vérifié après coup :oops: ). En fait, ils passent par un autre utilitaire, reg.exe, et s'il n'est pas présent se servent alors de la fonction RestoreKey sus-citée.
Mais je suis aussi parti sur de l'AHK parce que c'est un langage de script autrement plus simple à prendre en main par un néophyte que le NSIS. Et ses fonctions de traitement de texte/fichier sont autrement plus puissantes.
Un exemple pour comparer les dates de modifications de deux fichiers.
En NSIS (avec l'include LogicLib) :
Code: Tout sélectionner
      ; on vérifie s'il faut mettre à jour user.js dans le profil
      GetFileTime "$DataDirUnified\user.js" $1 $0
      System::Int64Op $1 * 0x100000000
      Pop $1
      System::Int64Op $1 + $0
      Pop $0
      GetFileTime "$EXEDIR\${DEFAULTDATADIR}\user.js" $3 $2
      System::Int64Op $3 * 0x100000000
      Pop $3
      System::Int64Op $3 + $2
      Pop $2
      ${If} $2 L> $0


En AutoHotkey (d'origine) :
Code: Tout sélectionner
      ; on vérifie s'il faut mettre à jour user.js dans le profil
       FileGetTime, i_Temps1, %s_DataDirUnified%\user.js
       FileGetTime, i_Temps2, %A_ScriptDir%\%_DEFAULTDATADIR%\user.js
       If (i_Temps2 > i_Temps1)

Ou encore plus simple avec un include très utile (Functions.ahk) :
Code: Tout sélectionner
      ; on vérifie s'il faut mettre à jour user.js dans le profil
       If (FileGetTime(A_ScriptDir."\"._DEFAULTDATADIR."\user.js") > FileGetTime(s_DataDirUnified."\user.js"))


Bizarrement, AutoHotkey me parait nettement plus convivial que NSIS :roll:

En tout cas, ce qui est très impressionnant c'est de voir qu'à chaque problème tu arrives à trouver une solution. Il ne me semble pas t'avoir vu bloquer encore sur quelque chose... :shock:
J'suis têtu, s'too :evil:
Vécu : "J'ai une version crackée d'OpenOffice, c'est pour ça qu'elle est en anglais"
fat115

Avatar de l’utilisateur
Messages : 930
Géo : Ardèche ... du nord

Sam 06 Août, 2011 13:48

fat115 a écrit:Bizarrement, AutoHotkey me parait nettement plus convivial que NSIS :roll:

Assez d'accord, je comprends beaucoup mieux un script ahk qu'un script nsis et je suis vraiment une bille en programmation[/quote]

fat115 a écrit:J'suis têtu, s'too :evil:

Pas seulement. Je suis aussi très têtu, mais loin d'arriver à faire tout cela.

En tout cas, opter pour ahk pour ces nouveaux lanceurs me plait bien :D
cyrille

Avatar de l’utilisateur
Messages : 953
Géo : Seine et Marne

Dim 07 Août, 2011 15:20

Bonjour,

Je viens de tester 7-ZipPortable release 2 sur un win7 stater en 32bits (désolé, je n'ai pas de 64bits à porter de main), le logiciel s'exécute correctement. J'ai juste dézippé une archive zip et cela a bien fonctionné.

S'il faut faire des tests plus poussés, n'hésitez pas.
Orthophonie Libre

Messages : 21
Géo : Bordeaux

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit