È possibile ignorare gli errori di versione?

Domande sul packaging WAPT / Richieste e assistenza sui pacchetti 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
Bloccato
eritto
Messaggi: 56
Iscrizioni: 22 dicembre 2017 - ore 19:09

11 luglio 2018 - 09:53

Salve,

utilizzo WAPT 1.5 Community.

Ho un pacchetto che installa un'applicazione da un file MSI tramite `install_msi_if_needed`.
Questo pacchetto genera sempre un errore in WAPT con il messaggio: "è stato installato e la chiave di disinstallazione è stata trovata, ma la versione non è valida".
Nonostante vari tentativi, non sono riuscito a risolvere questo errore. In definitiva, non è un grosso problema per me, dato che il software viene installato correttamente e funziona senza problemi. Tuttavia, poiché un altro pacchetto dipende da questo, l'errore impedisce l'installazione di quest'ultimo.
È possibile, in qualche modo, indicare a WAPT di ignorare questo errore?
Conosco già il parametro `accept_returncodes`, ma in questo caso non sembra applicabile.

per l'aiuto.
anticipo
eritto
Messaggi: 56
Iscrizioni: 22 dicembre 2017 - ore 19:09

11 luglio 2018 - 10:23

Solo per chiarire:

il numero di versione nel mio file di configurazione è esattamente lo stesso di quello restituito dal comando
`get-itemproperty HKLM:\software\wow6432node\microsoft\currentversion\uninstall\uninstall\* | select-object displayname, displayversion`
Avatar utente
htouvet
Esperto WAPT
Messaggi: 436
Registrazione: 16 marzo 2015 - 10:48
Contatto:

11 luglio 2018 - 11:08

Ho il sospetto che una delle versioni sia su 3 componenti "1.2.3" e l'altra su 4 "1.2.3.0"?

È possibile forzare la versione nella funzione install_msi_if_needed con il parametro:
get_version: fornisce una funzione che restituisce la versione attualmente installata

Codice: Seleziona tutto

def my_get_version(soft):
    print(u'Version installée: %s' % soft['version'])
    return soft['version']

def install():
    install_msi_if_needed('setup.msi',get_version=my_get_version)
Tranquillo IT
eritto
Messaggi: 56
Iscrizioni: 22 dicembre 2017 - ore 19:09

11 luglio 2018 - 14:47

htouvet ha scritto: Sospetto che una delle versioni sia su 3 componenti "1.2.3" e l'altra su 4 "1.2.3.0"?
Poiché il comando PowerShell restituisce esattamente il numero di versione che sto utilizzando nel mio file di controllo, pensavo di no, ma ammetto di non conoscere tutti i dettagli del mondo Windows, MSI e simili :(

htouvet ha scritto:

Codice: Seleziona tutto

def my_get_version(soft):
    print(u'Version installée: %s' % soft['version'])
    return soft['version']
Cosa dovrei inviare a questa funzione? (La variabile 'soft' è il nome del software, la sua chiave, la posizione dell'eseguibile dopo l'installazione...?)

GRAZIE
E.
eritto
Messaggi: 56
Iscrizioni: 22 dicembre 2017 - ore 19:09

17 luglio 2018 - 14:05

Buongiorno,

Ho trovato una funzione in setuphelpers che sembrava rispondere alla mia domanda:
ottenere_proprietà_msi.
Quindi le cose sono diventate semplici:

Codice: Seleziona tutto

def install():
	print ('Installing sentinelRuntime')
	soft = get_msi_properties("Sentinel Runtime.msi")
	install_msi_if_needed('Sentinel Runtime.msi', '/q /norestart', get_version=soft['Version'])
Solo che ora mi è concesso un errore:
Installazione di Sentinel Runtime
TypeError: 'l'oggetto Unicode non è richiamabile'

E qui, lo confesso, comincio a cedere un po'...

Un rapido suggerimento per chi non ci ha ancora pensato per testare setuphelpers nella console:
In una console Python, funziona un semplice comando "import setuphelpers". Questo fa risparmiare tempo in seguito, quando si testa il codice ;-)
Lo so, è sciocco, ma a volte non pensiamo alle cose semplici e sprechiamo un sacco di tempo...
eritto
Messaggi: 56
Iscrizioni: 22 dicembre 2017 - ore 19:09

18 luglio 2018 - 12:22

Buongiorno,

Dopo numerosi test, errori, correzioni... eccomi qui.

Codice: Seleziona tutto

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

uninstallkey = []

def get_sentinel_version(soft="Sentinel Runtime.msi"):
    sentiProps = get_msi_properties(soft)
    sentiVers = str(sentiProps['Version'])
    #print('Type de sentiVers : ' type(sentivers))
    return sentiVers

def install():
    print('installing unilim-sentinelRuntime')
    install_msi_if_needed('Sentinel Runtime.msi', '/q /norestart', get_version=get_sentinel_version)
Nel mio codice precedente, ho riscontrato un errore perché get_version si aspettava un "oggetto richiamabile" e non una "stringa", da qui la funzione (non avevo capito perché fosse lì prima).
Ora, mi è concesso commettere un errore:
TypeError: l'argomento 1 di MSIOpenDatabase() deve essere una stringa, non un dizionario
Ho provato a usare la funzione str() nella mia funzione per risolvere il problema, ma non ha funzionato.

Continuo a inviare messaggi in bottiglia, sperando che un giorno uno di essi possa ispirare qualcuno ;-)

E.
Avatar utente
sfontenau
Esperto WAPT
Messaggi: 2312
Registrato: 10 luglio 2014 - 23:52
Contatto:

18 luglio 2018 - 22:56

Nel tuo caso il test non è buono

Lo scopo di questa manovra è dire a wapt di non cercare la versione del software nella chiave di disinstallazione del software, ma altrove.

get_version viene utilizzato per comunicare a wapt il numero di versione del software.

Esempio utilizzando il software Naps:

Codice: Seleziona tutto

       def versnaps2(key):
                return key['name'].replace('NAPS2 ','')

        install_exe_if_needed('naps2-5.3.3-setup.exe',silentflags='/VERYSILENT',key='NAPS2 (Not Another PDF Scanner 2)_is1',get_version=versnaps2)
        
Wapt riceve l'istruzione di recuperare la versione dal nome del software.

Nel tuo codice recupererai il numero di versione dal file msi presente nel pacchetto, ma ciò non ha senso.

Per risolvere il problema, puoi anche semplicemente modificare min_version chiamando install_msi_if... anziché usare get_version

https://github.com/tranquilit/WAPT/blob ... s.py#L3815
eritto
Messaggi: 56
Iscrizioni: 22 dicembre 2017 - ore 19:09

21 luglio 2018 - 10:45

Ciao,

grazie per la risposta.
In realtà, ho deciso di ricominciare da capo e ora non ho più il problema del conflitto di versione. È piuttosto strano; l'unica differenza rispetto al mio script originale è che non ho specificato `silent_options` nei parametri (infatti, `/q` e `/norestart` sono già impostati di default in `install_msi_if_needed`, l'ho notato nel codice), e quindi funziona.
Non so spiegarmi il perché...

A causa di questo problema ho perso parecchio tempo, ma ho imparato molto su come funziona WAPT, grazie ai miei test e alle tue risposte, il che mi sarà molto utile in seguito.

.
Grazie
Bloccato