Pagina 1 di 1

Indicare la validità di un'installazione

Pubblicato: 6 marzo 2017 - ore 16:00
di raikyn
Salve,

creo regolarmente pacchetti da poco più di un anno e sto riscontrando un problema:

ho creato un pacchetto per installare un software aziendale (ERDAS 2014 in questo caso). L'installazione avviene senza problemi , ma WAPT la considera errata e non ho idea del perché.

Di conseguenza, questo pacchetto (nonostante sia configurato correttamente) tenterà di reinstallarsi ogni volta che viene apportata una modifica sui PC su cui è installato.

La mia domanda è: è possibile indicare a WAPT (tramite la console) che un pacchetto è stato installato correttamente? (Forzare lo stato OK?).

Non voglio usare la funzione "Dimentica pacchetto", perché vorrei poterlo disinstallare correttamente tramite la console di WAPT quando necessario.

Se questa funzionalità non esiste, forse sarebbe possibile implementarla?

Re: Indicazione della validità di un'installazione

Pubblicato: 6 marzo 2017 - 16:30
di sfontenau
Ciao,

per poterti aiutare abbiamo bisogno del contenuto del pacchetto (setup.py).

Se, ad esempio, lo esegui, è possibile che non restituisca uno stato pari a 0 e quindi Wapt consideri l'installazione fallita.

Per sapere esattamente cosa sta facendo Wapt, devi comunicarci l'errore:
https://www.wapt.fr/fr/doc/Utilisation/ ... et-general

Simon

Re: Indicazione della validità di un'installazione

Pubblicato: 7 marzo 2017 - 08:53
di raikyn
Ciao, a quanto pare è un problema di "stato"; non è a 0.

Ecco il contenuto di setup.py:

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

uninstallkey = ['{4099F374-39B8-4226-9AC2-2069CEE8BF82}']


def install():
run(r'"foundation\Setup.exe" /s ERDASFoundation2014 /ni ACCEPT_EULA=1')


L'errore:
CalledProcessError: il comando '('"foundation\\Setup.exe" /s ERDASFoundation2014 /ni ACCEPT_EULA=1',)' ha restituito uno stato di uscita diverso da zero (1).

Devo precisare che se eseguo questo comando direttamente dal prompt dei comandi sul PC, non ricevo alcun errore.

Re: Indicazione della validità di un'installazione

Pubblicato: 7 marzo 2017 - 11:01
di Floflobel
Buongiorno,

Personalmente, utilizzo la funzione install_exe_if_needed: https://dev.tranquil.it/sphinxdocs/sour ... _se_necessario

Per prima cosa ti servirà uninstall_key; ecco dove puoi trovarlo:

Codice: Seleziona tutto

# For OS 64bits and Software 32bits version : HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\
# For OS 32 bits or 64bits (and Software 64bits version) : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\
Sinceramente,

Re: Indicazione della validità di un'installazione

Pubblicato: 7 marzo 2017 - 18:01
di sfontenau
Anche la funzione `install_exe_if_needed` genererà un errore.

https://dev.tranquil.it/sphinxdocs/sour ... _if_needed

Infatti, accetta i codici di uscita 0 e 3010, ma il codice di ritorno 1 non è tra questi.

Se si utilizza `install_exe_if_needed` al secondo passaggio, non dovrebbe generare un errore perché la `uninstallkey` verrà trovata!

È possibile, se lo si desidera, aggiungere il codice di uscita 1, come è consentito per Wapt:

`run('"install.exe" /s',accept_returncodes=[0, 1, 3010])`.

Ma il codice di uscita 1 è un codice di uscita normale?

Simon

Re: Indicazione della validità di un'installazione

Pubblicato: 8 marzo 2017 - 09:59
di raikyn
Grazie mille, funziona grazie a accept_returncodes=[0, 1, 3010].
Avevo già visto questa funzione, ma non avendola mai usata, me ne ero dimenticato... mi scuso per il disturbo.

Per quanto riguarda il codice di uscita 1, ammetto che, nella maggior parte dei casi, corrispondeva effettivamente a un problema durante l'installazione.
Ma per ERDAS Foundation 2014, l'installazione si completa nonostante questo codice.

Grazie ancora!

Re: Indicazione della validità di un'installazione

Pubblicato: 8 marzo 2017 - 10:15
di sfontenau
Come indicato da Floflobel, l'approccio migliore è utilizzare install_exe_if_needed con accept_returncodes=[0, 1, 3010].

In questo modo, se la chiave di disinstallazione non viene trovata dopo l'esecuzione, il pacchetto fallirà (per una buona ragione ;-) ).