Seite 1 von 1

[Gelöst] Die OpenBoard-Abhängigkeit installiert sich jedes Mal neu

Veröffentlicht: 15. November 2019 - 10:15 Uhr
von Jonattend
Guten Morgen,
Ich verwende ein „Master“-Paket mit etwa 20 Abhängigkeiten, darunter Openboard.

Wenn ich mein Master-Paket ändere, aktualisieren die Client-Rechner es, was normal ist. Mir ist jedoch aufgefallen, dass das Openboard-Paket jedes Mal neu installiert wird, selbst wenn es bereits auf den Rechnern vorhanden ist (im Gegensatz zu den anderen).

Ich hatte dasselbe Problem mit dem Anki-Paket, das ich durch Angabe des Deinstallationsschlüssels (key='Anki') im Anki-Paket gelöst habe.

Ich glaube, dass bei OpenBoard die Installation fehlerhaft ist, was dieses Phänomen verursacht.

Wenn ich ein wapt-get list-registry Bei einem Kunden habe ich Folgendes für OpenBoard:

{8CCA6AC7-BBF9-4DD2-8E70-A907E0FCA38F}}_is1OpenBoard "C:\Program Files (x86)\OpenBoard\unins000.exe"

Wir stellen fest, dass der Befehl keine Versionsnummer zurückgibt und dass uns der Schlüssel „UninstallKey“ seltsam vorkommt.

Verwendung des folgenden Codes:

Code: Alle auswählen

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

uninstallkey = ['{8CCA6AC7-BBF9-4DD2-8E70-A907E0FCA38F}}_is1']

def install():
    print('installing prefix-openboard')
    install_exe_if_needed("OpenBoard_Installer_1.5.3.exe",'/VERYSILENT /SUPPRESSMSGBOXES /NORESTART',key='{8CCA6AC7-BBF9-4DD2-8E70-A907E0FCA38F}}_is1')
WAPT gibt bei der Installation auf einem Client folgenden Fehler zurück:

Code: Alle auswählen

EWaptSetupException: Fatal error : OpenBoard_Installer_1.5.3.exe has been executed and UninstallKey {8CCA6AC7-BBF9-4DD2-8E70-A907E0FCA38F}}_is1 has been found in the registry, but version in registry does not match requirements of min_version=0.0.0.0
Was kann ich tun? Ich glaube, das Problem ist, dass OpenBoard keine Versionsnummer hat...?

Vielen Dank für Ihre Vorschläge.

Betreff: OpenBoard-Abhängigkeit installiert sich jedes Mal neu

Veröffentlicht: 15. November 2019 - 13:08 Uhr
von htouvet
Tatsächlich trägt das Installationsprogramm keine Versionsnummer in die Registrierung ein.
Daher muss sie von einer anderen Stelle abgerufen werden... zum Beispiel aus der ausführbaren Datei, daher die Funktion `get_installed_version`
Und geben Sie die Mindestversion in install_exe_if_need an

Code: Alle auswählen

def get_installed_version(e):
    ob_path = makepath(programfiles32,'OpenBoard','OpenBoard.exe')
    if isfile(ob_path):
        return get_file_properties(ob_path)['FileVersion']
    else:
        return None

def install():
    print('installing tis-openboard')
    install_exe_if_needed("OpenBoard_Installer_1.5.3.exe",'/VERYSILENT /SUPPRESSMSGBOXES /NORESTART',key='{8CCA6AC7-BBF9-4DD2-8E70-A907E0FCA38F}}_is1',min_version='1.5.3.240',get_version=get_installed_version)

Betreff: OpenBoard-Abhängigkeit installiert sich jedes Mal neu

Veröffentlicht: 15. November 2019 - 14:38 Uhr
von Jonattend
Hallo, vielen Dank für die Antwort, es funktioniert! Um sicherzugehen, dass ich es richtig verstanden habe und nicht einfach nur kopiert habe, könnten Sie bitte bestätigen, dass die Funktion `get_version` die Version der .exe-Datei ermittelt und das Ergebnis zurückgibt? Andernfalls liefert ` wapt-get list-registry` auch nach der Änderung des Pakets keine Versionsnummer. Ist das normal?






Betreff: OpenBoard-Abhängigkeit installiert sich jedes Mal neu

Veröffentlicht: 15. November 2019 – 14:48 Uhr
von htouvet
Ja, Sie können der Funktion `install_exe_if_needed` einen `get_version`-Parameter übergeben. Dieser Parameter sollte auf eine Funktion verweisen, die einen Parameter (ein Dictionary mit den aktuell in der Registry gespeicherten Informationen) entgegennimmt und die Version zurückgibt.

Standardmäßig verwendet die Funktion den `version`-Schlüssel aus der Registry, falls dieser Parameter nicht angegeben wird.

Im Fall von OpenBoard funktioniert dies nicht, da das Installationsprogramm unter diesem `version`-Schlüssel keine Informationen speichert. Daher stellen wir eine alternative Funktion bereit. In diesem Fall habe ich vorgeschlagen, die Version aus den Metadaten der OpenBoard-Executable abzurufen.

Es ist normal, dass `list-registry` keine zusätzlichen Informationen anzeigt, da wir die Registry nicht verändert haben.

Betreff: OpenBoard-Abhängigkeit installiert sich jedes Mal neu

Veröffentlicht: 15. November 2019 - 16:14 Uhr
von Jonattend
Ich verstehe alles, es ist perfekt, ;)

danke!!