PB doppelter Schnittschutz

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
adaurg
Nachrichten: 3
Anmeldung: 8. Dezember 2016 - 10:39 Uhr

8. Dezember 2016 - 11:31 Uhr

Guten Morgen,

Zuallererst ein herzliches Dankeschön an das Entwicklerteam für diese fantastische Lösung, die mir das Leben so viel einfacher macht ;)

Nach der Einrichtung der Bereitstellung der klassischen Pakete.
Ich bin gerade dabei, meine ersten Pakete zu erstellen… Entschuldigung, ich bin auch ein Python-Neuling :D

Ich möchte QGIS 2.14.9 installieren.
Die Installation von Qgis 2.14.9 ist kein Problem, außer dass ich zuerst die vorherige Version deinstallieren muss: eine 2.14.3 (die nicht mit wapt installiert wurde, sonst hätte ich die "Konflikt"-Funktion verwenden können, wenn ich das richtig verstehe?)

Also habe ich Folgendes eingerichtet:

Code: Alle auswählen

from setuphelpers import *

uninstallkey = ['QGIS 2.14']

def install():
    print('installation de Qgis 2.14.9')
    if isrunning('qgis-bin.exe'):
        print("Qgis est ouvert !!! GRRRR...")
        quit()

    print('desinstallation de Qgis 2.14.3')
    sofname = 'Qgis Essen'
    versionsoft = '2.14.3'
    uninstallkey = ['QGIS Essen']
    check_installed_soft = installed_softwares(sofname)
    if check_installed_soft:
        for uninstall in check_installed_soft:
            if Version(uninstall['version']) < Version(versionsoft):
                cmd = WAPT.uninstall_cmd(uninstall['key'])
                run(cmd)

    run(r'"QGIS-OSGeo4W-2.14.9-2-Setup-x86_64.exe" /S')
    remove_desktop_shortcut(r'GRASS GIS 7.0.4')
    remove_desktop_shortcut(r'GRASS GIS 7.0.5')
    remove_desktop_shortcut(r'OSGeo4W Shell')
    remove_tree(r'C:\Users\Public\Desktop\QGIS Essen')
    remove_tree(r'C:\Users\Public\Desktop\QGIS 2.14')
Mit der Ausnahme, dass beim Ausführen des Programms doppelte Backslashes im Pfad der Deinstallationsdatei hinzugefügt werden, obwohl der Wert in der Registrierung korrekt ist.

Code: Alle auswählen

FATAL ERROR : CalledProcessError: Command '([u'C:\\Program Files\\QGIS Essen\\Un
install-QGIS.exe', '/S'],)' returned non-zero exit status 1
Ich habe die Forenbeiträge durchsucht, aber nichts gefunden :weinen:

Wie lässt sich dieses Problem umgehen?

Ich danke Ihnen für Ihre Hilfe
Denis
Benutzeravatar
htouvet
WAPT-Experte
Nachrichten: 436
Anmeldung: 16. März 2015 - 10:48 Uhr
Kontakt:

8. Dezember 2016 - 11:44 Uhr

Doppelte Backslashes sind "normal"
Dies ist die Anzeige des Inhalts einer Zeichenkette, wobei die Backslashes "maskiert" sind (damit sie nicht als Steuerzeichen interpretiert werden)

Das Problem liegt woanders, höchstwahrscheinlich ein 32/64-Bit-Problem.
Wapt ist ein 32-Bit-Prozess. Daher wird C:\Program Files\ von Windows automatisch in C:\Program Files (x86)\ umbenannt

Ich schlage daher vor, dass Sie die automatische 32/64-Windows-Umleitung mithilfe der Kontextfunktion "with disable_file_system_redirection():" deaktivieren

Code: Alle auswählen

..
    if check_installed_soft:
        for uninstall in check_installed_soft:
            if Version(uninstall['version']) < Version(versionsoft):
                with disable_file_system_redirection():
                    cmd = WAPT.uninstall_cmd(uninstall['key'])
                    run(cmd)

...
Ruhige IT
adaurg
Nachrichten: 3
Anmeldung: 8. Dezember 2016 - 10:39 Uhr

8. Dezember 2016 – 13:58 Uhr

Vielen Dank für die schnelle Antwort.
Ich habe die doppelten Backslashes bemerkt. :Hoppla:

QGIS 2.14.3 ist tatsächlich 64-Bit.

Ich habe es getestet, indem ich die automatische Umleitung wie angegeben deaktiviert habe (vielen Dank für den Code).

Der Fehler besteht aber weiterhin.

Könnte ich das Problem vielleicht mit einer .bat-Datei umgehen (das ist aber nicht optimal)?
Sollte ich die .bat-Datei in diesem Fall im selben Verzeichnis wie die setup.py-Datei ablegen? Oder auf einer Netzwerkfreigabe?

Vielen Dank,
Denis
Benutzeravatar
htouvet
WAPT-Experte
Nachrichten: 436
Anmeldung: 16. März 2015 - 10:48 Uhr
Kontakt:

8. Dezember 2016 – 14:47 Uhr

Sie können sich von Folgendem inspirieren lassen:

Code: Alle auswählen

from setuphelpers import *
import glob,time
import regutil

uninstallkey = []

version = '2.16.2-3'
url = "http://qgis.org/downloads/QGIS-OSGeo4W-%s-Setup-x86.exe" % version
url64 = "http://qgis.org/downloads/QGIS-OSGeo4W-%s-Setup-x86_64.exe" % version
exe = "QGIS-OSGeo4W-%s-Setup-x86.exe" % version
exe64 = "QGIS-OSGeo4W-%s-Setup-x86_64.exe" % version

def install():
    with disable_file_system_redirection():
        #Remove Old Versions in Default Directory
        for uninstall in glob.glob(makepath(programfiles,'QGIS*','Uninstall-QGIS.exe')):
            run_notfatal('"%s" /S'%uninstall)
            time.sleep(30)

        if isdir(makepath(programfiles,'QGIS 2.16.2')):
            remove_tree(makepath(programfiles,'QGIS 2.16.2'))

        #Fix bug with QGIS thinking it is still installed
        registry_delete(HKEY_LOCAL_MACHINE,makepath('Software','QGIS 2.16.2'),None)

    if iswin64():
        install_exe_if_needed(exe64,'/S',key='QGIS 2.16',min_version='')
    else:
        install_exe_if_needed(exe,'/S',key='QGIS Wien',min_version='')

Ruhige IT
adaurg
Nachrichten: 3
Anmeldung: 8. Dezember 2016 - 10:39 Uhr

13. Dezember 2016 - 22:40 Uhr

Ich danke Ihnen für Ihre Hilfe

Das hat mich gerettet...
Ich muss meine Python-Kenntnisse noch verbessern... aber ich habe es so gemacht:

Code: Alle auswählen

# -*- coding: utf-8 -*-
from setuphelpers import *
import glob,time
import regutil

uninstallkey = ['QGIS 2.14']

def install():
    print('installation de Qgis 2.14.9')
    if isrunning('qgis-bin.exe'):
        print("Qgis est ouvert !!! GRRRR...")
        quit()

    print('desinstallation de Qgis 2.14.3')
    with disable_file_system_redirection():
        #Remove Old Versions in Default Directory
        for uninstall in glob.glob(makepath(programfiles,'QGIS*','Uninstall-QGIS.exe')):
            run_notfatal('"%s" /S'%uninstall)
            time.sleep(30)

        #Fix bug with QGIS thinking it is still installed
        registry_deletekey(HKEY_LOCAL_MACHINE,'software\microsoft\windows\currentversion\uninstall','QGIS Essen')
        registry_deletekey(HKEY_LOCAL_MACHINE,'software','QGIS Essen')


    run(r'"QGIS-OSGeo4W-2.14.9-2-Setup-x86_64.exe" /S')
    remove_desktop_shortcut(r'GRASS GIS 7.0.4')
    remove_desktop_shortcut(r'GRASS GIS 7.0.5')
    remove_desktop_shortcut(r'OSGeo4W Shell')
    remove_tree(r'C:\Users\Public\Desktop\QGIS Essen')
    remove_tree(r'C:\Users\Public\Desktop\QGIS 2.14')
    if isdir(makepath(programfiles,'QGIS Essen')):
            remove_tree(makepath(programfiles,'QGIS Essen'))
Und es funktioniert. :P

Planen Sie, einen speziellen Bereich zum Teilen von setup.py-Dateien zu erstellen?

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

14. Dezember 2016 - 22:31 Uhr

Achtung!

Code: Alle auswählen

def install():
    print('installation de Qgis 2.14.9')
    if isrunning('qgis-bin.exe'):
        print("Qgis est ouvert !!! GRRRR...")
        quit()
  
Sie beenden die Sitzung hier, falls qgis-bin.exe geöffnet ist

Es wird daher keinen zweiten Versuch geben

Sie müssten es ersetzen durch

Code: Alle auswählen

def install():
    print('installation de Qgis 2.14.9')
    if isrunning('qgis-bin.exe'):
        error("Qgis est ouvert !!! GRRRR...")
  
Benutzeravatar
htouvet
WAPT-Experte
Nachrichten: 436
Anmeldung: 16. März 2015 - 10:48 Uhr
Kontakt:

15. Dezember 2016 - 8:13 Uhr

Geben Sie außerdem an, dass Backslashes nicht interpretiert werden sollen, indem Sie ein 'r' (Rohzeichenfolge) vor den Pfad des Registrierungsschlüssels setzen.

'r'software\microsoft\windows\currentversion\uninstall'
Ruhige IT
Gesperrt