Page 1 sur 2

Modèle de script setup.py

Posté : 02 mai 2016 - 22:26
par so37
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

Re: Modèle de script setup.py

Posté : 03 mai 2016 - 09:10
par sfonteneau
!!! 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

Re: Modèle de script setup.py

Posté : 03 mai 2016 - 10:05
par so37
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

Re: Modèle de script setup.py

Posté : 03 mai 2016 - 10:10
par so37
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}

Re: Modèle de script setup.py

Posté : 03 mai 2016 - 10:28
par sfonteneau
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

Re: Modèle de script setup.py

Posté : 03 mai 2016 - 10:38
par so37
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 ??

Re: Modèle de script setup.py

Posté : 03 mai 2016 - 10:44
par so37
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)	

Re: Modèle de script setup.py

Posté : 07 mai 2016 - 13:00
par sfonteneau
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

Re: Modèle de script setup.py

Posté : 09 mai 2016 - 09:07
par so37
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é ??

Re: Modèle de script setup.py

Posté : 11 mai 2016 - 13:52
par so37
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