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!
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?
Sí
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:
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:
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?