Modèle de script setup.py

Questions about WAPT Packaging / Requêtes et aides autour des paquets Wapt.
Règles du forum
Règles du forum communautaire
* English support on www.reddit.com/r/wapt
* Le support communautaire en français se fait sur ce forum
* Merci de préfixer le titre du topic par [RESOLU] s'il est résolu.
* Merci de ne pas modifier un topic qui est taggé [RESOLU]. Ouvrez un nouveau topic en référençant l'ancien
* Préciser version de WAPT installée, version complète ET numéro de build (2.2.1.11957 / 2.2.2.12337 / etc.) AINSI QUE l'édition Enterprise / Discovery
* Les versions 1.8.2 et antérieures ne sont plus maintenues. Les seules questions acceptées vis à vis de la version 1.8.2 sont liés à la mise à jour vers une version supportée (2.1, 2.2, etc.)
* Préciser OS du serveur (Linux / Windows) et version (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019)
* Préciser OS de la machine d'administration/création des paquets et de la machine avec l'agent qui pose problème le cas échéant (Windows 7 / 10 / 11 / Debian 11 / etc.)
* Eviter de poser plusieurs questions lors de l'ouverture de topic, sinon il risque d'être ignorer. Si plusieurs sujet, ouvrir plusieurs topic, et de préférence les uns après les autres et pas tous en même temps (ie ne pas spammer le forum).
* Inclure directement les morceaux de code, les captures d'écran et autres images directement dans le post. Les liens vers les pastebin, les bitly et autres sites tierces seront systématiquement supprimés.
* Comme tout forum communautaire, le support est fait bénévolement par les membres. Si vous avez besoin d'un support commercial, vous pouvez contacter le service commercial Tranquil IT au 02.40.97.57.55
so37
Messages : 23
Inscription : 10 avr. 2016 - 13:43

02 mai 2016 - 22:26

Bonjour,

J'aimerais avoir un modèle afin d'effectuer :

Verifier si le logiciel est installé sur le poste client, si il est installé, le désinstallé et ensuite l'installé, s'il n'est pas installé, l'installé.


Merci d'avance
Avatar de l’utilisateur
sfonteneau
Expert WAPT
Messages : 1788
Inscription : 10 juil. 2014 - 23:52
Contact :

03 mai 2016 - 09:10

!!! Compatible uniquement depuis la version 1.3.5 il me semble !!!

Pour installer uniquement si le logiciel n'est pas présent ou que la version est inférieur :

Exe:

Code : Tout sélectionner

def install ():
     install_exe_if_needed('vlc-2.2.2-win32.exe',silentflags='/S --no-qt-privacy-ask --no-qt-updates-notif',key='VLC media player',min_version='2.2.2',killbefore=['vlc.exe'],accept_returncodes=[0],timeout=300)
 
Msi (plus simple):

Code : Tout sélectionner

def install ():
   install_msi_if_needed('install_flash_player_21_active_x.msi',killbefore=['iexplore.exe'])
Dans la plupart des cas une désinstallation avant n'est pas nécessaire, mais pas toujours.
Pour lancer une désinstallation:

Code : Tout sélectionner

      softname = 'Scribus'
      versionsoft = '15.007.20033'
      check_installed_soft = installed_softwares(softname)
      if check_installed_soft:
             for uninstall in check_installed_soft:
                if Version(uninstall['version']) < Version(versionsoft):
                   key=uninstall['key']
                   if installed_softwares(uninstallkey=key):
                      cmd = WAPT.uninstall_cmd(uninstall['key'])
                      run(cmd)
Cependant cette méthode peu parfois causer des soucis.
En effet Dans l'exemple on recherche un logiciel avec le nom scribus.
Mais si dans nos logiciel, un logiciel se nomme "Sribus plugin extra"
Et bien celui-ci y passera aussi.

Dans ce cas il faudra rendre le setup.py plus précis

Simon
so37
Messages : 23
Inscription : 10 avr. 2016 - 13:43

03 mai 2016 - 10:05

Voici mon script afin d'installer Visual Studio 2005 Tools pour Office Second Edition Runtime (vstor2005.exe) :

Code : Tout sélectionner

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

uninstallkey = ["{388E4B09-3E71-4649-8921-F44A3A2954A7}"]
uninstallstring = ['msiexec /qb /uninstall {388E4B09-3E71-4649-8921-F44A3A2954A7}']

def install ():
     install_exe_if_needed('vstor2005.exe', '/q',accept_returncodes=[0],timeout=300)

	
def uninstall():
      softname = 'Visual Studio 2005 Tools pour Office Second Edition Runtime'
      versionsoft = '8.0.50727.940'
      check_installed_soft = installed_softwares(softname)
      if check_installed_soft:
             for uninstall in check_installed_soft:
                if uninstall['version'] == versionsoft:
                   cmd = 'msiexec /qb /uninstall {388E4B09-3E71-4649-8921-F44A3A2954A7}'
                   run(cmd)


a priori le code fonctionne que si vstor2005 n'est pas installé, par contre quand vstor2005 est déjà installé voici le message d'erreur :

Code : Tout sélectionner

C:\Windows\system32>wapt-get install C:\Users\x\Desktop\Nuxeo\enm
-vstor2005
Installing WAPT file C:\Users\x\Desktop\Nuxeo\enm-vstor2005
2016-05-03 10:13:38,529 CRITICAL Fatal error in install script: EWaptSetupExcept
ion: Fatal error : Setup vstor2005.exe has been and uninstall key None found but
 version is not good:
Traceback (most recent call last):
  File "C:\wapt\common.py", line 3178, in install_wapt
    exitstatus = setup.install()
  File "C:\Users\x\Desktop\Nuxeo\enm-vstor2005\setup.py", line 8,
 in install
    install_exe_if_needed('vstor2005.exe','/q',accept_returncodes=[0],timeout=30
0)
  File "C:\wapt\setuphelpers.py", line 3416, in install_exe_if_needed
    error('Setup %s has been and uninstall key %s found but version is not good'
 % (exe,key))
  File "C:\wapt\setuphelpers.py", line 3524, in error
    raise EWaptSetupException(u'Fatal error : %s' % reason)
EWaptSetupException: Fatal error : Setup vstor2005.exe has been and uninstall ke
y None found but version is not good

FATAL ERROR : EWaptSetupException: Fatal error : Setup vstor2005.exe has been an
d uninstall key None found but version is not good
Dernière modification par so37 le 03 mai 2016 - 10:16, modifié 1 fois.
so37
Messages : 23
Inscription : 10 avr. 2016 - 13:43

03 mai 2016 - 10:10

quand je fait un uninstall de ce paquet, il est censé désinstaller avec la commande que

Code : Tout sélectionner

msiexec /qb /uninstall {388E4B09-3E71-4649-8921-F44A3A2954A7}
Avatar de l’utilisateur
sfonteneau
Expert WAPT
Messages : 1788
Inscription : 10 juil. 2014 - 23:52
Contact :

03 mai 2016 - 10:28

Un problème après l'autre ...

Si aucun min_version n'est renseignée (comme dans votre cas), install_exe_if_needed va lire la version dans les propriétés du fichier exe (si l'exe est bien fait). êtes vous sur de ne pas vouloirs renseignée de min_version ?

Même chose pas d'argument key dans votre commande

Nous verrons la désinstallation plus tard
so37
Messages : 23
Inscription : 10 avr. 2016 - 13:43

03 mai 2016 - 10:38

je ne sais pas trop a quoi correspond le min_version, mais si il est préférable de le faire pourquoi pas, au niveau de l'exe la version de vstor2005.exe = 8.0.50727.940 est-ce cela qui vous intéresse ??
so37
Messages : 23
Inscription : 10 avr. 2016 - 13:43

03 mai 2016 - 10:44

voici les modifications faites concernant def install :

Code : Tout sélectionner

def install ():
     install_exe_if_needed('vstor2005.exe','/q',min_version='8.0.50727.940',key='Visual Studio 2005 Tools pour Office Second Edition Runtime',accept_returncodes=[0],timeout=300)	
Avatar de l’utilisateur
sfonteneau
Expert WAPT
Messages : 1788
Inscription : 10 juil. 2014 - 23:52
Contact :

07 mai 2016 - 13:00

Une petit erreur a été corrigée dans le setuphelpers.py

https://github.com/tranquilit/WAPT/comm ... 84de4f0488

Il est possible que votre problème venait de la

Simon
so37
Messages : 23
Inscription : 10 avr. 2016 - 13:43

09 mai 2016 - 09:07

Voici mon modèle pour le moment :

Code : Tout sélectionner

# -*- coding: utf-8 -*-
import subprocess
from setuphelpers import *
import os
import time
import platform

uninstallkey = []
uninstallstring = ['msiexec /qb /uninstall {B0E8A140-26FA-43C7-AA0F-03691E6DBB02}']


def install():
  global uninstallkey
  from common import Wapt
  softname = 'Nuxeo MSIE Browser Extension'
  versionsoft = '2.1.3'
  check_installed = installed_softwares(softname)
  # si cette liste globale n est pas vide, on check chaque logiciel
  if check_installed:
             # boucle pour chaque logiciel trouvée
             for uninstall in check_installed:
                      cmd = "msiexec /qb /uninstall {B0E8A140-26FA-43C7-AA0F-03691E6DBB02}"
                      run(cmd)

  if iswin64():
        killalltasks('iexplore.exe')
        run("Nuxeo-MSIEBrowserExtension.msi /quiet /norestart")

  else:
        killalltasks('iexplore.exe')
        print run("Nuxeo-MSIEBrowserExtension.msi /quiet /norestart")


def uninstall():
  softname = 'Nuxeo MSIE Browser Extension'
  versionsoft = '2.1.3'
  check_installed = installed_softwares(softname)
  # si cette liste globale n est pas vide, on check chaque logiciel
  if check_installed:
             # boucle pour chaque logiciel trouvée
             for uninstall in check_installed:
                      cmd = "msiexec /qb /uninstall {B0E8A140-26FA-43C7-AA0F-03691E6DBB02}"
                      run(cmd)


Y'a t-il mieux, est-il suffisamment optimisé ??
so37
Messages : 23
Inscription : 10 avr. 2016 - 13:43

11 mai 2016 - 13:52

EN ayant mis le service WAPTService en administrateur, cava mieux, néanmoins lorsque je met en place le script que j'ai copié ci-dessus voici le message d'erreur :

Code : Tout sélectionner

"id"	"description"	"summary"	"start_date"	"logs"
10	Installation of test-nuxeobrowser (=2.1.3-6) (task #10)	Exception: Error during install of test-nuxeobrowser (=2.1.3-6): errors in packages test-nuxeobrowser	2016-05-11T13:51:41.573000	Installing test-nuxeobrowser
Exception: Error during install of test-nuxeobrowser (=2.1.3-6): errors in packages test-nuxeobrowser
Traceback (most recent call last):
  File "C:\wapt\waptservice\waptservice.py", line 2063, in run
    self.running_task.run()
  File "C:\wapt\waptservice\waptservice.py", line 1323, in pwrapper
    return func(*arg, **kwargs)
  File "C:\wapt\waptservice\waptservice.py", line 1383, in run
    self._run()
  File "C:\wapt\waptservice\waptservice.py", line 1807, in _run
    ','.join([ p[1].package for p in self.result['errors']]),
Exception: Error during install of test-nuxeobrowser (=2.1.3-6): errors in packages test-nuxeobrowser

Verrouillé