[RISOLTO] La versione nel registro non corrisponde ai requisiti di min_version

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
cefinformatique
Messaggi: 31
Registrazione: 26 maggio 2023 - 14:25

3 gennaio 2024 - 13:54

Buongiorno,

Ho creato un pacchetto per distribuire il software (già installato sulle macchine client) versione 23.1.0.4

Ecco il file setup.py per il mio pacchetto:

Codice: Seleziona tutto

def install():
    softname ='AWCLIENTSQL'
    listAW=installed_softwares(softname)
    if listAW == softname:
        print("Mise a jour de DiaClientSQL")
        install_exe_if_needed('DiaClientSQLInstall.exe',
            silentflags='/Silent',
            key='AWCLIENTSQL',
            remove_old_version=True
        )
    else:
        print("Mise a jour de DiaClientSQL")
        install_exe_if_needed('DiaClientSQLInstall.exe',
            silentflags='/Silent',
            key='AWCLIENTSQL'
        )
        filecopyto(r'C:\ProgramData\Microsoft\Windows\Start Menu\Programs\ACDSuite\DiaClient SQL.lnk',r'C:\Users\Public\Desktop')
Una volta distribuito il pacchetto, nell'80% dei casi ricevo il seguente errore:
waptutils.EWaptSetupException: Errore irreversibile: è stato eseguito il programma di installazione DiaClientSQLInstall.exe ed è stata trovata la chiave AWCLIENTSQL nel registro di sistema, ma la versione nel registro non corrisponde ai requisiti di min_version=23.1.0.4

EWaptSetupException: Errore irreversibile: è stato eseguito il programma di installazione DiaClientSQLInstall.exe ed è stata trovata la chiave AWCLIENTSQL nel registro di sistema, ma la versione nel registro non corrisponde ai requisiti di min_version=23.1.0.4
Se riavvio manualmente l'aggiornamento, dopo diversi tentativi alla fine verrà applicato correttamente.

La versione installata prima dell'aggiornamento tramite WAPT era 23.1.0.2

Cosa posso fare per evitare questo problema?
Ultima modifica di cefinformatique il 14 febbraio 2024 alle 14:35, modificato 2 volte.
Avatar utente
sfontenau
Esperto WAPT
Messaggi: 2312
Registrato: 10 luglio 2014 - 23:52
Contatto:

3 gennaio 2024 - 15:24

Nessun argomento min_version viene passato a install_exe_if_needed

Quindi la funzione fa questo:

Codice: Seleziona tutto

if min_version is None:
    min_version = get_product_props(exe)['version']
E recupera il numero di versione specificato nelle proprietà del file.

Nel tuo caso, probabilmente non va bene

L'approccio migliore sarebbe quello di aggiungere un argomento min_version con il numero di versione associato alla chiave AWCLIENTSQL
cefinformatique
Messaggi: 31
Registrazione: 26 maggio 2023 - 14:25

13 febbraio 2024 - 13:36

Salve,

riapro questa discussione perché, durante un recente aggiornamento software, ho inserito correttamente il valore "min_version", ma il problema persiste.

Ho individuato la causa: durante l'installazione del programma, la vecchia versione non viene disinstallata. Poiché l'installazione restituisce un codice di errore pari a 0 prima di aggiornare il numero di versione nel registro di sistema di Windows, il pacchetto WAPT confronta il proprio numero di versione con quello vecchio ancora presente nel registro.

Pertanto, per risolvere questo problema, devo far attendere il pacchetto WAPT (circa 20 secondi) nella fase tra la fine dell'installazione e il controllo del numero di versione nel registro.

È possibile?
cefinformatique
Messaggi: 31
Registrazione: 26 maggio 2023 - 14:25

14 febbraio 2024 - 14:34

Ho risolto il problema usando il modulo WinReg per eliminare la chiave di registro del software prima dell'installazione. È un po' un trucco, ma funziona!

Codice: Seleziona tutto

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

r"""
Usable WAPT package functions: install(), uninstall(), session_setup(), audit(), update_package()

"""
# Declaring global variables - Warnings: 1) WAPT context is only available in package functions; 2) Global variables are not persistent between calls
uninstallkey = ['AWCLIENTSQL']

def install():
    killalltasks(control.get_impacted_process_list())
    softname ='AWCLIENTSQL'
    listFULL=installed_softwares(softname)
    listAW=listFULL[0]['key']
    if listAW == softname:
        # Define the registry key path
        key_path = r"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall"
        # Open the registry key for deletion
        try:
            with winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, key_path, 0, winreg.KEY_ALL_ACCESS) as registry_key:
                winreg.DeleteKey(registry_key, "AWCLIENTSQL")
                print("Registry key deleted successfully.")
        except FileNotFoundError:
            print("Registry key not found.")
        except PermissionError:
            print("Permission error. Run the script with administrative privileges.")
        except Exception as e:
            print(f"An error occurred: {e}")
        print("Mise a jour de DiaClientSQL")
        install_exe_if_needed('DiaClientSQLInstall.exe',
            silentflags='/Silent',
            key=softname,
            remove_old_version=True,
#            min_version=control.get_version()
        )
    else:
        print("Installation de DiaClientSQL")
        install_exe_if_needed('DiaClientSQLInstall.exe',
            silentflags='/Silent',
            key=softname,
            remove_old_version=True
        )
        filecopyto(r'C:\ProgramData\Microsoft\Windows\Start Menu\Programs\ACDSuite\DiaClient SQL.lnk',r'C:\Users\Public\Desktop')
Avatar utente
dcardon
Esperto WAPT
Messaggi: 1908
Registrazione: 18 giugno 2014 - 09:58
Ubicazione: Saint Sébastien sur Loire
Contatto:

15 febbraio 2024 - 16:25

Ciao Marc,

grazie per il feedback!

Denis
Denis Cardon - Tranquil IT
Condividi le tue esperienze su WAPT! Inviaci gli URL dei tuoi blog e articoli nella "La tua opinione del forum e li pubblicheremo sul di WAPT
Bloccato