[RESUELTO] instalación avanzada de *.exe

Comparta sus sugerencias o problemas relacionados con la consola WAPT o el agente WAPT aquí
Reglas del foro
Reglas del foro de la comunidad
* Soporte en inglés en www.reddit.com/r/wapt
* El soporte de la comunidad en francés está disponible en este foro
* Por favor, anteponga [RESUELTO] al título del tema si está resuelto.
* Por favor, no edite un tema que esté etiquetado como [RESUELTO]. Abra un nuevo tema haciendo referencia al anterior.
* Especifique la versión de WAPT instalada, la versión completa y el número de compilación (2.2.1.11957 / 2.2.2.12337 / etc.), así como la edición Enterprise/Discovery.
* Las versiones 1.8.2 y anteriores ya no son compatibles. Las únicas preguntas aceptadas sobre la versión 1.8.2 están relacionadas con la actualización a una versión compatible (2.1, 2.2, etc.).
* Especifique el sistema operativo del servidor (Linux/Windows) y la versión (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019).
* Especifique el sistema operativo de la máquina de administración/creación de paquetes y de la máquina con el agente problemático, si corresponde (Windows 7/10/11/Debian 11/etc.).
* Evite hacer varias preguntas al abrir un tema, ya que podría ser ignorado. Si hay varios temas, ábralos por separado, preferiblemente uno tras otro y no todos a la vez (es decir, no sature el foro con spam).
* Incluya fragmentos de código, capturas de pantalla y otras imágenes directamente en la publicación. Los enlaces a Pastebin, Bitly y otros sitios de terceros serán eliminados sistemáticamente.
* Como en cualquier foro comunitario, el soporte es proporcionado voluntariamente por los miembros. Si necesita soporte comercial, puede comunicarse con el departamento de ventas de Tranquil IT al 02.40.97.57.55.
Empbilly
Mensajes: 79
Inscripción: 15 de enero de 2018 - 20:59

18 de abril de 2018 - 14:15

Hola wapters, :D

Estoy haciendo un setup.py personalizado para la instalación del software miktex, pero después de la instalación no puedo desinstalarlo a través de wapt.

¿El código siguiente necesita alguna configuración adicional?

Código: Seleccionar todo

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

uninstallkey = []

def install():
	print('installing miktex v.2.9')
	install_exe_if_needed("basic-miktex-2.9.6643-x64.exe",
							silentflags="--shared --unattended"
							key='MiKTeX 2.9')
Última edición realizada por empbilly el 25 de abril de 2018 a las 13:38; editado 1 vez.
Avatar de usuario
htouvet
Experto en WAPT
Mensajes: 436
Inscripción: 16 de marzo de 2015 - 10:48
Contacto :

18 de abril de 2018 - 16:02

Después de instalar el paquete, ¿cuál es el resultado del comando cmd?

Código: Seleccionar todo

wapt-get list-registry miktex
Mirando a https://tex.stackexchange.com/questions... miktex-2-9Parece que la desinstalación se puede lograr con

Código: Seleccionar todo

uninstall_admin.exe
dominio.

Por lo tanto, puedes usar este comando en una función uninstall() en tu paquete.

Algo como:

Código: Seleccionar todo

def uninstall():
    run(makepath(programfilesx86,r'MiKTeX 2.9\miktex\bin\x64\internal\uninstall_admin.exe --unattended'))
TI tranquila
Empbilly
Mensajes: 79
Inscripción: 15 de enero de 2018 - 20:59

18 de abril de 2018 - 16:56

Después de instalar el paquete, ¿cuál es el resultado del comando cmd?

Código: Seleccionar todo

C:\Users\carinha>wapt-get list-registry miktex
UninstallKey                           Software
                             Version             Uninstallstring

--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
---------------------------------------
MiKTeX 2.9                             MiKTeX 2.9
                             2.9                 "C:\Program Files\MiKTeX 2.9\mi
ktex/bin/x64/internal\copystart_admin.exe" "C:\Program Files\MiKTeX 2.9\miktex/b
in/x64/internal\uninstall_admin.exe"
En la desinstalación de miktex informa que esta ok, pero en el "resumen" aparece

Código: Seleccionar todo

Removed: cti_srt-miktexErrors: cti_srt-miktex
y en la máquina cliente miktex no se desinstala.

Si ejecuto manualmente el comando:

Código: Seleccionar todo

C:\Program Files\MiKTeX 2.9\miktex\bin\x64\internal\uninstall_admin.exe --unattended 
Todavía aparece la ventana de desinstalación manual y no hace nada automático.

Podría ser así

Código: Seleccionar todo

def uninstall():
    run(makepath(programfilesx86,r'"MiKTeX 2.9\mi
ktex/bin/x64/internal\copystart_admin.exe" "C:\Program Files\MiKTeX 2.9\miktex/b
in/x64/internal\uninstall_admin.exe"'))
Avatar de usuario
htouvet
Experto en WAPT
Mensajes: 436
Inscripción: 16 de marzo de 2015 - 10:48
Contacto :

18 de abril de 2018 - 17:35

Debes encontrar el interruptor desatendido adecuado para agregarlo

Código: Seleccionar todo

C:\Program Files\MiKTeX 2.9\miktex\bin\x64\internal\uninstall_admin.exe
Para que se ejecute silenciosamente. Podría ser /s /SILENT --quiet -q o quizás no se haya planeado que se ejecute silenciosamente en absoluto...
El comando registrado parece estar roto debido a que hay una confusión de barras invertidas y barras diagonales.
TI tranquila
Empbilly
Mensajes: 79
Inscripción: 15 de enero de 2018 - 20:59

19 de abril de 2018 - 00:34

Según el desarrollador de miktex, solo tiene la opción de desinstalación a través de la línea de comandos con el propio instalador.

Código: Seleccionar todo

miktexsetup uninstall
Mañana intentaré eliminarlo ejecutando wmic a través de cmd.exe o rmdir en "C:\Program Files\MiKTeX 2.9".
Empbilly
Mensajes: 79
Inscripción: 15 de enero de 2018 - 20:59

19 de abril de 2018 - 17:43

Probé con el código a continuación, pero me aparece el error:

Código: Seleccionar todo

Coping miktexsetupx64.exe and miktexsetup.exe to MiKTeX 2.9 folder...
NameError: global name 'programfilesx86' is not defined

Código: Seleccionar todo

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

uninstallkey = []

def install():
	print('Coping miktexsetupx64.exe and miktexsetup.exe to MiKTeX 2.9 folder...')
	filecopyto('miktexsetupx64.exe',makepath(programfilesx86,'MiKTeX 2.9'))
	filecopyto('miktexsetup.exe',makepath(programfilesx86,'MiKTeX 2.9'))
	if isfile(makepath(programfilesx86,'MiKTeX 2.9','miktexsetupx64.exe')):
		print('Files copied successfully!')
	print('Installing MiKTeX 2.9')
	install_exe_if_needed("basic-miktex-2.9.6643-x64.exe", silentflags="--shared --unattended")
	
def uninstall():
	print(u'Starting miktex uninstall...')
	if iswin64():
		print('Uninstalling x64 version')
		run(makepath(programfilesx86,r'MiKTeX 2.9\miktexsetupx64.exe uninstall'))
	else:
		print('Uninstalling x86 version')
		run(makepath(programfilesx86,r'MiKTeX 2.9\miktexsetup.exe uninstall'))
	print(u'Uninstallation of MiKTeX 2.9 completed!')
No sé si la parte "filetocopy" funciona como creo.

Copié los dos archivos miktexsetupx64.exe y miktexsetup.exe en la carpeta del paquete, como muestro en la imagen a continuación:

https://image.ibb.co/k22rU7/wapt_pkg.png (¿La etiqueta img no funciona?)

¿Es eso así?
¿Cómo solucionar esto? Si el código es incorrecto, ¡puedes contribuir! :D
Avatar de usuario
htouvet
Experto en WAPT
Mensajes: 436
Inscripción: 16 de marzo de 2015 - 10:48
Contacto :

19 de abril de 2018 - 19:26

Esto se ve bien
Simplemente reemplace programfilesx86 en su código por programfiles32

Código: Seleccionar todo

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

uninstallkey = []

def install():
	print('Coping miktexsetupx64.exe and miktexsetup.exe to MiKTeX 2.9 folder...')
	filecopyto('miktexsetupx64.exe',makepath(programfiles32,'MiKTeX 2.9'))
	filecopyto('miktexsetup.exe',makepath(programfiles32,'MiKTeX 2.9'))
	if isfile(makepath(programfiles32,'MiKTeX 2.9','miktexsetupx64.exe')):
		print('Files copied successfully!')
	print('Installing MiKTeX 2.9')
	install_exe_if_needed("basic-miktex-2.9.6643-x64.exe", silentflags="--shared --unattended")

def uninstall():
	print(u'Starting miktex uninstall...')
	if iswin64():
		print('Uninstalling x64 version')
		run(makepath(programfiles32,r'MiKTeX 2.9\miktexsetupx64.exe uninstall'))
	else:
		print('Uninstalling x86 version')
		run(makepath(programfiles32,r'MiKTeX 2.9\miktexsetup.exe uninstall'))
	print(u'Uninstallation of MiKTeX 2.9 completed!')
TI tranquila
Empbilly
Mensajes: 79
Inscripción: 15 de enero de 2018 - 20:59

20 de abril de 2018 - 13:34

Cambio un poco el guión.

Código: Seleccionar todo

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

uninstallkey = []
destdir = makepath(programfiles32,'miktex_setup')

def install():
	print('Coping miktexsetupx64.exe and miktexsetup.exe to MiKTeX 2.9 folder...')
	mkdirs(destdir)
	filecopyto('miktexsetupx64.exe',makepath(destdir,'miktexsetupx64.exe'))
	filecopyto('miktexsetup.exe',makepath(destdir,'miktexsetup.exe'))
	if isfile(makepath(programfiles32,'miktex_setup','miktexsetupx64.exe')):
		print('Files copied successfully!')
	print('Initializing installation of MiKTeX 2.9.')
	install_exe_if_needed("basic-miktex-2.9.6643-x64.exe", silentflags="--shared --unattended")
	
def uninstall():
	print(u'Starting miktex uninstall...')
	if iswin64():
		print('Uninstalling x64 version')
		run(makepath(programfiles32,r'miktex_setup\miktexsetupx64.exe uninstall'))
		remove_tree(destdir)
	else:
		print('Uninstalling x86 version')
		run(makepath(programfiles32,r'miktex_setup\miktexsetup.exe uninstall'))
		remove_tree(destdir)
	print(u'Uninstallation of MiKTeX 2.9 completed!')
Cuando intento desinstalar mkitex, aparecen los siguientes errores:
Iniciando la desinstalación de miktex...
Desinstalando la versión x64
El códec 'ascii' no puede decodificar el byte 0xc3 en la posición 132: el ordinal no está en el rango (128): la cadena defectuosa es '"El comando 'C:\\\\Program Files (x86)\\\\miktex_setup\\\\miktexsetupx64.exe uninstall' devolvió un estado de salida distinto de cero 1.\nSalida: 'C:\\Program' n\xc3\xa3o \xc3\xa9 reconocido como un comando interno\r\nou externo, una operación de programa\xc3\xa1vel o un archivo en lotes.\r\n"'
Traceback (última llamada más reciente):
Archivo "c:\wapt\waptservice\waptservice.py", línea 1151, en run
self.running_task.run()
Archivo "c:\wapt\waptservice\waptservice_common.py", línea 405, en pwrapper
return func(*arg, **kwargs)
Archivo "c:\wapt\waptservice\waptservice_common.py", línea 464, en run
self._run()
Archivo "c:\wapt\waptservice\waptservice_common.py", línea 912, en _run
self.result = self.wapt.remove(self.packagename,force=self.force)
Archivo "c:\wapt\common.py", línea 4377, en remove
logger.critical(u'Error al ejecutar el script de desinstalación: %s'%e)
UnicodeDecodeError: el códec 'ascii' no puede decodificar el byte 0xc3 en la posición 132: el ordinal no está en el rango (128)
¿El error es de parte de miktex o wapt?
Empbilly
Mensajes: 79
Inscripción: 15 de enero de 2018 - 20:59

23 de abril de 2018 - 16:03

¿Algún comentario sobre mi última pregunta?
Avatar de usuario
htouvet
Experto en WAPT
Mensajes: 436
Inscripción: 16 de marzo de 2015 - 10:48
Contacto :

23 de abril de 2018 - 23:05

Hola Empbilly,

Hay dos problemas...
El primero es tu código
El segundo es mi código... ;)

Como hay espacios en la ruta del programa que intenta ejecutar, cmd espera que coloque la ruta entre comillas dobles.
Entonces, hay un mensaje que dice que el programa "c:\Program" no existe.

Algo como...

Código: Seleccionar todo

def uninstall():
	print(u'Starting miktex uninstall...')
	if iswin64():
		print('Uninstalling x64 version')
		run(ur'"%s" uninstall' % makepath(programfiles32,'miktex_setup','miktexsetupx64.exe'))
		remove_tree(destdir)
	else:
		print('Uninstalling x86 version')
		run(ur'"%s" uninstall' % makepath(programfiles32,'miktex_setup','miktexsetup.exe'))
		remove_tree(destdir)
	print(u'Uninstallation of MiKTeX 2.9 completed!')
Podría funcionar.

El segundo problema es que el mensaje de error no es ASCII simple, sino codificado, y mi código no se decodifica correctamente, por lo que aparece el segundo mensaje "el códec 'ascii' no puede decodificar el byte 0xc3..."
TI tranquila
Bloqueado