Kann man Versionsfehler ignorieren?

Fragen zu WAPT-Paketen / Anfragen und Hilfe bezüglich WAPT-Paketen.
Forumregeln
Community-Forumregeln
* Englischer Support auf www.reddit.com/r/wapt
* Französischer Community-Support ist in diesem Forum verfügbar.
* Bitte kennzeichnen Sie gelöste Themen mit [GELÖST].
* Bitte bearbeiten Sie keine Themen, die mit [GELÖST] markiert sind. Erstellen Sie stattdessen ein neues Thema und verweisen Sie auf das alte.
* Geben Sie die installierte WAPT-Version, die vollständige Versionsnummer und die Build-Nummer (2.2.1.11957 / 2.2.2.12337 / usw.) sowie die Enterprise-/Discovery-Edition an.
* Versionen 1.8.2 und älter werden nicht mehr unterstützt. Fragen zu Version 1.8.2 werden nur beantwortet, wenn sie sich auf ein Upgrade auf eine unterstützte Version (2.1, 2.2 usw.) beziehen.
* Geben Sie das Server-Betriebssystem (Linux/Windows) und die Version (Debian Buster/Bullseye – CentOS 7 – Windows Server 2012/2016/2019) an.
* Geben Sie gegebenenfalls das Betriebssystem des Administrations-/Paketerstellungsrechners und des Rechners mit dem problematischen Agenten an (Windows 7/10/11/Debian 11/etc.).
* Vermeiden Sie es, mehrere Fragen in einem Thema zu stellen, da diese sonst möglicherweise ignoriert werden. Falls mehrere Themen relevant sind, erstellen Sie bitte separate Themen, vorzugsweise nacheinander und nicht gleichzeitig (d. h. vermeiden Sie Spam im Forum).
* Fügen Sie Code-Snippets, Screenshots und andere Bilder direkt in Ihren Beitrag ein. Links zu Pastebin, Bitly und anderen Drittanbieterseiten werden systematisch entfernt.
* Wie in jedem Community-Forum erfolgt die Unterstützung freiwillig durch die Mitglieder. Für kommerziellen Support kontaktieren Sie bitte den Vertrieb von Tranquil IT unter +44 2 40 97 57 55.
Gesperrt
Eric
Nachrichten: 56
Anmeldung: 22. Dezember 2017 – 19:09 Uhr

11. Juli 2018 - 09:53 Uhr

Hallo, ich verwende WAPT 1.5 Community. Ich habe ein Paket, das eine Anwendung per MSI mit `install_msi_if_needed` installiert. Dabei erhalte ich in WAPT immer die Fehlermeldung: „wurde installiert und der Deinstallationsschlüssel gefunden, aber die Version ist ungültig“. Trotz verschiedener Versuche konnte ich den Fehler nicht beheben. Im Grunde ist das für mich nicht so wichtig, da die Software korrekt installiert wird und einwandfrei funktioniert. Da jedoch ein anderes Paket davon abhängt, verhindert dieser Fehler die Installation dieses anderen Pakets. Kann man WAPT irgendwie anweisen, diesen Fehler zu ignorieren? Ich kenne bereits den Parameter `accept_returncodes`, aber er scheint in diesem Fall nicht anwendbar zu sein. Vielen Dank im Voraus für Ihre Hilfe.










Eric
Nachrichten: 56
Anmeldung: 22. Dezember 2017 – 19:09 Uhr

11. Juli 2018 - 10:23 Uhr

Zur Klarstellung:

Die Versionsnummer in meiner Konfigurationsdatei ist exakt dieselbe wie die, die vom Befehl
`get-itemproperty HKLM:\software\wow6432node\microsoft\currentversion\uninstall\uninstall\* | select-object displayname, displayversion`
Benutzeravatar
htouvet
WAPT-Experte
Nachrichten: 436
Anmeldung: 16. März 2015 - 10:48 Uhr
Kontakt:

11. Juli 2018 - 11:08 Uhr

Ich vermute, dass eine der Versionen auf 3 Komponenten basiert („1.2.3“) und die andere auf 4 Komponenten („1.2.3.0“)

Sie können die Version in der Funktion install_msi_if_needed mit dem Parameter erzwingen:
get_version: Stellen Sie eine Funktion bereit, die die aktuell installierte Version zurückgibt

Code: Alle auswählen

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)
Ruhige IT
Eric
Nachrichten: 56
Anmeldung: 22. Dezember 2017 – 19:09 Uhr

11. Juli 2018 – 14:47 Uhr

htouvet schrieb: Ich vermute, dass eine der Versionen auf 3 Komponenten basiert "1.2.3" und die andere auf 4 Komponenten "1.2.3.0"?
Da der PowerShell-Befehl genau die Versionsnummer zurückgibt, die ich in meiner Steuerdatei verwende, dachte ich nicht, aber ich gebe zu, dass ich nicht alle Feinheiten der Windows-Welt kenne; MSI und dergleichen :(

htouvet schrieb:

Code: Alle auswählen

def my_get_version(soft):
    print(u'Version installée: %s' % soft['version'])
    return soft['version']
Was soll ich dieser Funktion übergeben? (Ist die Variable „soft“ der Softwarename, ihr Schlüssel, der Speicherort der ausführbaren Datei nach der Installation...?)

DANKE
UND.
Eric
Nachrichten: 56
Anmeldung: 22. Dezember 2017 – 19:09 Uhr

17. Juli 2018 – 14:05 Uhr

Guten Morgen,

Ich habe in den setuphelpers eine Funktion gefunden, die meine Frage zu beantworten schien:
get_msi_properties.
So wurde die Sache einfach:

Code: Alle auswählen

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'])
Nur jetzt ist mir ein Fehler erlaubt:
Installation von Sentinel Runtime
TypeError: 'Unicode-Objekt ist nicht aufrufbar'

Und hier gestehe ich, dass ich langsam ein wenig die Fassung verliere...

Ein kurzer Tipp für alle, die noch nicht daran gedacht haben, wie man Setup-Helfer in der Konsole testet:
In der Python-Konsole genügt der einfache Befehl „import setuphelpers“. Das spart Zeit beim Testen des Codes ;-)
Ich weiß, es klingt albern, aber manchmal denken wir nicht an die einfachen Dinge und verschwenden dadurch viel Zeit...
Eric
Nachrichten: 56
Anmeldung: 22. Dezember 2017 – 19:09 Uhr

18. Juli 2018 - 12:22 Uhr

Guten Morgen,

Nach unzähligen Versuchen, Fehlern und Korrekturen... bin ich nun hier.

Code: Alle auswählen

# -*- 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)
In meinem vorherigen Code hatte ich einen Fehler, weil get_version ein "aufrufbares Objekt" und nicht einen "String" erwartete, daher die Funktion (ich hatte vorher nicht verstanden, warum sie da war).
Nun, ich darf einen Fehler machen:
TypeError: Das erste Argument von MSIOpenDatabase() muss ein String sein, kein Dictionary
Ich habe versucht, das Problem mit der str()-Funktion in meiner Funktion zu beheben, aber es hat nicht funktioniert.

Ich verschicke immer wieder Flaschenpost, in der Hoffnung, dass eines Tages eine davon jemanden inspiriert ;-)

UND.
Benutzeravatar
Sfonteneau
WAPT-Experte
Nachrichten: 2322
Registriert: 10. Juli 2014 - 23:52 Uhr
Kontakt:

18. Juli 2018 – 22:56 Uhr

In Ihrem Fall ist der Test nicht aussagekräftig

Ziel dieses Manövers ist es, wapt anzuweisen, die Softwareversion nicht im Deinstallationsschlüssel der Software, sondern an anderer Stelle zu suchen.

Mit get_version kann man wapt die Versionsnummer der Software mitteilen.

Beispiel unter Verwendung der Naps-Software:

Code: Alle auswählen

       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 wird angewiesen, die Version anhand des Softwarenamens zu ermitteln.

In Ihrem Code versuchen Sie, die Versionsnummer aus der MSI-Datei im Paket abzurufen. Das macht keinen Sinn.

Um Ihr Problem zu lösen, können Sie die min_version auch einfach ändern, indem Sie install_msi_if... aufrufen, anstatt get_version zu verwenden

https://github.com/tranquilit/WAPT/blob ... s.py#L3815
Eric
Nachrichten: 56
Anmeldung: 22. Dezember 2017 – 19:09 Uhr

21. Juli 2018 - 10:45 Uhr

Hallo, vielen Dank für Ihre Antwort. Ich habe mich entschieden, von vorne anzufangen, und das Problem mit dem Versionskonflikt besteht nun nicht mehr. Es ist ziemlich seltsam; der einzige Unterschied zu meinem ursprünglichen Skript ist, dass ich `silent_options` nicht in den Parametern angegeben habe (tatsächlich sind `/q` und `/norestart` in `install_msi_if_needed` bereits standardmäßig gesetzt, das ist mir im Code aufgefallen), und deshalb funktioniert es. Ich kann es mir nicht erklären… Durch dieses Problem habe ich zwar viel Zeit verloren, aber ich habe durch meine Tests und Ihre Antworten viel über die Funktionsweise von WAPT gelernt, was mir später sehr nützlich sein wird. Vielen Dank .








Gesperrt