Página 1 de 2
[RESUELTO] instalación avanzada de *.exe
Publicado: 18 de abril de 2018 - 14:15
por empbilly
Hola wapters,
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')
Re: Instalación avanzada de *.exe
Publicado: 18 de abril de 2018 - 16:02
por htouvet
Después de instalar el paquete, ¿cuál es el resultado del comando cmd?
Mirando a
https://tex.stackexchange.com/questions... miktex-2-9Parece que la desinstalación se puede lograr con
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'))
Re: Instalación avanzada de *.exe
Publicado: 18 de abril de 2018 - 16:56
por empbilly
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
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"'))
Re: Instalación avanzada de *.exe
Publicado: 18 de abril de 2018 - 17:35
por htouvet
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.
Re: Instalación avanzada de *.exe
Publicado: 19 de abril de 2018 - 00:34
por empbilly
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.
Mañana intentaré eliminarlo ejecutando wmic a través de cmd.exe o rmdir en "C:\Program Files\MiKTeX 2.9".
Re: Instalación avanzada de *.exe
Publicado: 19 de abril de 2018 - 17:43
por empbilly
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!

Re: Instalación avanzada de *.exe
Publicado: 19 de abril de 2018 - 19:26
por htouvet
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!')
Re: Instalación avanzada de *.exe
Publicado: 20 de abril de 2018 - 13:34
por empbilly
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?
Re: Instalación avanzada de *.exe
Publicado: 23 de abril de 2018 - 16:03
por empbilly
¿Algún comentario sobre mi última pregunta?
Re: Instalación avanzada de *.exe
Publicado: 23 de abril de 2018 - 23:05
por htouvet
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..."