Page 1 sur 1

Comment wapitiser des logiciels déjà installés ?

Posté : 05 janv. 2016 - 06:40
par dominix
il y a sur mes machines déjà plein de logiciels que propose wapt.
Cependant wapt ne me propose pas de les mettre à jour.
Alors voila une truc que j'aimerais connaitre, comment faire pour intégrer les logiciels déjà installés.

merci de vos lumières, et bonne année 111110000 a tous.

Re: Comment wapitiser des logiciels déjà installés ?

Posté : 05 janv. 2016 - 08:47
par Floflobel
Tout dépend de ton script en Python si tu l'installe juste alors il réinstallera par dessus même si le logiciel est déjà présent.
Tu peux mettre une condition que si il est déjà présent alors tu ne le réinstalle pas.
Tu peux aussi jouer avec la version..

Re: Comment wapitiser des logiciels déjà installés ?

Posté : 05 janv. 2016 - 08:57
par htouvet
Effectivement, les paquets bien écrits testent la version déjà installée et ne font que la postconfiguration si le logiciel est déjà présent sur la machine (fonctions install_exe_if_needed ou install_msi_if_needed par exemple)
Si le parc est homogène (les PC ont tous à peu près les mêmes logiciels), alors un paquet groupe de logiciels appliqué à tous les PC fera l'affaire.

Sinon, une solution est de créer un paquet qui détecte les logiciels présents et installe le paquet WAPT cotrrespondant.
Ensuite, les mises à jour se font par Wapt.

exemple de script setup.py correspondant :

Code : Tout sélectionner

# -*- coding: utf-8 -*-
from setuphelpers import *

uninstallkey = []

softs = (
    ('adobe flash','tis-flash'),
    ('java update','tis-java'),
    ('irfanview','tis-irfanview'),
    ('7-zip','tis-7zip'),
    ('notepad++','tis-notepadplusplus'),
    ('mozilla firefox esr','tis-firefox-esr'),
)

def update_control(control):
    import re
    # replace description with list of keywords
    control.description = re.sub('\(.*\)','(%s)'%(','.join([s for s,p in softs])),control.description)

def install():
    for (keywords,package) in softs:
        found = installed_softwares(keywords)
    if found and not WAPT.is_installed(package):
        print('%s %s installed, adding package'%(found[0]['name'],found[0]['version']))
        WAPT.install(package)

Re: Comment wapitiser des logiciels déjà installés ?

Posté : 05 janv. 2016 - 09:44
par Floflobel
Bonjour,

Petit question un peu hors sujet.
Ce print vous reporte t'il bien le nom du package et ça version ?

Code : Tout sélectionner

print('%s %s installed, adding package'%(found[0]['name'],found[0]['version']))
        WAPT.install(package)

Re: Comment wapitiser des logiciels déjà installés ?

Posté : 05 janv. 2016 - 12:08
par htouvet
pas tout à fait

Code : Tout sélectionner

print('%s %s installed, adding package'%(found[0]['name'],found[0]['version']))
        WAPT.install(package)
affiche le premier nom de logiciel trouvé dans la base de registre windows qui correspond au mots clés, pas les paquets Wapt.

Au passage, il y a un problème d'indentation dans mon post précédent.
C'est :

Code : Tout sélectionner

# -*- coding: utf-8 -*-
from setuphelpers import *

uninstallkey = []

softs = (
    ('adobe flash','tis-flash'),
    ('java update','tis-java'),
    ('irfanview','tis-irfanview'),
    ('7-zip','tis-7zip'),
    ('notepad++','tis-notepadplusplus'),
    ('mozilla firefox esr','tis-firefox-esr'),
)

def update_control(control):
    import re
    # replace description with list of keywords
    control.description = re.sub('\(.*\)','(%s)'%(','.join([s for s,p in softs])),control.description)

def install():
    for (keywords,package) in softs:
        found = installed_softwares(keywords)
        if found and not WAPT.is_installed(package):
            print('%s %s installed, adding package'%(found[0]['name'],found[0]['version']))
            WAPT.install(package)