[RISOLTO] installazione avanzata *.exe

Condividi qui i tuoi suggerimenti o problemi riguardanti la console WAPT o l'agente WAPT
Regole del forum
Regole del forum della community
* Supporto in inglese su www.reddit.com/r/wapt
* Supporto della community in francese disponibile su questo forum
* Si prega di anteporre [RISOLTO] al titolo dell'argomento se è stato risolto.
* Si prega di non modificare un argomento contrassegnato con [RISOLTO]. Aprire un nuovo argomento facendo riferimento a quello precedente.
* Specificare la versione di WAPT installata, la versione completa e il numero di build (2.2.1.11957 / 2.2.2.12337 / ecc.) nonché l'edizione Enterprise/Discovery.
* Le versioni 1.8.2 e precedenti non sono più supportate. Le uniche domande accettate relative alla versione 1.8.2 riguardano l'aggiornamento a una versione supportata (2.1, 2.2, ecc.).
* Specificare il sistema operativo del server (Linux/Windows) e la versione (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019).
* Specificare il sistema operativo della macchina di amministrazione/creazione dei pacchetti e della macchina con l'agente problematico, se applicabile (Windows 7/10/11/Debian 11/ecc.).
* Evitare di porre più domande quando si apre una discussione, altrimenti potrebbe essere ignorata. Se ci sono più discussioni, aprirle separatamente, preferibilmente una dopo l'altra e non tutte contemporaneamente (ovvero, non intasare il forum).
* Includere frammenti di codice, screenshot e altre immagini direttamente nel post. I link a Pastebin, Bitly e altri siti di terze parti verranno sistematicamente rimossi.
* Come in qualsiasi forum della community, il supporto è fornito volontariamente dai membri. Se si necessita di supporto commerciale, è possibile contattare il reparto vendite di Tranquil IT al numero 02.40.97.57.55
Empbilly
Messaggi: 79
Registrazione: 15 gennaio 2018 - 20:59

18 aprile 2018 - 14:15

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')
Ultima modifica di empbilly il 25 aprile 2018 alle 13:38, modificato 1 volta.
Avatar utente
htouvet
Esperto WAPT
Messaggi: 436
Registrazione: 16 marzo 2015 - 10:48
Contatto:

18 aprile 2018 - 16:02

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'))
Tranquillo IT
Empbilly
Messaggi: 79
Registrazione: 15 gennaio 2018 - 20:59

18 aprile 2018 - 16:56

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"'))
Avatar utente
htouvet
Esperto WAPT
Messaggi: 436
Registrazione: 16 marzo 2015 - 10:48
Contatto:

18 aprile 2018 - 17:35

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...
Tranquillo IT
Empbilly
Messaggi: 79
Registrazione: 15 gennaio 2018 - 20:59

19 aprile 2018 - 00:34

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".
Empbilly
Messaggi: 79
Registrazione: 15 gennaio 2018 - 20:59

19 aprile 2018 - 17:43

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
Avatar utente
htouvet
Esperto WAPT
Messaggi: 436
Registrazione: 16 marzo 2015 - 10:48
Contatto:

19 aprile 2018 - 19:26

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!')
Tranquillo IT
Empbilly
Messaggi: 79
Registrazione: 15 gennaio 2018 - 20:59

20 aprile 2018 - 13:34

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?
Empbilly
Messaggi: 79
Registrazione: 15 gennaio 2018 - 20:59

23 aprile 2018 - 16:03

Hai qualche commento sulla mia ultima domanda?
Avatar utente
htouvet
Esperto WAPT
Messaggi: 436
Registrazione: 16 marzo 2015 - 10:48
Contatto:

23 aprile 2018 - 23:05

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 ..."
Tranquillo IT
Bloccato