Página 1 de 2

Paquete vacío para desinstalar una aplicación

Publicado: 22 de marzo de 2018 - 09:44
por benoitpatin
Buen día,

- Versión WAPT instalada: 1.5.1.18 Comunidad
- Sistema operativo de servidor Linux Debian 9
- Sistema operativo de la máquina de administración/creación de paquetes: Windows 10

Me gustaría crear un paquete libre de código fuente con un solo comando para desinstalar un programa en mis computadoras.

No tengo el código fuente original de la aplicación.
Usando el comando wapt-get list-registry software_name puedo recuperar la cadena de desinstalación y la clave de desinstalación en una máquina de destino.

Así que tontamente creé un paquete vacío con la información dada:

Código: Seleccionar todo

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

uninstallkey = ['Foxit Reader_is1']


def uninstall():
    print('uninstalling Foxit Reader')
    run(r'"C:\Program Files (x86)\Foxit Software\Foxit Reader\unins000.exe"')
Pero no parece funcionar correctamente. Como este es mi segundo paquete, creo que me faltan un par de cosas para que funcione correctamente.
¿Hay alguien que pueda ayudarme?

GRACIAS

Re: Paquete vacío para desinstalar una aplicación

Publicado: 22 de marzo de 2018 - 10:03
por agauvrit
Hola Benoît,

La función desinstalar Esto permite desinstalar el software implementado con WAPT. Si desea desinstalar el software directamente, debe escribir este código en la función instalar del paquete.

Si desea desinstalar software en todas las versiones posibles, lo mejor es utilizar una función como esta:

Código: Seleccionar todo

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

uninstallkey = []

def install():
    for soft in installed_softwares('Foxit Reader'):
        if Version(soft['version']) < Version('18'):
                run(WAPT.uninstall_cmd(soft['key']))

Re: Paquete vacío para desinstalar una aplicación

Publicado: 22 de marzo de 2018 - 14:17
por benoitpatin
¡Genial, la respuesta rápida! :D

Sin embargo, necesito alguna aclaración...

Código: Seleccionar todo

def install():
    for soft in installed_softwares('Foxit Reader'):
        if Version(soft['version']) < Version('18'):
                run(WAPT.uninstall_cmd(soft['key']))
¿La palabra "versión" entre una comilla simple y un corchete debe corresponder a la versión en mi Agregar o quitar programas?
¿A qué debería corresponder la palabra "key" entre comillas simples y corchetes? ¿A la clave de desinstalación o a la cadena de desinstalación?

Re: Paquete vacío para desinstalar una aplicación

Publicado: 22 de marzo de 2018 - 14:46
por sfonteneau
benoitpatin escribió: 22 de marzo de 2018 - 14:17 ¿La palabra "versión" entre comillas simples y corchetes se refiere a la versión en mi Agregar o quitar programas?

benoitpatin escribió: 22 de marzo de 2018 - 14:17 ¿A qué se refiere la palabra "clave" entre comillas simples y corchetes? ¿A la clave de desinstalación o a la cadena de desinstalación?
La palabra 'clave' no debe reemplazarse; recuperaremos el valor de la 'clave' de la 'clave de desinstalación' que se está probando actualmente

Re: Paquete vacío para desinstalar una aplicación

Publicado: 22 de marzo de 2018 - 14:57
por benoitpatin
Bueno, genial, aquí está min setup.py:

Código: Seleccionar todo

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

uninstallkey = ['Foxit Reader_is1']


def install():
    print('uninstalling Foxit Reader')
    for soft in installed_softwares('Foxit Reader'):
        if Version(soft['version']) < Version('8.2.1.6871'):
            run(WAPT.uninstall_cmd(soft['key']))
Construyo, cargo, lanzo el paquete en mi máquina pero no pasa nada.
No he cometido ningún error en ningún punto. ¿Me he perdido algo?

Re: Paquete vacío para desinstalar una aplicación

Publicado: 22 de marzo de 2018 - 15:17
por sfonteneau
No veo ningún error en tu código.

En la máquina en la que estás realizando la prueba.

¿Puedes ejecutar un:

Código: Seleccionar todo

wapt-get list-registry Foxit


para ver qué pasa

Re: Paquete vacío para desinstalar una aplicación

Publicado: 22 de marzo de 2018 - 15:18
por agauvrit
Para ver la lista de software potencialmente afectado:

Código: Seleccionar todo

wapt-get list-registry Foxit Reader
Si el software no aparece, no se desinstalará; es posible que necesites usar solo "Foxit" como palabra clave de búsqueda

Alejandro

Re: Paquete vacío para desinstalar una aplicación

Publicado: 22 de marzo de 2018 - 15:22
por benoitpatin

Código: Seleccionar todo

UninstallKey                           Software                                                              Version             Uninstallstring                        
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Foxit Reader_is1                       Foxit Reader                                                          8.2.1.6871          "C:\Program Files (x86)\Foxit Software\Foxit Reader\unins000.exe"

Re: Paquete vacío para desinstalar una aplicación

Publicado: 22 de marzo de 2018 - 15:27
por agauvrit
La versión devuelta es igual a la versión impuesta en la prueba de versión (8.2.1.6871) por lo que no se desinstala.

Para ser más "bruto", puedes escribir la desinstalación completa de todas las versiones posibles de esta manera:

Código: Seleccionar todo

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

uninstallkey = ['Foxit Reader_is1']


def install():
    print('uninstalling Foxit Reader')
    for soft in installed_softwares('Foxit Reader'):
            run(WAPT.uninstall_cmd(soft['key']))

Re: Paquete vacío para desinstalar una aplicación

Publicado: 22 de marzo de 2018 - 17:32
por benoitpatin
No funciona y no veo ningún mensaje de error (aunque, pensándolo bien, ¡quizás no haya ningún error!).
¿Cómo puedo solucionarlo?