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
È possibile ignorare gli errori di versione?
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
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
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`
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`
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
È 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
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 similihtouvet ha scritto: Sospetto che una delle versioni sia su 3 componenti "1.2.3" e l'altra su 4 "1.2.3.0"?
Cosa dovrei inviare a questa funzione? (La variabile 'soft' è il nome del software, la sua chiave, la posizione dell'eseguibile dopo l'installazione...?)htouvet ha scritto:Codice: Seleziona tutto
def my_get_version(soft): print(u'Version installée: %s' % soft['version']) return soft['version']
GRAZIE
E.
Buongiorno,
Ho trovato una funzione in setuphelpers che sembrava rispondere alla mia domanda:
ottenere_proprietà_msi.
Quindi le cose sono diventate semplici:
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...
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'])
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...
Buongiorno,
Dopo numerosi test, errori, correzioni... eccomi qui.
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.
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)
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.
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:
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
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)
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
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
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
