Página 1 de 2

plantilla de script setup.py

Publicado: 2 de mayo de 2016 - 22:26
por so37
Hola,

me gustaría una plantilla para realizar los siguientes pasos:

Comprobar si el software está instalado en el equipo cliente; si está instalado, desinstalarlo y volver a instalarlo; si no está instalado, instalarlo.


Gracias de antemano.

Re: Plantilla de script Setup.py

Publicado: 3 de mayo de 2016 - 09:10
por sfonteneau
!!! Compatible solo a partir de la versión 1.3.5, creo !!!

Para instalar solo si el software no está presente o la versión es anterior:

Exe:

Código: Seleccionar todo

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 (más simple):

Código: Seleccionar todo

def install ():
   install_msi_if_needed('install_flash_player_21_active_x.msi',killbefore=['iexplore.exe'])
En la mayoría de los casos no es necesaria la desinstalación previa, pero no siempre.
Para iniciar una desinstalación:

Código: Seleccionar todo

      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)
Sin embargo, este método a veces puede causar problemas.
De hecho, en el ejemplo estamos buscando un software con el nombre scribus.
Pero si en nuestro software, un programa se llama "Sribus plugin extra"
Bueno, este también pasará por eso.

En este caso, el archivo setup.py deberá ser más específico

Simón

Re: Plantilla de script Setup.py

Publicado: 3 de mayo de 2016 - 10:05 a. m.
por so37
Aquí está mi script para instalar Visual Studio 2005 Tools para Office Second Edition Runtime (vstor2005.exe):

Código: Seleccionar todo

# -*- 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)


El código parece funcionar sólo si vstor2005 no está instalado; sin embargo, cuando vstor2005 ya está instalado, este es el mensaje de error:

Código: Seleccionar todo

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: Plantilla de script Setup.py

Publicado: 3 de mayo de 2016 - 10:10 a. m.
por so37
Cuando desinstalo este paquete, se supone que se desinstala con el comando que

Código: Seleccionar todo

msiexec /qb /uninstall {388E4B09-3E71-4649-8921-F44A3A2954A7}

Re: Plantilla de script Setup.py

Publicado: 3 de mayo de 2016 - 10:28 a. m.
por sfonteneau
Un problema tras otro...

Si no se especifica min_version (como en tu caso), install_exe_if_needed leerá la versión de las propiedades del archivo ejecutable (si el ejecutable tiene el formato correcto). ¿Seguro que no quieres especificar min_version?

Además, tu comando no incluye ningún argumento de clave.

Veremos cómo desinstalarlo más adelante.

Re: Plantilla de script Setup.py

Publicado: 3 de mayo de 2016 - 10:38
por so37
No estoy completamente seguro de a qué se refiere min_version, pero si es preferible hacerlo, ¿por qué no? Respecto al ejecutable, la versión de vstor2005.exe es 8.0.50727.940. ¿Es eso lo que te interesa?

Re: Plantilla de script Setup.py

Publicado: 3 de mayo de 2016 - 10:44 a. m.
por so37
Aquí están los cambios realizados con respecto a def install:

Código: Seleccionar todo

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: Plantilla de script Setup.py

Publicado: 7 de mayo de 2016 - 13:00
por sfonteneau
Se ha corregido un pequeño error en setuphelpers.py

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

Es posible que tu problema se originara ahí,

Simon.

Re: Plantilla de script Setup.py

Publicado: 9 de mayo de 2016 - 09:07
por so37
Aquí está mi modelo actual:

Código: Seleccionar todo

# -*- 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)


¿Hay una mejor opción? ¿Está lo suficientemente optimizada?

Re: Plantilla de script Setup.py

Publicado: 11 de mayo de 2016 - 13:52
por so37
Después de configurar WAPTService con privilegios de administrador, las cosas mejoraron; sin embargo, cuando ejecuto el script que copié arriba, aparece el siguiente mensaje de error:

Código: Seleccionar todo

"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