plantilla de script setup.py

Preguntas sobre paquetes WAPT / Solicitudes y ayuda sobre paquetes WAPT.
Reglas del foro
Reglas del foro de la comunidad
* Soporte en inglés en www.reddit.com/r/wapt
* El soporte de la comunidad en francés está disponible en este foro
* Por favor, anteponga [RESUELTO] al título del tema si está resuelto.
* Por favor, no edite un tema que esté etiquetado como [RESUELTO]. Abra un nuevo tema haciendo referencia al anterior.
* Especifique la versión de WAPT instalada, la versión completa y el número de compilación (2.2.1.11957 / 2.2.2.12337 / etc.), así como la edición Enterprise/Discovery.
* Las versiones 1.8.2 y anteriores ya no son compatibles. Las únicas preguntas aceptadas sobre la versión 1.8.2 están relacionadas con la actualización a una versión compatible (2.1, 2.2, etc.).
* Especifique el sistema operativo del servidor (Linux/Windows) y la versión (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019).
* Especifique el sistema operativo de la máquina de administración/creación de paquetes y de la máquina con el agente problemático, si corresponde (Windows 7/10/11/Debian 11/etc.).
* Evite hacer varias preguntas al abrir un tema, ya que podría ser ignorado. Si hay varios temas, ábralos por separado, preferiblemente uno tras otro y no todos a la vez (es decir, no sature el foro con spam).
* Incluya fragmentos de código, capturas de pantalla y otras imágenes directamente en la publicación. Los enlaces a Pastebin, Bitly y otros sitios de terceros serán eliminados sistemáticamente.
* Como en cualquier foro comunitario, el soporte es proporcionado voluntariamente por los miembros. Si necesita soporte comercial, puede comunicarse con el departamento de ventas de Tranquil IT al 02.40.97.57.55.
so37
Mensajes: 23
Inscripciones: 10 Abr 2016 - 13:43 horas.

2 de mayo de 2016 - 22:26

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.
Avatar de usuario
Sfonteneau
Experto en WAPT
Mensajes: 2312
Registrado: 10 de julio de 2014 - 23:52
Contacto :

3 de mayo de 2016 - 09:10

!!! 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
so37
Mensajes: 23
Inscripciones: 10 Abr 2016 - 13:43 horas.

3 de mayo de 2016 - 10:05

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
Última edición realizada por so37 el 3 de mayo de 2016 a las 10:16, editado 1 vez.
so37
Mensajes: 23
Inscripciones: 10 Abr 2016 - 13:43 horas.

3 de mayo de 2016 - 10:10

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}
Avatar de usuario
Sfonteneau
Experto en WAPT
Mensajes: 2312
Registrado: 10 de julio de 2014 - 23:52
Contacto :

3 de mayo de 2016 - 10:28

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.
so37
Mensajes: 23
Inscripciones: 10 Abr 2016 - 13:43 horas.

3 de mayo de 2016 - 10:38

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?
so37
Mensajes: 23
Inscripciones: 10 Abr 2016 - 13:43 horas.

3 de mayo de 2016 - 10:44

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)	
Avatar de usuario
Sfonteneau
Experto en WAPT
Mensajes: 2312
Registrado: 10 de julio de 2014 - 23:52
Contacto :

7 de mayo de 2016 - 13:00

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.
so37
Mensajes: 23
Inscripciones: 10 Abr 2016 - 13:43 horas.

9 de mayo de 2016 - 09:07

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?
so37
Mensajes: 23
Inscripciones: 10 Abr 2016 - 13:43 horas.

11 de mayo de 2016 - 13:52

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

Bloqueado