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.
Kann man Versionsfehler ignorieren?
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.
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.
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`
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`
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
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
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 dergleichenhtouvet schrieb: Ich vermute, dass eine der Versionen auf 3 Komponenten basiert "1.2.3" und die andere auf 4 Komponenten "1.2.3.0"?
Was soll ich dieser Funktion übergeben? (Ist die Variable „soft“ der Softwarename, ihr Schlüssel, der Speicherort der ausführbaren Datei nach der Installation...?)htouvet schrieb:Code: Alle auswählen
def my_get_version(soft): print(u'Version installée: %s' % soft['version']) return soft['version']
DANKE
UND.
Guten Morgen,
Ich habe in den setuphelpers eine Funktion gefunden, die meine Frage zu beantworten schien:
get_msi_properties.
So wurde die Sache einfach:
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...
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'])
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...
Guten Morgen,
Nach unzähligen Versuchen, Fehlern und Korrekturen... bin ich nun hier.
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.
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)
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.
- Sfonteneau
- WAPT-Experte
- Nachrichten: 2322
- Registriert: 10. Juli 2014 - 23:52 Uhr
- Kontakt:
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:
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
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)
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
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 .
