Pagina 1 di 2

[RISOLTO] installazione avanzata *.exe

Pubblicato: 18 aprile 2018 - 14:15
di empbilly
Ciao wapters, :D

Sto creando un setup.py personalizzato per l'installazione del software miktex, ma dopo l'installazione non riesco a disinstallarlo tramite wapt.

Il codice seguente necessita di qualche configurazione aggiuntiva?

Codice: Seleziona tutto

# -*- 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: Installazione avanzata *.exe

Pubblicato: 18 aprile 2018 - 16:02
di htouvet
Dopo aver installato il pacchetto, qual è l'output del comando cmd:

Codice: Seleziona tutto

wapt-get list-registry miktex
Guardando https://tex.stackexchange.com/questions ... miktex-2-9, sembra che la disinstallazione possa essere eseguita con

Codice: Seleziona tutto

uninstall_admin.exe
comando.

Quindi potresti usare questo comando in una funzione uninstall() nel tuo pacchetto.

Qualcosa del tipo:

Codice: Seleziona tutto

def uninstall():
    run(makepath(programfilesx86,r'MiKTeX 2.9\miktex\bin\x64\internal\uninstall_admin.exe --unattended'))

Re: Installazione avanzata *.exe

Pubblicato: 18 aprile 2018 - 16:56
di empbilly
Dopo aver installato il pacchetto, qual è l'output del comando cmd:

Codice: Seleziona tutto

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"
Nella disinstallazione di miktex informa che va bene, ma nel "riepilogo" appare

Codice: Seleziona tutto

Removed: cti_srt-miktexErrors: cti_srt-miktex
e nel computer client miktex non si disinstalla.

Se eseguo manualmente il comando:

Codice: Seleziona tutto

C:\Program Files\MiKTeX 2.9\miktex\bin\x64\internal\uninstall_admin.exe --unattended 
continua a comparire la finestra di disinstallazione manuale e non fa nulla di automatico.

Potrebbe essere così

Codice: Seleziona tutto

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: Installazione avanzata *.exe

Pubblicato: 18 aprile 2018 - 17:35
di htouvet
Devi trovare l'interruttore non presidiato appropriato a cui aggiungere

Codice: Seleziona tutto

C:\Program Files\MiKTeX 2.9\miktex\bin\x64\internal\uninstall_admin.exe
in modo che venga eseguito silenziosamente. Potrebbe essere /s /SILENT --quiet -q o forse non è stato pianificato per essere eseguito silenziosamente...
Il comando registrato sembra non funzionare perché c'è una confusione tra barre rovesciate e barre oblique...

Re: Installazione avanzata *.exe

Pubblicato: 19 aprile 2018 - 00:34
di empbilly
Secondo lo sviluppatore di miktex, l'opzione di disinstallazione è disponibile solo tramite la riga di comando con il programma di installazione stesso.

Codice: Seleziona tutto

miktexsetup uninstall
Domani proverò a rimuoverlo eseguendo wmic tramite cmd.exe o rmdir in "C:\Programmi\MiKTeX 2.9".

Re: Installazione avanzata *.exe

Pubblicato: 19 aprile 2018 - 17:43
di empbilly
Ho provato con il codice qui sotto, ma ottengo l'errore:

Codice: Seleziona tutto

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

Codice: Seleziona tutto

# -*- 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!')
Non so se la parte "filetocopy" funziona come penso.

Ho copiato i due file miktexsetupx64.exe e miktexsetup.exe nella cartella del pacchetto, come mostrato nell'immagine qui sotto:

https://image.ibb.co/k22rU7/wapt_pkg.png (il tag img non funziona?!)

È così?
Come risolvere questo problema? Se il codice è difettoso, puoi contribuire! :D

Re: Installazione avanzata *.exe

Pubblicato: 19 aprile 2018 - 19:26
di htouvet
Sembra perfetto
basta sostituire programfilesx86 nel tuo codice con programfiles32

Codice: Seleziona tutto

# -*- 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: Installazione avanzata *.exe

Pubblicato: 20 aprile 2018 - 13:34
di empbilly
Modifico un po' la sceneggiatura.

Codice: Seleziona tutto

# -*- 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!')
Quando provo a disinstallare mkitex, si verificano i seguenti errori:
Avvio della disinstallazione di miktex...
Disinstallazione della versione x64
'ascii' codec impossibile decodificare il byte 0xc3 in posizione 132: ordinale non in range(128): stringa errata è '"Comando 'C:\\\\Program Files (x86)\\\\miktex_setup\\\\miktexsetupx64.exe uninstall' ha restituito uno stato di uscita diverso da zero 1.\nOutput:'C:\\Program' n\xc3\xa3o \xc3\xa9 riconosciuto come un comando interno\r\nou esterno, un'operazione di programma\xc3\xa1vel o un file in molti.\r\n"'
Traceback (chiamata più recente):
File "c:\wapt\waptservice\waptservice.py", riga 1151, in run
self.running_task.run()
File "c:\wapt\waptservice\waptservice_common.py", riga 405, in pwrapper
return func(*arg, **kwargs)
File "c:\wapt\waptservice\waptservice_common.py", riga 464, in run
self._run()
File "c:\wapt\waptservice\waptservice_common.py", riga 912, in _run
self.result = self.wapt.remove(self.packagename,force=self.force)
File "c:\wapt\common.py", riga 4377, in remove
logger.critical(u'Errore durante l'esecuzione dello script di disinstallazione: %s'%e)
UnicodeDecodeError: il codec 'ascii' non può decodificare il byte 0xc3 in posizione 132: ordinale non in range(128)
L'errore è da parte di miktex o wapt?

Re: Installazione avanzata *.exe

Pubblicato: 23 aprile 2018 - 16:03
di empbilly
Hai qualche commento sulla mia ultima domanda?

Re: Installazione avanzata *.exe

Pubblicato: 23 aprile 2018 - 23:05
di htouvet
Ciao Empbilly,

Ci sono 2 problemi...
Il primo è il tuo codice
Il secondo è il mio codice... ;)

Poiché nel percorso del programma che stai tentando di eseguire sono presenti degli spazi, cmd si aspetta che il percorso venga inserito tra virgolette doppie.
Quindi c'è un messaggio che dice che il programma "c:\Program" non esiste.

Qualcosa del tipo...

Codice: Seleziona tutto

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!')
potrebbe funzionare.

Il secondo problema è che il messaggio di errore non è in ASCII semplice ma codificato, e il mio codice non decodifica correttamente, quindi il secondo messaggio è "'ascii' codec can't decodificare byte 0xc3 ..."