Página 1 de 1

Indicar la validez de una instalación

Publicado: 6 de marzo de 2017 - 16:00
por raikyn
Hola,

llevo algo más de un año creando paquetes con regularidad y me encuentro con un problema:

he creado un paquete para instalar software empresarial (ERDAS 2014 en este caso). Se instala sin problemas , pero WAPT considera que la instalación es incorrecta y no tengo ni idea de por qué.

Como resultado, este paquete (a pesar de estar configurado correctamente) intenta reinstalarse cada vez que se realiza un cambio en los ordenadores donde está instalado.

Mi pregunta es: ¿Es posible indicarle a WAPT (a través de la consola) que un paquete está correctamente instalado? (¿Forzar el estado OK?).

No quiero usar la función "Olvidar paquete", porque me gustaría poder desinstalarlo limpiamente a través de la consola de WAPT cuando sea necesario.

Si esta funcionalidad no existe, ¿quizás se podría implementar?

Re: Indicando la validez de una instalación

Publicado: 6 de marzo de 2017 - 16:30
por sfonteneau
Hola,

para ayudarte necesitamos el contenido del paquete (setup.py).

Si, por ejemplo, lo ejecutas, es posible que no devuelva un estado de 0 y, por lo tanto, Wapt considere que la instalación ha fallado.

Para saber exactamente qué está haciendo Wapt, necesitas indicarnos el error:
https://www.wapt.fr/fr/doc/Utilisation/ ... et-general

Simon

Re: Indicando la validez de una instalación

Publicado: 7 de marzo de 2017 - 8:53 a. m.
por raikyn
Hola, aparentemente es un problema de "estado"; no está en 0.

Este es el contenido de setup.py:

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

uninstallkey = ['{4099F374-39B8-4226-9AC2-2069CEE8BF82}']


def install():
run(r'"foundation\Setup.exe" /s ERDASFoundation2014 /ni ACCEPT_EULA=1')


El error:
CalledProcessError: Command '('"foundation\\Setup.exe" /s ERDASFoundation2014 /ni ACCEPT_EULA=1',)' returned non-zero exit status 1

Debo señalar que si ejecuto este comando directamente desde el símbolo del sistema en la PC, no obtengo ningún error.

Re: Indicando la validez de una instalación

Publicado: 7 de marzo de 2017 - 11:01
por Floflobel
Buen día,

Personalmente, uso la función install_exe_if_needed: https://dev.tranquil.it/sphinxdocs/sour ... _si_es_necesario

Primero necesitarás la clave de desinstalación; aquí es donde la puedes encontrar:

Código: Seleccionar todo

# For OS 64bits and Software 32bits version : HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\
# For OS 32 bits or 64bits (and Software 64bits version) : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\
Atentamente,

Re: Indicando la validez de una instalación

Publicado: 7 de marzo de 2017 - 18:01
por sfonteneau
La función `install_exe_if_needed` también generará un error.

https://dev.tranquil.it/sphinxdocs/sour ... _if_needed

De hecho, acepta los códigos de salida 0 y 3010, pero el código de retorno 1 no está entre ellos.

Si usa `install_exe_if_needed` en la segunda pasada, no debería generar un error porque se encontrará la `uninstallkey`.

Si lo desea, puede agregar el código de salida 1, como es aceptable para Wapt:

`run('"install.exe" /s',accept_returncodes=[0, 1, 3010])`.

Pero, ¿es el código de salida 1 un código de salida normal?

Simon

Re: Indicando la validez de una instalación

Publicado: 8 de marzo de 2017 - 09:59
por raikyn
Muchísimas gracias, funciona gracias a accept_returncodes=[0, 1, 3010].
Ya había visto esta función, pero como nunca la había usado, la había olvidado... disculpen las molestias.

Respecto al código de salida 1, admito que, en la mayoría de los casos, efectivamente correspondía a un problema en la instalación.
Sin embargo, para ERDAS Foundation 2014, la instalación se completa a pesar de este código.

¡Gracias de nuevo!

Re: Indicando la validez de una instalación

Publicado: 8 de marzo de 2017 - 10:15
por sfonteneau
El mejor enfoque, como indicó Floflobel, es usar install_exe_if_needed con accept_returncodes=[0, 1, 3010].

De esta manera, si no se encuentra la clave de desinstalación después de la ejecución, el paquete fallará (por una buena razón ;-) ).