Nous sommes le Ven 04 Juil, 2025 06:35
Supprimer les cookies

Page 4 sur 4Précédent 1, 2, 3, 4Portabiliser un logiciel contenant des chemins la config

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

Jeu 26 Juin, 2008 21:05

ok je pensais qu'on ne voulait pas de manip supplémentaire.

Là je suis dans les sources de AppSnap mais je galère complètement pour le moment, je n'arrive pas à lancer l'interface graphique.
Je dois avoir un problème avec mon wxPython.
Je continue de chercher....
FLtune -> Paramètrez le menu de votre FramaKey ! http://phpmouss.free.fr/FLtune.php
Mouss

Messages : 492
Géo : Nantes (La Haie Fouassiere)

Jeu 26 Juin, 2008 21:26

Bon, à force de persévérance, j'arrive enfin à exécuter appSnap à partir des sources ! :twisted:
Pour ce soir c'est bon je suis mort 8)

Je regarde le code [s]demain[/s] plus tard :wink:

++ Mouss
FLtune -> Paramètrez le menu de votre FramaKey ! http://phpmouss.free.fr/FLtune.php
Mouss

Messages : 492
Géo : Nantes (La Haie Fouassiere)

Ven 27 Juin, 2008 07:33

Il y a définitivement une coquille avec le xml.

Si l'on se réfère à un stockage logique, on devrait avoir
Code: Tout sélectionner
<ASuite Version="1.5">
  <Category>
    <Category name="Contenus">
      <Software name="Video Compiz/fusion">
        <PathCache>cache\1.ico</PathCache>
        <PathExe>$Drive\fk\Apps\PortableVLC.exe</PathExe>
        <Parameters>$Drive\fk\Apps\contenus\videos\fusion.mp4</Parameters>
      </Software>
    <Category name="Internet">
      <Software name="PortableFirefox">
        <PathCache>cache\2.ico</PathCache>
        <PathExe>$Drive\fk\Apps\PortableFirefox.exe</PathExe>
      </Software>
    <Category name="Son">
      <Software name="PortableAudacity">
        <PathCache>cache\3.ico</PathCache>
        <PathExe>$Drive\fk\Apps\PortableAudacity.exe</PathExe>
      </Software>
  </Category>
</Asuite>


Au lieu du xml cité par pyg. Je passe sur le premier élément category qui devrait être logiquement nommé categories.

Est-ce que sous cette forme ça passe ? Je précise que je n'ai pas windows pour faire de test
Attentyon, ponaytte maychante !
Téthis

Avatar de l’utilisateur
Messages : 3895
Géo : De passage chez les cathares

Ven 27 Juin, 2008 10:47

Oui oui, il y a une coquille, j'ai fait ça à l'arrache hier alors que ça fait 2 jours que je ne dors quasiment plus histoire d'être prêt pour les rmll, alors faut pas trop m'en vouloir :P

Tu l'auras voulu, voilà le .xml complet :
http://dl.free.fr/bLjO7hS1t/ASuite.xml

(ça fait un peu de teasing par rapport aux applis du Megapack. Dont vous pourrez retrouver une video faite à l'arrache hier ici : http://framakey.org/_goodies/video/FK_MP_alpha1.avi ;) )
*Nouveau venu ? Lisez les règles d'utilisation de ce forum
*Une question à poser ? Assurez vous qu'on vous répondra
*Soutenir Framasoft ? Participez à l'annuaire !
*"T'es où ?" Inscrivez vous sur la FramaMap
pyg

Avatar de l’utilisateur
Messages : 7858
Géo : Lyonnais

Mer 16 Juil, 2008 20:57

Pyg j'ai une question ! lol

Bon j'ai la tete dans appsnap mais le code est compliqué. ça à l'air d'être super bien codé, surement mieux que moi mais j'ai du mal à le comprendre du coup !
enfin bon j'espère bien trouver où insérer le code qui nous intéresse.
La question est, quelle est la stratégie pour l'ajout d'un logiciel dans le menu ? je veux dire par là, on l'ajoute où dans le menu ?
toujours à la racine, ou dans une sous catégorie ?
c'est écrit quelque part ou tu prévois de l'écrire quelque part ? (genre un fichier de conf dans chaque logiciel contenant la catégorie dans laquelle on ajoute le logiciel dans le menu)

bon j'espère que je me suis fait comprendre :P

++ Mouss
FLtune -> Paramètrez le menu de votre FramaKey ! http://phpmouss.free.fr/FLtune.php
Mouss

Messages : 492
Géo : Nantes (La Haie Fouassiere)

Mer 16 Juil, 2008 23:21

Je vais essayer de ne pas répondre à côté de la question (si c'est le cas, dis le moi)

Attention, c'est long et c'est pas pour les fillettes.

D'abord, le menu d'appsnap est généré à partir de 2 fichiers "db.ini".
Le premier est en local, dans le dossier d'appsnap, et est utilisé si on est pas connecté.
Le second est en ligne (dans notre cas sur le portail Framakey) : http://framakey.org/_flux/db.ini
Tu pourras voir ici le fichier original : http://code.google.com/p/appsnap/source ... nap/db.ini

C'est donc ici qu'est géré le menu d'appsnap (via l'entrée "category")

Maintenant, ça se complique : comment appsnap sait-il qu'une application est présente ou pas ?
Pour l'instant, appsnap se base sur une recherche dans la base de registre.
Par exemple, dans le fichier original d'appsnap de db.ini, on a
Code: Tout sélectionner
instversion = REGISTRY_SEARCH:DisplayName=PhotoShape Classic Version ([0-9]\.[0-9])


Si appsnap trouve la clef dans la BDR, le soft est installé (et on récupère même son n° de version). On retrouve alors l'appli dans la catégorie "installed"

Evidemment, ça ne nous arrange pas, puisque nous on veut des logiciels discrets, donc sans trace perso dans la BDR.

Nous avons donc plusieurs solutions, que je résumerai ici à 2 propositions :
A- on n'utilise appsnap QUE pour télécharger les applications, et on utilise un lanceur type Asuite à coté, construisant dynamiquement le menu (dans Asuite, donc). C'est la solution la plus simple et la plus rapide, mais elle oblige à jongler entre 2 applis, et n'est pas tres "extensible" (ainsi, appsnap ne sacahnt pas où et dans quelle version une appli est installée, il ne saura pas dire s'il y a des mises à jours)

B- on utilise Appsnap pour tout : télécharger/installer/supprimer (ça, on sait déjà faire), mais en plus pour lancer les applications déjà installées. Là, ça réclame un développement nettement plus poussé.

Plus haut, je détaillais (un peu) la méthode "A". Je peux revenir dessus si nécessaire pour les autres, car les specifications fonctionnelles sont assez simples.
Mais puisque tu as les mains dans le cambouis, voilà la traduction en VF de ce que je demandais au développeur (attention, j'apporte ici quelques petites modifications à mon texte original en anglais)

La principale chose qui manque à appsnap est une methode de substitution à la vérification par base de registre.

Ainsi, je pense qu'en ajoutant une nouvelle variable au db.ini du genre :
Code: Tout sélectionner
local_app_file = #local_app_dir#\AppInfo\appinfo.ini

et la possibilité de parser ce fichier pour y récupérer les infos de version, les détails, ou le chemin d'execution serait tout simplement ... fabuleux.

Par exemple :
Code: Tout sélectionner
[PortableSumatraPDF]

category        = Bureautique
describe        = Lecteur PDF
website         = http://www.framakey.org/Portables/PortableSumatraPDF
download        = http://download.framakey.org/apps/
version         = version:([0-9]\.[0-9]+)
scrape          = http://www.framakey.org/Portables/PortableSumatraPDF
filename        = PortableSumatraPDF-#VERSION#-fr-r01.zip
instparam       = /S
upgrades        = false
chinstdir       = /D=#INSTALL_DIR#
local_app_dir = #INSTALL_DIR#\PortableSumatraPDF
local_app_file = #local_app_dir#\AppInfo\appinfo.ini
instversion     = LOCAL_SEARCH:PackageVersion = ([0-9]\.[0-9]+)
details_file = LOCAL_SEARCH:Description = (.*)
start = LOCAL_SEARCH:Start=(.*)


Notes pour Mouss : la ligne importante ici, c'est "local_app_file = #local_app_dir#\PortableSumatraPDF\AppInfo\appinfo.ini". On a déjà #INSTALL_DIR# qui est connu et renseigné dans le fichier de conf d'appsnap et qui vaut "..\Apps", et "local_app_dir = #INSTALL_DIR#\PortableSumatraPDF" donc local_app_file = ..\Apps\PortableSumatraPDF\AppInfo\appinfo.ini

C'est le moment de faire une pause, et de relire 3 fois la phrase précédente :)

Donc Appsnap va télécharger, puis dézipper le fichier PortableSumatraPDF-#VERSION#-fr-r01.zip (#VERSION# étant remplacé par ce qu'appsnap aura trouvé sur la page web http://www.framakey.org/Portables/PortableSumatraPDF (variable "webpage") en face de la chaine texte "version:" (variable "version). Là, tu n'a rien à faire, c'est appsnap qui gère.

Maintenant, dans ce fichier .zip, il va y avoir un fichier PortableSumatraPDF\AppInfo\appinfo.ini (qu'on aura pris soin de rajouter et qui contiendra par exemple :

Code: Tout sélectionner
[Details]
Name=Portable Sumatra PDF
Publisher=Framakey.org
Homepage=http://www.framakey.org/Portables/PortableSumatraPDF
Category=Bureautique
Description=SumatraPDF, un lecteur PDF libre pour Windows que il est vachement bien

[Version]
PackageVersion=0.8
DisplayVersion=0.8 (fr)

[Control]
Start=PortableSumatraPDF.exe


Tu suis jusque là ?
Bon, on respire et on continue :)

Bon, Appsnap a pu accéder au fichier DONC l'application est installée. Mon premier souhait, c'est donc d'ajouter cette variable de conf dans le fichier db.ini d'appsnap, qui dirait "Au lancement d'appsnap, va voir si tu trouve ..\Apps\PortableSumatraPDF\AppInfo\appinfo.ini et récupère moi son contenu"
S'il ne trouve pas le fichier, on peut en déduire que pSumatraPDF n'est pas installé, OK ?
S'il le trouve, c'est que le soft se trouve dans \Apps.

Ca, sans vouloir te faire mousser (Mouss, mousser... oui ? non ? pas drôle ? t'as raison, désolé, je fatigue :P ), je pense que c'est dans tes cordes.

Après, ça se complique un peu : il faut lire le fichier en question. Et récupérer le contenu des variables.
Pour cela, je propose d'utiliser ce que j'ai ajouté dans le db.ini (cf plus haut)
Code: Tout sélectionner
instversion     = LOCAL_SEARCH:PackageVersion=([0-9]\.[0-9]+)
details_file = LOCAL_SEARCH:Description=(.*)
start = LOCAL_SEARCH:Start=(.*)


Ainsi : le LOCAL_SEARCH indique qu'on veut faire une recherche locale (donc dans le fichier appinfo.ini, définit par "local_app_file").
Ensuite il s'agit de récupérer certaines valeurs de ce fichier.
Par exemple puisqu'on a
"instversion= LOCAL_SEARCH:PackageVersion=([0-9]\.[0-9]+)" dans db.ini
et
"PackageVersion=0.8" dans ..\Apps\PortableSumatraPDF\AppInfo\appinfo.ini
alors
instversion vaudra 0.8

Ca, c'est mon second souhait : être capable de récupérer les valeurs définies dans le "local_app_file" (tout en gardant la compatibilité avec la version originale d'appsnap, puisqu'ici, on définit une méthode supplémentaire, mais rien n'empêche qui le souhaite d'utiliser instversion=REGISTRY_SEARCH:DisplayName=PhotoShape Classic Version ([0-9]\.[0-9])
dans le db.ini (on n'est pas sectaire, et on ne veut pas casser appsnap où le réécrire entièrement)

Le troisième souhait, c'est de pouvoir exploiter ces valeurs récupérées.
Il s'agit d'un développement un peu plus spécifique, puisque ça revient notamment à ajouter à appsnap la possibilité d'executer le fichier.
Par exemple, toujours pour pSumatraPDF :
- on sait que le logiciel est installé (puisqu'on a trouvé le fichier renseigné dans "local_app_file",
- on sait qu'il est installé dans ..\Apps\PortableSumatraPDF (on le sait grâce à local_app_dir)
- on sait que pour le lancer, il faut executer "PortableSumatraPDF.exe" (grace à la valeur de "Start" dans le fichier local_app_file)
Donc, ce troisième souhait, c'est d'ajouter un bouton à l'interface d'appsnap qui permettrait d'executer ..\Apps\PortableSumatraPDF\PortableSumatraPDF.exe (= la concaténation de "local_app_dir" et de "start"

Voilà, là déjà, si tu en arrive là, c'est tout simplement génial :)

Après, viendra (plus tard) le 4eme souhait : celui de prendre en compte les mises à jour.
En effet, on saura quelle est la version installée (grace à "PackageVersion=0.8", dans le fichier .ini), mais Appsnap saura toujours récupérer le numéro de la dernière version en ligne (via "version"). La bonne nouvelle, c'est que ça devrait être peanuts à développer, puisqu'en fait Appsnap gère déjà cela (la différence, c'est que lui se basait sur la BDR, alors que nous on se base sur un fichier).

Enfin, dernier souhait éventuel : ajouter une option pour éviter de garder les .zip téléchargés.
Ainsi, dans http://code.google.com/p/appsnap/source ... config.ini on trouve :
Code: Tout sélectionner
# Location where downloaded installation files should be cached
cache_location = %%ALLUSERSPROFILE%%\Application Data\AppSnap\cache


et
Code: Tout sélectionner
# Maximum downloads to perform in parallel
download = 5


On peut définir sans probleme un "cache_location" local sur la clef (ex: cache_location = ..\Apps\cache), mais, même en mettant
download = 0
il me garde les .zip au moins une journée. Et ça, saimal (c)

Donc, je souhaiterait une option du type
download = -1
que Appsnap interpreterait comme : "si download égal -1, alors efface le fichier .zip de l'application dès que celle ci est installée avec succès".

Mais bon, je peux très bien vivre sans.

Woualou, tu peux ouvrir le feu de questions...




Edit : les plus avertis auront noté que j'utilise ici le format "AppInfo/appinfo.ini" de portableApps plutot que les .xml générés par le FramaGenXML de notre ami Léviathan. En fait, ça m'est égal : j'aurais préféré utiliser le .xml, mais faut vivre avec son temps, et il me parait aujourd'hui évident que PortableApps a pris de l'avance et qu'il vaut mieux raccrocher les wagons avec eux que l'inverse...
*Nouveau venu ? Lisez les règles d'utilisation de ce forum
*Une question à poser ? Assurez vous qu'on vous répondra
*Soutenir Framasoft ? Participez à l'annuaire !
*"T'es où ?" Inscrivez vous sur la FramaMap
pyg

Avatar de l’utilisateur
Messages : 7858
Géo : Lyonnais

Jeu 17 Juil, 2008 20:14

Wow ! Je ferais mieux de refaire une appli complète :wink:
Déjà que ça me trotté dans la tête parce que AppSnap me parait bien compliqué pour pas grand chose mais je peux me tromper !

enfin bref je vais garder la tete sur les épaules et étudier tes souhaits tranquillement un par un.
Faut déjà que je pige comment marche tout ce bazard, avec tous les threads c'est difficile à décortiquer à l'aide d'un débuggueur.

Je te tiens au jus...

A++ Mouss

PS : j'ai pas compris l'intérêt d'un DB.ini en local
FLtune -> Paramètrez le menu de votre FramaKey ! http://phpmouss.free.fr/FLtune.php
Mouss

Messages : 492
Géo : Nantes (La Haie Fouassiere)

Jeu 17 Juil, 2008 21:20

D'abord, le menu d'appsnap est généré à partir de 2 fichiers "db.ini".
Le premier est en local, dans le dossier d'appsnap, et est utilisé si on est pas connecté.


AMHA, ça permet de rajouter des applications sans être connectés, si l'on a des applications en local... Pui ca permet de gérer le menu d'appsnap sans devoir être connectés au woueb.

Amicalement
L'homme n'est pas fait pour travailler et la preuve, c'est que ça le fatigue. (Marcel Proust)
dedenimes

Messages : 2410
Géo : proche de Nîmes

Jeu 17 Juil, 2008 21:41

mouai c'est bien ce que je dis, aucun intérêt :twisted:
FLtune -> Paramètrez le menu de votre FramaKey ! http://phpmouss.free.fr/FLtune.php
Mouss

Messages : 492
Géo : Nantes (La Haie Fouassiere)

Qui est en ligne ?

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