Seite 1 von 1

[GELÖST] Die Version in der Registry entspricht nicht den Anforderungen von min_version

Veröffentlicht: 3. Januar 2024 – 13:54 Uhr
von cefinformatique
Guten Morgen,

Ich habe ein Paket erstellt, um die Software (bereits auf den Client-Rechnern installiert) in Version 23.1.0.4 bereitzustellen

Hier ist die setup.py-Datei für mein Paket:

Code: Alle auswählen

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')
Nach der Bereitstellung des Pakets erhalte ich in 80 % der Fälle die folgende Fehlermeldung:
waptutils.EWaptSetupException: Schwerwiegender Fehler: Die Datei DiaClientSQLInstall.exe wurde ausgeführt und der Registrierungsschlüssel AWCLIENTSQL wurde gefunden, die Version in der Registrierung entspricht jedoch nicht den Anforderungen von min_version=23.1.0.4

.
Wenn ich das Update manuell neu starte, wird es nach mehreren Versuchen schließlich korrekt angewendet.

Die vor dem Update über WAPT installierte Version war 23.1.0.2

Was kann ich tun, um dieses Problem zu vermeiden?

Betreff: Die Version in der Registry entspricht nicht den Anforderungen von min_version

Veröffentlicht: 3. Januar 2024 – 15:24 Uhr
von Sfonteneau
Der Funktion install_exe_if_need wird kein min_version-Argument übergeben

Die Funktion bewirkt also Folgendes:

Code: Alle auswählen

if min_version is None:
    min_version = get_product_props(exe)['version']
Und ruft die in den Dateieigenschaften angegebene Versionsnummer ab.

In Ihrem Fall ist es wahrscheinlich nicht gut

Am besten wäre es, ein min_version-Argument mit der Versionsnummer hinzuzufügen, die dem AWCLIENTSQL-Schlüssel zugeordnet ist

Betreff: Die Version in der Registry entspricht nicht den Anforderungen von min_version

Veröffentlicht: 13. Februar 2024 – 13:36 Uhr
von cefinformatique
Hallo,

ich greife dieses Thema erneut auf, da ich bei einem kürzlichen Software-Update den Wert für „min_version“ korrekt eingegeben habe, das Problem aber weiterhin besteht.

Ich habe die Ursache gefunden: Während der Programminstallation wird die alte Version nicht deinstalliert. Da die Installation vor der Aktualisierung der Versionsnummer in der Windows-Registrierung den Fehlercode 0 zurückgibt, vergleicht das WAPT-Paket seine Versionsnummer mit der noch in der Registrierung gespeicherten alten Nummer.

Um dieses Problem zu beheben, muss das WAPT-Paket daher zwischen dem Abschluss der Installation und der Überprüfung der Versionsnummer in der Registrierung etwa 20 Sekunden warten.

Ist das möglich?

Betreff: Die Version in der Registry entspricht nicht den Anforderungen von min_version

Veröffentlicht: 14. Februar 2024 - 14:34 Uhr
von cefinformatique
Ich habe mein Problem gelöst, indem ich mit dem WinReg-Modul den Registrierungsschlüssel der Software vor der Installation gelöscht habe. Das ist zwar etwas umständlich, aber es funktioniert!

Code: Alle auswählen

# -*- 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')

Betreff: [GELÖST] Version in der Registry entspricht nicht den Anforderungen von min_version

Veröffentlicht: 15. Februar 2024 – 16:25 Uhr
von dcardon
Hallo Marc,

vielen Dank für das Feedback!

Denis