Seite 1 von 2

Leeres Paket zum Deinstallieren einer Anwendung

Veröffentlicht: 22. März 2018 - 09:44 Uhr
von benoitpatin
Guten Morgen,

- Installierte WAPT-Version: 1.5.1.18 Community
- Linux Debian 9 Server-Betriebssystem
- Betriebssystem des Administrations-/Paketerstellungsrechners: Windows 10

Ich möchte ein quellcodefreies Paket erstellen, das mit nur einem Befehl ein Programm von meinen Computern deinstallieren kann.

Ich besitze den Originalquellcode der Anwendung nicht.
Mit dem Befehl wapt-get list-registry software_name kann ich die Uninstallstring und den Uninstallkey auf einem Zielrechner abrufen.

Also habe ich dummerweise ein leeres Paket mit den gegebenen Informationen erstellt:

Code: Alle auswählen

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

uninstallkey = ['Foxit Reader_is1']


def uninstall():
    print('uninstalling Foxit Reader')
    run(r'"C:\Program Files (x86)\Foxit Software\Foxit Reader\unins000.exe"')
Aber es scheint nicht richtig zu funktionieren. Da dies mein zweites Paket ist, denke ich, dass mir ein paar Dinge fehlen, um es zum Laufen zu bringen.
Gibt es jemanden, der mir helfen kann?

DANKE

Betreff: Leeres Paket zum Deinstallieren einer Anwendung

Veröffentlicht: 22. März 2018 - 10:03 Uhr
von agauvrit
Hallo Benoît,

Die Funktion deinstallieren Dies ermöglicht die Deinstallation von Software, die mit WAPT bereitgestellt wurde. Wenn Sie Software direkt deinstallieren möchten, müssen Sie diesen Code in die Funktion einfügen installieren aus der Verpackung.

Wenn Sie eine Software in allen möglichen Versionen deinstallieren möchten, verwenden Sie am besten eine Funktion wie diese:

Code: Alle auswählen

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

uninstallkey = []

def install():
    for soft in installed_softwares('Foxit Reader'):
        if Version(soft['version']) < Version('18'):
                run(WAPT.uninstall_cmd(soft['key']))

Betreff: Leeres Paket zum Deinstallieren einer Anwendung

Veröffentlicht: 22. März 2018 – 14:17 Uhr
von benoitpatin
Großartig, die schnelle Antwort! :D

Ich benötige jedoch einige Erläuterungen...

Code: Alle auswählen

def install():
    for soft in installed_softwares('Foxit Reader'):
        if Version(soft['version']) < Version('18'):
                run(WAPT.uninstall_cmd(soft['key']))
Das Wort „Version“ zwischen einfachen Anführungszeichen und eckigen Klammern sollte der Version in meiner Systemsteuerung unter „Programme hinzufügen/entfernen“ entsprechen?
Worauf bezieht sich das Wort „key“ zwischen einfachen Anführungszeichen und eckigen Klammern? Auf den Deinstallationsschlüssel oder auf die Deinstallationszeichenfolge?

Betreff: Leeres Paket zum Deinstallieren einer Anwendung

Veröffentlicht: 22. März 2018 – 14:46 Uhr
von Sfonteneau
benoitpatin schrieb: 22. März 2018 - 14:17 Uhr Bezieht sich das Wort „Version“ zwischen einem einfachen Anführungszeichen und einer Klammer auf die Version in meiner Systemsteuerung unter „Programme hinzufügen/entfernen“?
Ja
benoitpatin schrieb: 22. März 2018 - 14:17 Uhr Worauf bezieht sich das Wort „key“ zwischen einem einfachen Anführungszeichen und einer eckigen Klammer? Auf den Deinstallationsschlüssel oder die Deinstallationszeichenfolge?
Das Wort „key“ sollte nicht ersetzt werden; wir werden den Wert „key“ aus dem aktuell getesteten `uninstallkey` abrufen

Betreff: Leeres Paket zum Deinstallieren einer Anwendung

Veröffentlicht: 22. März 2018 - 14:57 Uhr
von benoitpatin
Okay, super, hier ist die minimale setup.py-Datei:

Code: Alle auswählen

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

uninstallkey = ['Foxit Reader_is1']


def install():
    print('uninstalling Foxit Reader')
    for soft in installed_softwares('Foxit Reader'):
        if Version(soft['version']) < Version('8.2.1.6871'):
            run(WAPT.uninstall_cmd(soft['key']))
Ich kompiliere, lade hoch und starte das Paket auf meinem Rechner, aber nichts passiert.
Ich habe nirgends Fehler gemacht. Habe ich etwas übersehen?

Betreff: Leeres Paket zum Deinstallieren einer Anwendung

Veröffentlicht: 22. März 2018 – 15:17 Uhr
von Sfonteneau
Ich sehe keine Fehler in Ihrem Code.

Auf dem Rechner, an dem Sie testen.

Können Sie Folgendes ausführen:

Code: Alle auswählen

wapt-get list-registry Foxit


um zu sehen, was passiert

Betreff: Leeres Paket zum Deinstallieren einer Anwendung

Veröffentlicht: 22. März 2018 - 15:18 Uhr
von agauvrit
Um die Liste der möglicherweise betroffenen Software anzuzeigen:

Code: Alle auswählen

wapt-get list-registry Foxit Reader
Falls die Software nicht angezeigt wird, wird sie nicht deinstalliert; gegebenenfalls müssen Sie nur „Foxit“ als Suchbegriff verwenden

Alexander

Betreff: Leeres Paket zum Deinstallieren einer Anwendung

Veröffentlicht: 22. März 2018 – 15:22 Uhr
von benoitpatin

Code: Alle auswählen

UninstallKey                           Software                                                              Version             Uninstallstring                        
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Foxit Reader_is1                       Foxit Reader                                                          8.2.1.6871          "C:\Program Files (x86)\Foxit Software\Foxit Reader\unins000.exe"

Betreff: Leeres Paket zum Deinstallieren einer Anwendung

Veröffentlicht: 22. März 2018 – 15:27 Uhr
von agauvrit
Die zurückgegebene Version entspricht der im Versionstest vorgegebenen Version (8.2.1.6871), daher wird sie nicht deinstalliert.

Um es „mit roher Gewalt“ anzugehen, können Sie die vollständige Deinstallation aller möglichen Versionen wie folgt befehlen:

Code: Alle auswählen

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

uninstallkey = ['Foxit Reader_is1']


def install():
    print('uninstalling Foxit Reader')
    for soft in installed_softwares('Foxit Reader'):
            run(WAPT.uninstall_cmd(soft['key']))

Betreff: Leeres Paket zum Deinstallieren einer Anwendung

Veröffentlicht: 22. März 2018 - 17:32 Uhr
von benoitpatin
Es funktioniert nicht und ich sehe nirgends eine Fehlermeldung (vielleicht gibt es aber auch gar keine... ein Fehler!).
Wie kann ich das Problem beheben?