Pagina 1 di 1

Processo di disinstallazione

Pubblicato: 22 febbraio 2018 - 19:21
di gvdbe.fr
wapt-get 1.3.13.0

Buonasera,
ho creato un pacchetto che copia un file .exe in una directory senza richiedere permessi speciali e poi crea una chiave di registro.

Avevo incluso tutti i passaggi di disinstallazione nella procedura "def uninstall()", ma ricevo un errore "file non trovato".

Quando ho commentato le mie azioni in "def uninstall", sono rimasto sorpreso e solo in seguito ho capito che definendo semplicemente la procedura 'uninstall' senza alcuna azione, il file .exe e la chiave di registro vengono eliminati e si tenta di eliminare la directory.
Sono sorpreso che il pacchetto conosca tutte queste azioni! Mi chiedevo se potesse esserci una cache del pacchetto. La pulizia con wapt-get clean e update non cambia nulla. Nemmeno la rimozione del pacchetto dal repository aiuta.

Il problema si presenta in entrambe le varianti del mio pacchetto, con o senza azioni in "def uninstall", ricevo comunque un avviso che causa il fallimento del processo di disinstallazione, che rimane incompleto, l'eliminazione della directory e apparentemente la disinstallazione non riesce a completarla.

Rimozione dello spazio su disco...
2018-02-22 19:07:34,961 AVVISO errore: (2, 'GetFileVersionInfo:GetFileVersionInfoSize', 'Impossibile trovare il file specificato.')
2018-02-22 19:07:34,964 AVVISO errore: (2, 'GetFileVersionInfo:GetFileVersionInfoSize', 'Impossibile trovare il file specificato.')
2018-02-22 19:07:34,967 AVVISO errore: (2, 'GetFileVersionInfo:GetFileVersionInfoSize', 'Impossibile trovare il file specificato.')
2018-02-22 19:07:34,969 CRITICO Errore durante l'esecuzione dello script di disinstallazione: [Errno 2] Nessun file o directory di questo tipo: 'DiskSpace.exe'
=== Pacchetti rimossi ===
spazio su disco
=== Errore durante la rimozione dei pacchetti ===
spazio su disco

Ecco cosa ho nel mio file di disinstallazione:
def uninstall():
print('disinstallazione di GRDF-DiskSpace')
# killalltasks('DiskSpace.exe')
# registry_delete(HKEY_LOCAL_MACHINE, r'software\Microsoft\Windows\CurrentVersion\Run','DiskSpace')
# time.sleep(5)
# if isdir(DiskSpacePath):
# remove_tree(DiskSpacePath,ignore_errors=True)

Qualcuno ha qualche idea?

Re: Processo di disinstallazione

Pubblicato: 23 febbraio 2018 - 17:15
di gvdbe.fr
In realtà, ho trovato il problema. Sono le funzioni makepath che causano il problema...
come ad esempio: makepath('C:\MyDirectory','DiskSpace')

Re: Processo di disinstallazione

Pubblicato: 23 febbraio 2018 - 17:29
di htouvet
In Python (e in altri linguaggi) il carattere '\' in una stringa consente di codificare le interruzioni di riga, ad esempio '\n'.

Per impedire a Python di interpretare le barre rovesciate, è necessario aggiungere un prefisso 'r' (stringhe non elaborate)
Se sono presenti caratteri accentati, in genere è necessario specificare una stringa Unicode (prefisso 'u')

Codice: Seleziona tutto

makepath(ur'C:\MonRépertoire','DiskSpace')