Página 1 de 1

[RESUELTO] Sobrecarga de la función remove()

Publicado: 14 de junio de 2024 - 11:37
por sebastien4444
Buen día,

Creé un paquete para instalar Office 2019 a través de officedeploymenttool y proporciono la clave de desinstalación en los parámetros de la función install_exe_if_needed().
La instalación está bien, pero cuando ejecuto un comando de eliminación para desinstalar, aparece el siguiente error:

Código: Seleccionar todo

Command Line : remove "C:\waptdev\pilote-regtest_1.0_x64_Windows_PROD-wapt\WAPT\.."
Using config file: C:\Program Files (x86)\wapt\wapt-get.ini
Removing C:\waptdev\pilote-regtest_1.0_x64_Windows_PROD-wapt\WAPT\.. ...
2024-06-14 11:19:04,815 CRITICAL Critical error during uninstall: CalledProcessErrorOutput: Command ['"C:\\Program Files\\Common Files\\Microsoft Shared\\ClickToRun\\OfficeClickToRun.exe" scenario=install scenariosubtype=ARP sourcetype=None productstoremove=Standard2019Volume.16_fr-fr_x-none culture=fr-fr version.16=16.0'] returned non-zero exit status 1.
Output:La syntaxe du nom de fichier, de répertoire ou de volume est incorrecte.
Mi primera pregunta entonces es: ¿qué significa exactamente este mensaje? :?:

Entonces, como solución alternativa, creé un archivo de configuración uninstall.xml que permite la desinstalación de mi versión de Office y, durante la instalación, copiaré este archivo y el setup.exe necesario en un directorio de Office.
Mi idea es anular la función remove() para que ejecute "setup.exe /configure uninstall.xml".
Pero aquí también me encuentro con un problema: no siento que mi anulación esté funcionando cuando ejecuto la eliminación de configuración ya que obtengo el mismo error que el anterior.

Aquí está mi setup.py:

Código: Seleccionar todo

from setuphelpers import *

def install():

    uninstall_key = "Standard2019Volume - fr-fr"
    office_path = makepath("C:","Program Files","Microsoft Office")
    office_uninstall_path = makepath("C:","Program Files","Microsoft Office","Uninstall")

    print("Debut")

    install_exe_if_needed("setup.exe", silentflags="/configure Install.xml", key=uninstall_key, timeout=None, min_version='')

    print('Install ok')

    mkdirs(office_uninstall_path)
    filecopyto("setup.exe",office_uninstall_path)
    filecopyto("Uninstall.xml",office_uninstall_path)

    print("Répertoire et fichiers desinstallation OK")

def remove():
    office_uninstall_path_setup = makepath("C:","Program Files","Microsoft Office","Uninstall","setup.exe")
    office_uninstall_path_config = makepath("C:","Program Files","Microsoft Office","Uninstall","Uninstall.xml")

    print('Debut uninstall')
    run(office_uninstall_path_setup + ' /configure ' + office_uninstall_path_config)

    print('uninstall OK')

Re: Sobrecarga de la función remove()

Publicado: 14 de junio de 2024 - 12:45
por sfonteneau
Buen día

Como dejaste la clave, Wapt está intentando desinstalarla

Agregue lo siguiente al final de su `def install()`:

Código: Seleccionar todo

def install(): 
    ...
    uninstallkey.clear()
para decirle a Wapt que no intente desinstalarlo automáticamente.