Página 1 de 1

[RESUELTO] Manejo del código de retorno para la desinstalación

Publicado: 8 de junio de 2023 - 9:45 a. m.
por Thierry Rapp
Hola,
tengo un programa que se instala correctamente e introduce la clave de desinstalación silenciosa, pero el código de retorno no es 0.
¿Cuáles son las mejores prácticas para este tipo de problema?

Gracias de antemano,
Thierry Rapp.

Re: Manejo del código de retorno para la desinstalación

Publicado: 8 de junio de 2023 - 10:15 a. m.
por sfonteneau
Buen día

En este caso, te recomiendo borrar uninstallkey después de la instalación:

ENTONCES :

Código: Seleccionar todo

uninstallkey = []
De esta manera wapt olvidará la clave

luego crea una función de desinstalación:

Código: Seleccionar todo

def uninstall():
    run('uninstall.exe',accept_returncodes=2)

Re: Manejo del código de retorno para la desinstalación

Publicado: 8 de junio de 2023 - 10:50 a. m.
por Thierry Rapp
Lo probé:

El método de desinstalación ejecutado directamente funciona
El método eliminarme devuelve otro error

Código: Seleccionar todo

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

app_uninstall_key = '{7261A53C-9352-45D1-8DE0-B326E177CA84}'

def install():
    # Declaring local variables
    fichier_lic=makepath('c:','ProgramData','itech','CESAR-LCPC','6.3','CDs')
    fichier_nethasp=makepath('c:','CESAR-LCPCv2022.0','bin')
    rep_syswow=makepath('c:','Windows','SysWOW64')
    # Installing the software
    print("Installing: CESAR-LCPCv2022.0.2.exe")
    install_exe_if_needed('CESAR-LCPCv2022.0.2.exe',
        silentflags='/b0 /q2',
        key=app_uninstall_key,
        min_version='2022.0',
        timeout=600,
        accept_returncodes=[0,12]
    )
 
    if not isdir(fichier_lic):
        mkdirs(fichier_lic)
    filecopyto('CESAR-LCPC_V6.3.ilicx',fichier_lic)
    filecopyto('nethasp.ini',fichier_nethasp)
    filecopyto('nethasp.ini',rep_syswow)
    uninstallkey =[]


def uninstall():
    uninstCMD = uninstall_cmd(app_uninstall_key)
    print(uninstCMD)
    run(uninstCMD,accept_returncodes=[0,12])
    wait_uninstallkey_present()




Re: Manejo del código de retorno para la desinstalación

Publicado: 8 de junio de 2023 - 12:08 p. m.
por sfonteneau
¿Puedes proporcionar el mensaje de error?


Tengo una duda sobre algo...

¿Puedes declarar uninstallkey justo antes de setup.py?

Código: Seleccionar todo

# -*- coding: utf-8 -*-
from setuphelpers import *
uninstallkey =[]
app_uninstall_key = '{7261A53C-9352-45D1-8DE0-B326E177CA84}'

def install():
    # Declaring local variables
    fichier_lic=makepath('c:','ProgramData','itech','CESAR-LCPC','6.3','CDs')
    fichier_nethasp=makepath('c:','CESAR-LCPCv2022.0','bin')
    rep_syswow=makepath('c:','Windows','SysWOW64')
    # Installing the software
    print("Installing: CESAR-LCPCv2022.0.2.exe")
    install_exe_if_needed('CESAR-LCPCv2022.0.2.exe',
        silentflags='/b0 /q2',
        key=app_uninstall_key,
        min_version='2022.0',
        timeout=600,
        accept_returncodes=[0,12]
    )
 
    if not isdir(fichier_lic):
        mkdirs(fichier_lic)
    filecopyto('CESAR-LCPC_V6.3.ilicx',fichier_lic)
    filecopyto('nethasp.ini',fichier_nethasp)
    filecopyto('nethasp.ini',rep_syswow)
    uninstallkey =[]


def uninstall():
    uninstCMD = uninstall_cmd(app_uninstall_key)
    print(uninstCMD)
    run(uninstCMD,accept_returncodes=[0,12])
    wait_uninstallkey_present()

No creo que sea eso, pero... si la clave de desinstalación está vacía, wapt ya no tiene una clave para probar. Si sigue dando errores, significa que la clave sigue ahí

Re: Manejo del código de retorno para la desinstalación

Publicado: 8 de junio de 2023 - 12:18
por sfonteneau
Ah, sí, ten cuidado al hacer las pruebas; es fundamental reinstalar el programa antes de probar un comando de eliminación; de lo contrario, no funcionará porque el código no está en la base de datos. Esa podría ser la razón

Re: Manejo del código de retorno para la desinstalación

Publicado: 9 de junio de 2023 - 7:42 a. m.
por Thierry Rapp

Código: Seleccionar todo

Removing C:\waptdev\insastg-cesar_2022.0.2-2_windows_PROD ...
2023-06-09 07:39:07,072 CRITICAL Critical error during uninstall: CalledProcessErrorOutput: Command 'C:\\PROGRA~3\\UNINST~1\\{7261A~1\\Setup.exe /remove /q' returned non-zero exit status 12.
Output:
No package removed !
FATAL ERROR : TypeError: not all arguments converted during string formatting

Re: Manejo del código de retorno para la desinstalación

Publicado: 9 de junio de 2023 - 7:46 a. m.
por Thierry Rapp
Estoy reiniciando la instalación.

El programa se desinstaló correctamente; simplemente está generando una excepción.

Re: Manejo del código de retorno para la desinstalación

Publicado: 9 de junio de 2023 - 8:43 a. m.
por Thierry Rapp

Código: Seleccionar todo

Une exception s'est produite : SystemExit       (note: full exception trace is shown but execution is paused at: _run_module_as_main)
3
  File "C:\Program Files (x86)\wapt\wapt-get.py", line 817, in main
    print("=== Error removing packages ===\n%s" % "\n".join(["  %s" % p for p in errors]))
  File "C:\Program Files (x86)\wapt\wapt-get.py", line 817, in <listcomp>
    print("=== Error removing packages ===\n%s" % "\n".join(["  %s" % p for p in errors]))
TypeError: not all arguments converted during string formatting

During handling of the above exception, another exception occurred:

  File "C:\Program Files (x86)\wapt\wapt-get.py", line 1651, in main
    sys.exit(3)
  File "C:\Program Files (x86)\wapt\wapt-get.py", line 1677, in <module>
    main()
  File "C:\Program Files (x86)\wapt\Lib\site-packages\runpy.py", line 87, in _run_code
  File "C:\Program Files (x86)\wapt\Lib\site-packages\runpy.py", line 194, in _run_module_as_main (Current frame)
SystemExit: 3

Re: Manejo del código de retorno para la desinstalación

Publicado: 13 de junio de 2023 - 12:48
por dcardon
Thierry Rapp escribió: 9 de junio de 2023 - 08:43

Código: Seleccionar todo

Une exception s'est produite : SystemExit       (note: full exception trace is shown but execution is paused at: _run_module_as_main)
3
  File "C:\Program Files (x86)\wapt\wapt-get.py", line 817, in main
    print("=== Error removing packages ===\n%s" % "\n".join(["  %s" % p for p in errors]))
  File "C:\Program Files (x86)\wapt\wapt-get.py", line 817, in <listcomp>
    print("=== Error removing packages ===\n%s" % "\n".join(["  %s" % p for p in errors]))
TypeError: not all arguments converted during string formatting

During handling of the above exception, another exception occurred:

  File "C:\Program Files (x86)\wapt\wapt-get.py", line 1651, in main
    sys.exit(3)
  File "C:\Program Files (x86)\wapt\wapt-get.py", line 1677, in <module>
    main()
  File "C:\Program Files (x86)\wapt\Lib\site-packages\runpy.py", line 87, in _run_code
  File "C:\Program Files (x86)\wapt\Lib\site-packages\runpy.py", line 194, in _run_module_as_main (Current frame)
SystemExit: 3
Gracias por tus comentarios Thierry, hemos corregido el mensaje de excepción, se incluirá en la próxima versión 2.4.
Estoy marcando el tema como [RESUELTO].

Atentamente,

Denis